CurseForge to Modrinth: converting modpacks both ways

CurseForge and Modrinth use incompatible modpack formats. Here's what converts cleanly in the browser, what needs a desktop tool, and why.

Updated 2026-10-12 6 min read

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.

  1. Grab a pre-built binary from the project's Releases page (Windows/Linux), or build it from source with the .NET SDK.
  2. Create a free CurseForge API key in the CurseForge developer console — the tool asks for it once and stores it.
  3. Run cursetomod MyModpack.zip (optionally with an output path) — it writes a finished .mrpack.
  4. Import the .mrpack into Modrinth App, Prism Launcher or HMCL — the install guide has the step-by-step recipes.
Exact commands and options live in the project's README — check it for the current usage, flags change between releases.

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?
That's CurseForge's platform policy, not a technical necessity — the files are free, but the API that resolves project/file IDs is gated. It's exactly the friction that made the Modrinth format's open CDN design popular.
Will CurseForge-exclusive mods still work after converting?
Yes. In our browser conversion they're copied into the pack under 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?
Converting the pack's index is fine; the mods keep their own licenses either way. Respect each mod's license and the pack author's distribution wishes — when in doubt, link to the original pack instead of redistributing it.
What about a ZIP exported from the CurseForge app?
Those exports contain 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?
cursetomod takes a path argument, so a short shell loop converts a whole folder of packs — handy when migrating a server network or an old library. The browser converter is strictly one pack at a time.

Sources