Alternative Managers
There are a few different popular ROM managers that have similar features:
Feature | igir | RomVault | clrmamepro | RomCenter |
---|---|---|---|---|
App: in active development | ✅ | ✅ | ✅ | ❓ |
App: OS compatibility | ✅ anything Node.js supports | ⚠️ Windows, macOS & Linux via Mono | ⚠️ Windows, macOS & Linux via Wine | ❌ Windows only |
App: GUI or CLI | CLI only by design | Primarily GUI, with a separate CLI | GUI only | GUI only |
App: required setup steps | ✅ no setup required | ⚠️ if specifying DAT & ROM dirs | ❌ requires "profile" setup per DAT | ❌ requires per-DAT DB setup |
App: open source | ✅ GPL v3 | ❌ | ❌ | ❌ |
DATs: supported formats | Logiqx XML, MAME ListXML, MAME Software List, CMPro, HTGD SMDB (DATs docs) | Logiqx XML, MAME ListXML, CMPro, RomCenter, HTGD SMDB, Total DOS | Logiqx XML, MAME ListXML, MAME Software List, CMPro | Logiqx XML, CMPro, RomCenter |
DATs: process multiple at once | ✅ | ✅ | ⚠️ via the batcher | ❌ |
DATs: infer parent/clone info | ✅ | ❌ | ❌ | ❌ |
DATs: built-in download manager | ❌ | ⚠️ via DatVault | ❌ | ❌ |
DATs: supports URLs to DATs | ✅ | ❌ | ❌ | ❌ |
DATs: create from files (dir2dat) | ✅ dir2dat docs | ❓ | ✅ | ❌ |
DATs: fixdat creation | ✅ fixdat docs | ✅ | ✅ | ❌ |
DATs: combine multiple | ✅ | ✅ | ❌ | ❌ |
ROM Scanning: parallel scanning | ✅ | ❌ | ❓ | ❓ |
ROM Scanning: scanning exclusions | ✅ | ❌ | ❓ | ❓ |
ROM Scanning: quick scanning | ✅ matching docs | ✅ (scanning level 1) | ⚠️ by default | ❓ |
ROM Scanning: scan/checksum caching | ✅ | ✅ | ❌ | ✅ |
ROMs: checksum matching strategies | ✅ CRC32+size, MD5, SHA1, SHA256 | ⚠️ CRC32+size, MD5, SHA1 | ⚠️ CRC32+size, MD5, SHA1 | ❓ |
ROMs: header detection | ✅ | ✅ | ⚠️ via supplemental XMLs | ⚠️ via plugins |
ROMs: header removal | ✅ automatic and forced | ⚠️ if configured | ❌ | ❌ |
ROMs: trimming detection & matching | ✅ trimming docs | ❌ | ❌ | ❌ |
ROMs: automatic extension correction | ✅ output writing docs | ❌ | ❌ | ❌ |
ROMs: patching support | ✅ many formats (patching docs) | ❌ | ❌ | ❌ |
Arcade: supported merge types | ✅ full non-merged, non-merged, split, merged (arcade docs) | ⚠️ full non-merged, split, merged | ✅ full non-merged, non-merged, split, merged | ⚠️ full non-merged, split, merged |
Arcade: CHD disk inclusion | ✅ by default, can be turned off (arcade docs) | ✅ by default, can be turned off | ❓ | ❓ |
Arcade: sample inclusion | ❌ | ❌ | ✅ | ❓ |
Archives: common formats support | ✅ .zip (incl. zstd), .7z (via 7za ), .gz , .rar , .tar , and more (docs) |
⚠️ .zip (incl. zstd), .7z (natively) |
⚠️ .zip , .7z (via 7z ), .rar (via rar ) |
⚠️ .zip , .7z |
Archives: .chd support |
⚠️ via chdman 1 (bundled) |
✅ v1-5 natively | ⚠️ via chdman 1 |
⚠️ v1-4 natively |
Archives: .cso & .zso support |
⚠️ via maxcso (bundled) |
❌ | ❌ | ❌ |
Archives: .gcz , .rvz , & .wia support |
⚠️ via dolphin-tool (bundled) |
❌ | ❌ | ❌ |
Archives: .nkit.iso support |
⚠️ matching but no extraction/inflation (GameCube docs) | ❌ | ❌ | ❌ |
Archives: creation formats | ❌ .zip (TorrentZip, RVZSTD) only by design (writing archives docs) |
✅ .zip (TorrentZip, RVZSTD, Total DOS), .7z (LZMA, zstd) |
⚠️ .zip (TorrentZip), .7z , .rar |
⚠️ .zip , .7z |
Archives: contents checksums | ✅ when needed (reading archives docs) | ⚠️ requires "files only" mode or directory | ⚠️ if DAT has forcepacking=unzip | ❓ |
Archives: automatic extension correction | ✅ | ❌ | ❌ | ❌ |
Filtering: region, language, type, etc. | ✅ many options | ❌ | ❌ only 1G1R options | ⚠️ only at DB setup |
Filtering: 1G1R support | ✅ many options | ❌ | ⚠️ region & language only | ⚠️ only at DB setup |
Playlists: creation support | ✅ playlists docs | ❌ | ❌ | ❌ |
Reports: report-only mode | ✅ | ✅ | ✅ | ✅ |
Reports: machine parseable | ✅ CSV | ⚠️ newline-separated "full" & "fix" reports | ⚠️ newline-separated "have" & "miss" lists | ⚠️ newline-separated "have" & "miss" lists |
Output: file link support | ✅ hard links, symlinks, and reflinks | ❌ | ❌ | ❌ |
Output: separate input & output dirs | ✅ | ⚠️ yes but files are always moved | ❌ | ❌ |
Output: subdirectory customization | ✅ many options | ⚠️ depends on DAT organization | ❌ | ❌ |
Output: create single archive for DAT | ✅ | ✅ | ❌ | ❌ |
1 may require you to install SDL2 manually, see the chdman-js README.
Note
Just like Igir, other ROM managers that are in active development are likely to release new features often. The above table is not guaranteed to be perfectly up-to-date, it is just a best effort.
There are some other managers omitted from the table above because they focus more on visual presentation and in-browser/app emulation than they do organization:
Lists of other ROM managers can be found in a number of other wikis, such as:
Migrating from RomVault
The majority of RomVault's functionality also exists in Igir. Here is how users of RomVault can achieve the same default behavior in Igir.
Given a typical RomVault directory structure that looks something like:
ROMVault_V3.7.4/
├── DatRoot
│ ├── No-Intro Love Pack (PC) (2025-05-09)
│ │ ├── No-Intro
│ │ │ ├── Sega - Game Gear (Parent-Clone) (20241203-185356).dat
│ │ │ ├── Sega - Master System - Mark III (Parent-Clone) (20241225-050512).dat
│ │ │ ├── Sega - Mega Drive - Genesis (Parent-Clone) (20250210-102212).dat
│ │ │ └── ...
│ │ └── Non-Redump
│ │ ├── Non-Redump - Nintendo - Nintendo GameCube (Parent-Clone) (20250118-063947).dat
│ │ ├── Non-Redump - Nintendo - Wii (Parent-Clone) (20241203-105832).dat
│ │ ├── Non-Redump - Nintendo - Wii U (Parent-Clone) (20231229-065143).dat
│ │ └── ...
│ └── Redump (2025-05-09)
│ ├── Sony - PlayStation - Datfile (10853) (2025-05-09 17-16-34).dat
│ ├── Sony - PlayStation 2 - Datfile (11623) (2025-05-09 15-01-56).dat
│ ├── Sony - PlayStation - Datfile (10853) (2025-05-09 17-16-34).dat
│ └── ...
├── RomRoot
│ ├── No-Intro Love Pack (PC) (2025-05-09)
│ │ ├── No-Intro
│ │ │ └── ...
│ │ └── Non-Redump
│ │ └── ...
│ └── Redump (2025-05-09)
│ └── ...
├── ROMVault37.exe
└── ToSort
└── ...
here is how you can perform each RomVault action in Igir:
-
Update DATs
The equivalent action in Igir is to scan for DATs using the
--dat <path>
option when performing some command.Igir does not cache parsed DATs like RomVault does, which requires fewer setup actions, but at the expense of needing to parse DAT files during every run.
-
Scan ROMs
The equivalent action in Igir is to scan for ROMs using the
--input <path>
option when performing some command. You will need to provide both the unsorted ("ToSort") and sorted ("RomRoot") directories as inputs.RomVault's default "level 2" scan level can be achieved with the
--input-checksum-min SHA1
option (not recommended). -
Find fixes
This is done when writing ROMs or generating some kind of report (below).
-
Fix ROMs
The equivalent Igir action is to move missing ROMs from an input directory (
--input <path>
option) to the output directory (--output <path>
option) using theigir move
command.RomVault writes TorrentZip archives by default, and it will overwrite files that are not in the TorrentZip structure. This can be achieved with a combination of the
igir zip
command, the--zip-format torrentzip
option (default), and the--overwrite-invalid
option. Igir does not offer a way to create 7zip archives like RomVault does.By default, RomVault writes "incomplete" sets of ROMs. It will write archives when at least one ROM for a game is present, even if not every ROM is found. Igir does not do this by default as incomplete sets are unlikely to be playable. However, you can enable this behavior with the
--allow-incomplete-sets
option.RomVault respects the directory structure of DATs and "mirrors" it in the sorted directory ("RomRoot"). This can be achieved with a combination of the
--dir-dat-mirror
and--dir-dat-name
options.During writing, RomVault will move unmatched files in the sorted directory ("RomRoot") to the unsorted directory ("ToSort"). This can be achieved with a combination of the
igir clean
command and the--clean-backup <path>
option. -
Generate reports
The equivalent Igir action is the
igir report
command.
Tying it all together, the Igir command to achieve the same behavior as RomVault's defaults is:
igir move zip clean ^
--input "ToSort\" ^
--input "RomRoot\" ^
--input-checksum-min SHA1 ^
--dat "DatRoot\" ^
--output "RomRoot\" ^
--dir-dat-mirror ^
--dir-dat-name ^
--overwrite-invalid ^
--clean-backup "ToSort\" ^
--zip-format torrentzip ^
--merge-roms fullnonmerged ^
--allow-incomplete-sets ^
-v
igir move zip clean \
--input "ToSort/" \
--input "RomRoot/" \
--input-checksum-min SHA1 \
--dat "DatRoot/" \
--output "RomRoot/" \
--dir-dat-mirror \
--dir-dat-name \
--overwrite-invalid \
--clean-backup "ToSort/" \
--zip-format torrentzip \
--merge-roms fullnonmerged \
--allow-incomplete-sets \
-v
igir move zip clean \
--input "ToSort/" \
--input "RomRoot/" \
--input-checksum-min SHA1 \
--dat "DatRoot/" \
--output "RomRoot/" \
--dir-dat-mirror \
--dir-dat-name \
--overwrite-invalid \
--clean-backup "ToSort/" \
--zip-format torrentzip \
--merge-roms fullnonmerged \
--allow-incomplete-sets \
-v
Note
Writing and rewriting ROMs with Igir or RomVault is likely to invalidate the file cache of the other tool.
Note
Igir does not currently offer an alternative to RomVault's subscription-based DATVault DAT downloader.