DEV Community

zhuhongliang
zhuhongliang

Posted on

I Built a Browser-Based .mrpack to ZIP Converter for Minecraft Modpacks

If you download Minecraft modpacks from Modrinth, you have probably seen a file ending in .mrpack. It is a useful distribution format, but it can be confusing when a launcher, server panel, or manual installation workflow expects a normal ZIP folder instead.

I built MRPack Converter to make that gap easier to handle. It is a free browser-based tool that can inspect a Modrinth .mrpack file and convert its contents into a ZIP archive.

What is inside an .mrpack file?

An .mrpack file is already a ZIP-compatible archive, but simply renaming it to .zip does not produce a ready-to-use modpack.

The archive usually contains:

  • modrinth.index.json, which describes the pack and lists remote files
  • optional overrides/ and server-overrides/ folders
  • metadata such as the Minecraft version and mod loader
  • download URLs and hashes for referenced mods

Most mod JAR files are not stored directly in the archive. A compatible launcher reads the index, downloads those files, verifies them, and applies the overrides. That is why extracting or renaming the file often leaves users with an incomplete folder.

What the tool does

The converter accepts a local .mrpack upload, a Modrinth project ID, or a direct URL. It then:

  1. Opens and validates the archive.
  2. Reads modrinth.index.json.
  3. Shows the pack name, Minecraft version, loader, and file counts.
  4. Copies allowed override files.
  5. Downloads the referenced mod files when requested.
  6. Creates a ZIP and records any failed downloads in a report.

There is also an inspector mode for users who only want to understand what is inside a pack without building a ZIP.

Why I kept the main processing in the browser

A converter like this could upload every pack to a server, process it, and return a download. I preferred a mostly client-side design.

The uploaded .mrpack file is read locally in the browser. That keeps the workflow quick and avoids storing user archives on my server. The page still needs network access when it fetches the remote files referenced by the Modrinth index, but the original uploaded archive does not need to be sent to an application backend.

This also made the site inexpensive to host as a static application.

The less obvious engineering problems

The ZIP conversion itself was not the hardest part. The interesting work was around safety and failure handling.

Remote download restrictions

A pack index can contain URLs, so the converter should not blindly fetch every address. The tool validates protocols and limits downloads to supported hosts. This reduces the chance of the page being used to probe arbitrary endpoints or fetch unrelated content.

Archive path validation

Archive entries and override paths need checks for absolute paths, drive prefixes, and parent-directory traversal such as ../. Even though the output is created in the browser, unsafe paths should never be copied into a generated archive.

Resource limits

A malicious or broken pack could declare thousands of files, extremely long paths, or an unreasonable amount of data. The converter applies limits before processing so that one file cannot easily freeze the tab.

Partial failure

Remote hosts can reject browser requests because of CORS, rate limits, expired URLs, or temporary network problems. Instead of pretending that every conversion is perfect, the result separates success from completeness. Users can download a failure report and see exactly which files were missing.

When should you convert to ZIP?

Conversion is useful when:

  • a server panel asks for a ZIP upload
  • you need to inspect or manually edit pack files
  • a launcher does not support the Modrinth format
  • you want a portable folder for troubleshooting

If you use the Modrinth App or Prism Launcher, direct import is usually better. Those launchers already understand .mrpack, can download dependencies, and can preserve the intended installation structure.

The converter is a compatibility and troubleshooting tool, not a replacement for a full launcher.

Current limitations

Browser security rules mean that some remote files may fail to download even when the URL works in a normal tab. Licensed or restricted files may also require users to obtain them from their official source.

A generated ZIP should therefore be treated as a conversion result that may need review. The tool clearly reports missing files rather than hiding them.

Try it

You can test the converter and inspector at mrpackconverter.com.

I would especially appreciate feedback from people who manage Minecraft servers or regularly move packs between Modrinth, Prism Launcher, and hosting panels. Which workflow causes the most friction for you?

Top comments (0)