Why the two formats clash
A CurseForge pack is a ZIP with a manifest.json that lists mods by CurseForge project ID and file ID. Resolving those IDs requires the CurseForge API — which is not open: it demands an API key, and some downloads are locked to the CurseForge app.
A Modrinth pack (.mrpack) instead lists every mod with its public CDN URL and SHA-1/SHA-512 hashes in modrinth.index.json. No proprietary API needed — any launcher (or converter) can resolve it. That design difference is why one direction is easy and the other needs more tooling.
The practical consequence: CurseForge → Modrinth means replacing CurseForge IDs with Modrinth hashes, which any tool can attempt with just the files; Modrinth → CurseForge means looking up IDs inside a gated database. Every route in this guide follows from that asymmetry.
CurseForge → Modrinth in the browser (hash matching)
Our ZIP → MRPACK mode can convert a CurseForge pack that you have as a ZIP: the tool hashes every .jar inside the archive and asks the Modrinth API which versions carry the identical file.
- Mods that also exist on Modrinth become clean index references — verified downloads, small file size.
- CurseForge-exclusive mods can't be matched, so they're bundled under
overrides/mods/— the pack still works, it just doesn't get automatic updates for those files.
That covers most packs in practice, because the majority of popular mods publish on both platforms. For packs with many CurseForge exclusives — or for server owners who want perfect index fidelity — use the desktop CLI below.
Manual migration (no tools, small packs)
For a 10-mod pack, tooling can be overkill. Open the pack's manifest.json (or the app's mod tab), note the mod list, search each name on modrinth.com, and add the matching versions to a new instance in the Modrinth App.
The catch is version fidelity: hand-picking mods can silently grab a newer build than the pack pinned. If exact versions matter — heavy modpacks, servers — prefer the hash-matching converter or cursetomod below; both pin the exact files.
Full conversion with the cursetomod CLI
cursetomod is a free, open-source command-line tool that does the complete job: it reads the CurseForge manifest, matches mods on Modrinth by hash, fetches anything CurseForge-only via the CurseForge API (you supply your own free API key), and writes a proper .mrpack ready for the Modrinth App or Prism Launcher.
- Grab a pre-built binary from the project's Releases page (Windows/Linux), or build it from source with the .NET SDK.
- Create a free CurseForge API key in the CurseForge developer console — the tool asks for it once and stores it.
- Run
cursetomod MyModpack.zip(optionally with an output path) — it writes a finished .mrpack. - Import the .mrpack into Modrinth App, Prism Launcher or HMCL — the install guide has the step-by-step recipes.
Modrinth → CurseForge (the awkward direction)
Going the other way is genuinely harder: CurseForge's format needs project/file IDs from their database, and mods that never touched CurseForge simply have no IDs to reference. There is no reliable in-browser conversion for this direction.
If you need a CurseForge-format pack, the practical route is Prism Launcher's built-in export: right-click your instance → Export Instance and pick the CurseForge format. Prism resolves the mod list for you. Packs with Modrinth-exclusive mods will still need those mods handled manually.
Common questions
Why does CurseForge require an API key for free files?
Will CurseForge-exclusive mods still work after converting?
overrides/mods/, and cursetomod downloads them from CurseForge directly. They load like any other mod — you just lose Modrinth's update tracking for them.Is it legal to convert a modpack?
What about a ZIP exported from the CurseForge app?
manifest.json plus the actual .jar files — exactly what our ZIP → MRPACK mode needs. Drop it into the converter and the hash matcher resolves every mod that also exists on Modrinth.Can I convert many packs at once?
Sources
- Modrinth Support — Modrinth modpack format — the .mrpack format — open CDN references and hashes
- Arimodu/curseforge-to-modrinth-cli (cursetomod) — cursetomod — CurseForge to Modrinth CLI (hash matching + API fallback)
- CurseForge Documentation — CurseForge modpack format and its API restrictions