How to Add Modpacks to Minecraft: The Eight Numbers to Keep Track Of
To add a modpack to Minecraft Java Edition, install it as its own launcher instance instead of copying files into your existing mods folder: open the CurseForge App, the Modrinth App or Prism Launcher, use the launcher's install or import function on the pack's `.zip` or `.mrpack` file, and let it read the pack's manifest and build the instance. The manifest names the exact Minecraft version and the exact mod loader version the pack was built against, and the launcher installs both alongside the mods. A modpack is a versioned instance: a Minecraft version, a loader version, a list of specific mod files and a configuration set. That is why the archive does nothing useful sitting in `%APPDATA%\.minecraft\mods`.
The eight figures to write down
Keep a scratch list open while you work. A failed install almost always has one of these unknown or wrong.
- The Minecraft version the pack requires. Read it from the pack's file page on Modrinth or CurseForge, or from the `minecraft` field in the manifest.
- The mod loader and its version. Forge, Fabric, NeoForge or Quilt, plus a version string, from the same two places.
- The modpack's own release version: the exact file you downloaded, not the pack's name.
- The Java runtime version, from the pack author's documentation or your launcher's log, checked against the Minecraft Wiki's Java requirement table.
- Your allocated memory, the `-Xmx` value. Start from the pack page's recommendation.
- Your available system memory: total RAM minus what your operating system and browser already hold.
- The number of files listed in the manifest, compared against what the launcher actually downloaded.
- The server's supported pack release, if you play multiplayer. Get it from the operator in writing.
Which Minecraft do you actually have?
Loader-based modpacks exist only in Java Edition. If you bought the game on a phone, a tablet, a console or through the Microsoft Store as Minecraft for Windows, you have Bedrock Edition, which has no jar loader. Bedrock uses add-ons instead: `.mcpack` for a single behaviour or resource pack, `.mcaddon` for several bundled, imported through Settings → Storage → Import and then switched on per world under Edit World → Behavior Packs. Importing is not activating, which is where most Bedrock installs stall.
The Modrinth Help Center's format specification settles it when a store page does not. Its `dependencies` object accepts exactly five keys: `minecraft`, `forge`, `neoforge`, `fabric-loader` and `quilt-loader`, and all four loaders there are Java-only. On the wall I set, two televisions that look identical from four feet away will refuse the same demo file, because the panel is not the thing reading it. Editions are the same.
Read the pack's manifest before you download it
Every modpack ships a machine-readable spec sheet, and opening it hands you four of your eight figures.
A CurseForge pack is a `.zip` with `manifest.json` at the root, beside an `overrides` folder holding config, scripts, saves and anything else meant to land in the instance. CurseForge's submission documentation gives the shape: a `minecraft` object containing `version` and a `modLoaders` array whose entries read like `{"id": "forge-47.2.0", "primary": true}`, plus `manifestType: "minecraftModpack"`, `manifestVersion: 1`, and a `files` array of `projectID` / `fileID` / `required` triples. The loader id is `<loader>-<version>`, so a Fabric pack must read `fabric-0.15.3` and not the Minecraft-prefixed string, or CurseForge's file processor rejects it.
Modrinth's `.mrpack` is the same idea under different names. Metadata lives at `modrinth.index.json`, UTF-8, at the archive root; the Modrinth Help Center's format article lists `formatVersion` (currently 1), `game` (only `minecraft`), `versionId`, `name`, `summary`, `files` and `dependencies`. Each file entry carries a `path`, one or more `downloads` URLs, a `fileSize` in bytes, and a `hashes` object holding both a `sha1` and a `sha512`. Those checksums are how a launcher tells a half-downloaded jar from a real mod conflict, and why you take packs from the official project page rather than a reupload.
Count the entries in `files` for your manifest figure. It includes shader and resource packs the author bundled, so read it as a file count rather than a strict mod count.
Why a modpack in the mods folder does nothing
This wrong answer survives because it is almost right: a single mod really does go in a mods folder. Java Edition's game directory sits at `%APPDATA%\.minecraft` on Windows, `~/Library/Application Support/minecraft` on macOS and `~/.minecraft` on Linux, and the Minecraft Wiki's directory listing contains no `mods` folder, because the game never creates one. A loader does, or you do. A modpack archive carries a manifest, a loader version, a config set and a dependency list, and a game handed a ZIP reads none of it.
| | Individual mod | Modpack (`.zip` / `.mrpack`) | Bedrock add-on | |---|---|---|---| | What you download | One `.jar` | An archive with a manifest at its root | `.mcpack` or `.mcaddon` | | Where it goes | `mods/` in the instance | Nowhere by hand; a launcher builds an instance | Imported in-game | | Who sets the Minecraft version | You, when you choose the instance | The manifest's `minecraft` field | The game | | Who sets the loader | You, before adding the jar | The manifest's `modLoaders` or `dependencies` | No loader exists | | Config files | None | Shipped inside `overrides` | Inside the pack | | Mismatch symptom | One mod missing, or a crash on start | Nothing loads, or the game starts vanilla | Pack shown as incompatible |
Installing the pack as a managed instance
In the CurseForge App, the browse route is short: open the Minecraft tab, find the pack, click Install. For a file somebody sent you, open the Minecraft tab, click Create Custom Profile in the top right, click the import button, then Choose .zip file. CurseForge's support article is specific: zip files only, modpacks and custom profiles rather than individual mods, worlds or data packs, and the archive must match CurseForge's export structure or you get an "Invalid file" error. Shared profile codes expire after seven days.
In the Modrinth App, the Help Center says to click Browse on the left side of the launcher and click Install on the pack you want. For a local `.mrpack`, add an instance from a file and let the app read the index. Modrinth's help-centre layout changes, so trust the label on your screen over any guide, this one included.
Wait for the download to finish before pressing Play. A launcher still resolving forty file entries will start a half-built instance and hand you a crash that looks like a conflict.
Installing a modpack without the CurseForge App
Prism Launcher's wiki documents an Import from zip tab under new instances, accepting both `.zip` and `.mrpack` from a website URL or your filesystem. It reads a CurseForge `manifest.json` or a Modrinth index and sets the loader and Minecraft version from whichever it finds.
One obstacle is worth knowing before you hit it. Since CurseForge moved to its official API, project authors can disable third-party distribution on their files, and Prism Launcher's issue tracker records the result: files a launcher cannot fetch automatically. It gives you a manual download link per blocked file, saved into that instance's own mods folder. That is the one legitimate case for placing a jar by hand, and it covers named files, never the whole pack.
If an archive opens onto `mods` and `config` with no `manifest.json`, it is not a manifest pack but somebody's instance folder zipped up. Create an instance on the matching Minecraft version and loader, open its game folder, and copy the contents in.
Memory: half your RAM is not a rule
The half-of-your-RAM line is a shrug, not a rule. The official launcher ships `-Xmx2G` in its JVM arguments, editable under Installations → More Options: two gigabytes, not enough for most packs. The CurseForge App puts a global Allocated Memory slider under Settings → Minecraft → Java Settings, with a per-pack override under Profile Options, and a pack set to "Recommended by Author" ignores your global figure entirely. Prism Launcher exposes minimum and maximum memory in megabytes under its Java settings, and its own wiki puts the point in capitals: "MORE RAM ALLOCATED DOESN'T MEAN BETTER PERFORMANCE! In fact, in most use cases (except you're playing big modpacks) 4GB of ram allocated should be more than enough."
Start from the author's published number, then subtract reality. On a 16 GB machine the operating system and a browser full of tabs are already spoken for, so the figure you can hand the JVM comes from available memory, not installed memory. Two mechanical facts: `-Xmx` is case-sensitive and a typo silently falls back to the default, and 32-bit Java is hard-capped near 2 GB whatever you type.
Defaults ship wrong on purpose. A television arrives in store mode with the backlight at maximum because a showroom is lit at a level no living room reaches, and the picture that sold somebody the set is the picture they complain about at home. The 2 GB default is that: safe on the widest range of machines, fitted to nobody's pack. My own set is five years old, in a dim room, motion smoothing still on, and I have not walked over to change it.
Garbage collection flags are what people reach for next, and I am not going to give you any: meters and colour calibration were a separate trade from mine on that wall.
Matching a multiplayer server
A compatible client needs the server's supported pack release, Minecraft version and loader, sometimes its configuration too. Matching the pack name is not matching the pack: a newer release of the same pack can still be refused, because a version bump changes mod versions and registry contents. Ask for the exact release string.
That shop wall worked because one splitter fed forty sets the same loop, so nothing on it was configured individually and nothing drifted. A modded server is the splitter. There is music going low behind me now, the same handful of songs, for the same reason.
On Aternos, you set a supported modpack in your server's software section and it installs every included mod and configures the server. Their help centre is blunt about the trade: one modpack at a time, no changing or adding individual mods or configurations, no uploading your own pack. If yours is missing, enter its URL and press Suggest for manual review. Aternos also notes that Modrinth and ATLauncher packs always include server files, while CurseForge and Technic packs need checking.
When it will not launch, find the number in the log
Java mismatches announce themselves precisely. "Unsupported class file major version 65" means Java 17 or older is being handed code compiled for Java 21. The Minecraft Wiki's requirement table is the reference: 1.12 to 1.16.5 needs Java 8 or newer, 1.17 to 1.17.1 needs Java 16, 1.18 to 1.20.4 needs Java 17, 1.20.5 to 1.21.11 needs Java 21, and 26.1 onward needs Java 25. The official launcher bundles its own runtime, the Microsoft build of OpenJDK 25 as of 26.1; third-party launchers do not always, which is how one pack starts under one launcher and refuses under another.
`java.lang.OutOfMemoryError: Java heap space` is a memory figure, not a broken mod. A crash naming a specific mod is a conflict; a crash carrying a checksum or download failure is a file that never arrived, which is what `sha1` and `sha512` exist to separate. Count what the launcher downloaded against the manifest before pulling mods out: the fix for a short download is a reinstall, and the fix for a conflict is not.
Questions people ask
How can I import Minecraft modpacks?
Use a launcher that reads pack manifests. In the CurseForge App, open the Minecraft tab, click Create Custom Profile, then the import button, then Choose .zip file. In the Modrinth App or Prism Launcher, add an instance from a file and select the .mrpack. The launcher installs the loader and every listed mod automatically.
Where do I put my modpack in Minecraft?
Nowhere by hand. A modpack archive does not belong in .minecraft/mods, which is only for individual jar files. Point a launcher at the archive and let it build a separate instance with its own mods, config and loader. Only a loose collection of jars with no manifest goes into a mods folder.
How can I install modpacks without CurseForge?
Prism Launcher imports both .zip and .mrpack files from your filesystem or a URL, through its Import from zip tab. The Modrinth App installs .mrpack packs directly. Some CurseForge mods have third-party downloads disabled by their authors, so an outside launcher may hand you manual download links for those specific files.
How do I add a modpack into CurseForge?
Open the CurseForge App's Minecraft tab and either browse the modpack list and click Install, or click Create Custom Profile and use the import button. Import accepts zip files only, and only ones matching CurseForge's export structure; anything else returns an Invalid file error. Shared profile codes expire after seven days.
How can I add modpacks to Aternos?
Pick the pack in your server's software section; Aternos installs every included mod and configures the server for you. You cannot upload a custom pack, add individual mods to it, or edit its configuration. If your pack is missing, submit its URL through the Suggest button and wait for manual review.
Can I use this Java modpack on Minecraft mobile?
No. Minecraft on phones and tablets is Bedrock Edition, which has no Forge, Fabric, NeoForge or Quilt loader and cannot read jar files. Bedrock uses add-ons instead, distributed as .mcpack or .mcaddon and activated per world. There is no conversion; a Java pack has no Bedrock equivalent unless someone rebuilt it.