How to Convert ISO/BIN to CHD — Compress PS1, PS2, and Dreamcast Games 2026
I have a collection of PS1, PS2, or Dreamcast games as ISO, BIN/CUE, or GDI files and I want to convert them to CHD format to save disk space and keep each game as a single file instead of a folder of loose tracks. How do I convert them, and will CHD work with DuckStation, PCSX2, and Flycast?
Solutions
solution #891
What CHD is: CHD (Compressed Hunks of Data) is the archive format used by MAME. DuckStation, PCSX2, Flycast, and most modern emulators support it natively. A CHD combines all tracks (data + audio) from a multi-file disc image into a single compressed file, typically 30–50% smaller than the original.
What you need — chdman: chdman is the command-line tool that creates CHD files. Download it as part of the MAME tools package:
- Windows: mamedev.org → MAME Tools (not the full MAME binary) — extract, chdman.exe is inside.
- Linux/Mac: install via package manager (
sudo apt install mame-toolson Debian/Ubuntu;brew install mameon Mac). - Some emulator packages (RetroArch, PCSX2 Qt) bundle chdman in their tools folder — check before downloading separately.
Converting a BIN/CUE or ISO (PS1 / PS2):
- Open a terminal (Command Prompt on Windows) in the folder where chdman is located.
- Run:
chdman createcd -i "game.cue" -o "game.chd"
Replacegame.cuewith your actual .cue file (or .iso for single-track images). - chdman reads all tracks listed in the .cue sheet automatically. Let it finish — large PS2 games can take 1–3 minutes.
- Verify the output:
chdman verify -i "game.chd"— prints OK if the CHD is intact. - Once verified, the original .bin/.iso and .cue files can be deleted.
After converting — load in DuckStation: DuckStation reads .chd files directly. Just point it at the .chd the same way you would a .iso. No extra setup required.
After converting — load in Flycast (Dreamcast): Flycast supports .chd for Dreamcast GDI images (see S2). For PS1, use DuckStation; for PS2, use PCSX2.
solution #892
Dreamcast games come as GDI images (a folder with a .gdi file + multiple .bin tracks). The conversion command is the same, just point chdman at the .gdi file:
chdman createcd -i "game.gdi" -o "game.chd"- chdman reads all the .bin tracks referenced by the .gdi automatically.
- Verify:
chdman verify -i "game.chd"
Load in Flycast: Flycast (the recommended Dreamcast emulator) reads .chd natively. In Flycast, set your ROM directory to the folder containing the .chd files and they'll appear in the game list.
Batch conversion (Windows, multiple games): create a .bat file in the same folder as chdman.exe:
for %f in (*.cue) do chdman createcd -i "%f" -o "%~nf.chd"
Run in Command Prompt. This converts every .cue in the folder to a matching .chd. Run chdman verify on a sample after batch conversion.
PS2 ISO → CHD: PCSX2 supports .chd natively (File → Boot ISO → select .chd). Convert using the same chdman createcd -i "game.iso" -o "game.chd" command. Verify before deleting the source ISO — PS2 ISOs are large and re-dumping is painful.
solution #893
Why convert to CHD instead of keeping ISO/BIN:
- Size: CHD compression typically saves 30–50% on PS1 games (lossless). A 700 MB PS1 .bin often becomes a 350–450 MB .chd. PS2 dual-layer ISOs (8 GB) compress to 4–6 GB.
- Single file: a multi-track PS1 game (e.g. 3 .bin + 1 .cue) becomes one .chd. No more managing track files or broken .cue paths.
- Verification built-in:
chdman verifyconfirms the file is uncorrupted — something a plain .iso can't self-report. - Load speed: CHD reads are slightly faster than uncompressed ISO for emulators that decompress in RAM, because disc seek patterns fit better in cache. In practice the difference is imperceptible on modern SSDs.
When NOT to use CHD:
- If your emulator doesn't support CHD yet (rare — check the emulator's supported formats list). Most major emulators added CHD support by 2024.
- For ROM-hacking or patching: patch the original .iso/.bin first, then convert to CHD after — most patching tools only work with raw disc images.
- Xbox / Xbox 360 games use XGD/XEX format — chdman is for CD/GD-based disc formats only (PS1, PS2, Dreamcast, Saturn, MAME arcade). Xenia loads .iso or .zar; don't try CHD for Xbox.
solution #894
"Input file missing" or chdman exits immediately: check the .cue file is in the same folder as the .bin tracks it references. Open the .cue in Notepad — if the FILE lines reference absolute paths (e.g. C:\old_folder\game.bin) instead of just the filename, chdman can't find them. Edit the .cue to use relative filenames only (game.bin, not the full path).
"Error reading sector" during conversion: your source image has a bad sector — the dump is corrupted. chdman cannot fix corruption; you need a new dump. Verify your source files with Redump or PSXDataCenter checksums before converting.
CHD created but game won't boot in DuckStation/PCSX2:
- Run
chdman verify -i "game.chd"— if it reports errors, the CHD itself is corrupted (most likely a conversion that was interrupted). Reconvert from the original. - Confirm the emulator version supports CHD. DuckStation supports CHD natively since 2021; older PCSX2 builds (pre-2022 PCSX2-wx) do not — use PCSX2 Qt (the current release).
- For PS1 multi-disc games, each disc must be converted to its own .chd. DuckStation's disc-swap feature works with CHD: System → Change Disc → browse to disc 2's .chd.
Conversion is very slow: chdman is single-threaded by default. For large PS2 ISOs (6–8 GB) on an HDD, expect 5–10 minutes. On an SSD it's 1–3 minutes. Adding -c zstd to the command uses Zstandard compression (faster encode, similar ratio): chdman createcd -i "game.iso" -o "game.chd" -c zstd.
Comments (0)
Sign in to_leave_comment