The Best Resource for Minecraft
The Best Resource for Minecraft

An .mrpack contains almost none of its own mods

An .mrpack contains almost none of its own mods

Rename any .mrpack to .zip, open it, and the surprise is how little is there. A pack with two hundred mods is often under 100 KB. The mods are not missing — they were never included.

What is actually inside

EntryRequiredContents
modrinth.index.jsonYesThe manifest: every file, its path, size, hashes and download URLs
overrides/NoReal files copied in as-is — configs, scripts, resource packs
client-overrides/, server-overrides/No Same idea, applied only on that side

The manifest carries a formatVersion, a dependencies map naming the loader and Minecraft version, and a files array. Each file entry holds the destination path, a fileSize, a hashes object with sha1 and sha512, an env block marking it required or optional per side, and one or more downloads URLs.

Why it is built this way

Redistribution. A pack author almost never has permission to re-host every mod in the list, but they can always point at the author’s own file. Shipping URLs instead of jars keeps the pack legal to share and keeps it small enough to send over chat.

The hashes are the other half. A URL can start serving something different tomorrow; a SHA-512 cannot. A launcher that verifies the hash after download is checking that the file it received is byte-for-byte the file the pack author tested against.

The three ways it goes wrong

  • No network, no pack. An .mrpack is an installer, not an archive. Offline it produces a folder of configs and nothing else.
  • A dead URL is fatal, not skippable. If a mod is delisted, the entry still resolves to a 404 and the install stops at a file marked required.
  • Server-only and client-only files. Copy an unpacked client instance onto a server and you bring client-side mods that will refuse to load — the env flags exist precisely to keep those apart.

Turning one into a plain folder

Converting means doing what a launcher does: read the manifest, fetch every file to its declared path, verify each hash, then lay the overrides on top. What comes out is an ordinary mods/ tree you can drop into any launcher or upload to a host that has never heard of Modrinth.

Two details are worth keeping when you do it by hand. Respect the env flags so a server build does not inherit client mods. And check the hash rather than the file size — a truncated download and a redirected HTML error page can both land at a plausible size, and only the hash catches them.

Open the MRPACK to ZIP Converter →