How to install mods for Minecraft Java Edition
Launch Forge, Fabric, or NeoForge via the panel, match game clients, allocate memory, and use modpack Server Files shortcuts.
Mods change the game itself: new blocks, mobs, dimensions, machines, and mechanics. Unlike plugins, mods require every player to install the same mod loader and mods on their client. This guide covers the mechanics of installing individual mods — choosing between Forge, NeoForge and Fabric, working out which mods belong on the server at all, and getting the versions to line up.
If you want a whole curated pack rather than mods you picked yourself, that is a different job with different steps: see How to Install a Minecraft Modpack Server.
Mods need a Forge, NeoForge or Fabric server
Mods only work on Forge/NeoForge/Fabric server types. For Paper/Spigot servers, you want Plugins instead. Set your server type in the Startup tab as covered in Getting started with your Minecraft server.
Mods vs Plugins
| Plugins | Mods | |
|---|---|---|
| Server type | Paper, Spigot, Purpur | Forge, NeoForge, Fabric |
| Client install needed | No | Yes (same loader + mods) |
| Changes base game | No (server-side behavior only) | Yes (new content) |
| Folder | plugins/ |
mods/ |
If you want new content (machines, dimensions, creatures), you need mods. If you want server management and quality-of-life without client installs, you want plugins. The two do not mix: a Forge server cannot load a Paper plugin, and Paper cannot load a mod. There is a third thing that is neither, and it gets mistaken for both constantly: datapacks are vanilla Minecraft, server-side only, and need no loader at all — see How to Install Datapacks and Resource Packs on a Minecraft Server.
Which Loader: Forge, NeoForge or Fabric?
You do not really choose a loader. The mods you want choose it for you — a Fabric mod will not load on Forge, and a Forge mod will not load on Fabric. Pick the mods first, check what they are built for, then set the server type to match.
That said, the three behave differently, and it helps to know what you are looking at.
| Loader | What it is | Current version |
|---|---|---|
| Forge | The original loader, and still the home of most long-running large mods | 65.1.0 recommended for 26.2 (65.1.2 latest) |
| NeoForge | A fork of Forge that now carries much of the recent Forge-style ecosystem | 26.2.0.64 for 26.2 |
| Fabric | A lightweight, fast-moving loader, strong on performance and utility mods | Loader 0.19.3 |
Forge is not dead, whatever you have read
NeoForge's arrival produced a lot of "Forge is finished" commentary that was never quite true. Forge is still publishing builds for the current Minecraft release —
65.1.2for 26.2 as of August 2026 — and plenty of large mods still target it. The question is never "which loader is better", it is "which loader is the mod I want built for".
Reading the version numbers
Each project numbers itself differently, and knowing the pattern saves a lot of guessing:
- Forge restarts its numbering with every Minecraft version and publishes a latest and a recommended build for each.
43.5.0is Forge for 1.19.2;65.1.0is Forge for 26.2. The number alone tells you nothing about how new it is, so always check which Minecraft version it is listed under. - NeoForge builds the Minecraft version into its own. Its documentation explains that the leading components identify the Minecraft version and the last is the NeoForge release — so
26.2.0.64is the 65th NeoForge build for Minecraft 26.2, and21.11.xwas for 1.21.11. You can read the target straight off the front. - Fabric versions its loader independently of Minecraft. Loader
0.19.3works across a wide range of game versions, so a Fabric mod pins the Minecraft version and the loader version separately.
Java matters too
The Java runtime is fixed by the Minecraft version, not by the loader or the mods:
| Minecraft version | Java version required |
|---|---|
| 26.1 and newer | Java 25 |
| 1.20.5 – 1.21.11 | Java 21 |
| 1.18 – 1.20.4 | Java 17 |
| 1.17 – 1.17.1 | Java 16 |
| 1.16.5 and older | Java 8 |
Those are Mojang's own figures, and the official wiki puts it plainly: "Minecraft ≥ 26.1 and above requires Java 25." NeoForge asks for the same Java 25 JDK. A server running the wrong Java exits immediately with a class-version error rather than a helpful message, so it is worth ruling out first.
Server-Side, Client-Side, or Both
This is the distinction that wastes the most time, because getting it wrong produces no error at all — just a mod that quietly does nothing.
Every mod is built for one of three situations:
- Client-only. Shaders, minimaps, UI improvements, FPS boosters. They change how you see the game. Put one in the server's
mods/folder and the server loads it, finds nothing to do, and carries on. It has no effect whatsoever, and on a strict loader it may refuse to load at all. - Server-side. Performance mods, world generation, anti-grief, server utilities. These need to be on the server. Some also want to be on the client; many do not.
- Both. Anything that adds content — blocks, items, mobs, dimensions, machines. Content mods must be installed identically on the server and on every client, or players cannot join.
Modrinth publishes a client/server compatibility marker on every project page, which makes this quick to check. Some real examples:
| Mod | Client | Server | What that means |
|---|---|---|---|
| Sodium, Iris, Mod Menu | Required | Unsupported | Client-only. Do not put these on the server |
| Create | Optional | Required | A content mod — server needs it, and so does every player |
| Lithium, FerriteCore, spark, Chunky | Optional | Optional | Happy on the server on their own; players need not install them |
"I installed the mod and nothing happened"
Nine times out of ten this is a client-only mod sitting in the server's
mods/folder. Shaders and minimaps cannot be installed server-side for everybody — each player installs those themselves.
Installing a Mod
The mechanics are the same for all three loaders. What changes is the server type you set and where the mods come from.
Set the server type and version. In the Startup tab, choose
forge,neoforgeorfabric, then set the Minecraft version and the loader version. Save and restart so the loader installs itself before you add anything.Download the mod jar from Modrinth or CurseForge. Take care to select the build for your exact Minecraft version and your loader — most projects publish several, and the download page defaults are not always the one you want.
Check its dependencies on the project page before you upload anything (see below).
Upload the
.jarintomods/using the Files tab, or over SFTP for a batch. The panel's uploader takes files, not folders, so for a large set zip them locally, upload the single zip and use Unarchive. Full walkthrough in How to upload files via SFTP.Restart the server — mods never hot-load — and read the console. A modded server logs every mod it loads, and it names any that fail. Making sense of that output — where the log lives, how far down a stack trace the useful line is, and how to find a bad mod by bisection when the log does not name one — is covered in Reading Minecraft Server Logs and Crash Reports.
Mods go in
mods/, one jar per modDo not unzip a mod jar, and do not nest folders inside
mods/. The loader scans that one directory for.jarfiles and nothing else. A mod that ships as a zip of several jars usually wants all of them loose inmods/.
Fabric: the Fabric API dependency
Fabric ships a deliberately minimal loader, and almost everything built on it depends on a separate library called Fabric API. Fabric's own documentation states that "the majority of mods require Fabric API as well".
It is a normal mod jar: download it from Modrinth or CurseForge for your exact Minecraft version, drop it into mods/ alongside the others, and restart. Get the version wrong and the mods that depend on it fail at load with a dependency error naming it.
There is no Forge or NeoForge equivalent — those loaders bundle their own API — so this step applies to Fabric only.
Dependencies and Dependency Chains
Most mods depend on something, and dependencies have dependencies of their own. A mod page lists its required dependencies and usually its optional ones; the required list is not a suggestion.
- Install every required dependency for the same Minecraft version and loader as the mod itself.
- Then check each dependency's own page, because it may have requirements too. Two or three links deep is common on large content mods.
- If a mod fails to load, the console prints a
Missing or unsupported mandatory dependenciesblock that names exactly what it wanted and which version range. That message is the answer, not a symptom — read it before changing anything else. - Library mods look pointless on their own and are not. Mods whose names read as an author's toolkit are almost always dependencies of something else you installed.
Version ranges are strict
A dependency error can mean the library is missing or that the version present is outside the range the mod accepts. "It is installed" and "it is the right build" are different claims, and the console distinguishes between them.
Version Matching
Almost every modded-server problem is a version mismatch somewhere in this chain. All five have to agree:
- The Minecraft version
- The loader (Forge, NeoForge or Fabric) and its build
- The Java runtime the Minecraft version requires
- Every mod jar, built for that Minecraft version and that loader
- Every player's client, matching all of the above
Bumping any one of them means checking the rest. In particular, moving a server to a newer Minecraft version means every mod needs a rebuild for it, and mods are updated by their own authors at their own pace — a single unported mod is enough to hold a server on an older version, which is normal and not a problem to be fixed.
Back up before changing mods or versions
Removing a mod removes its content from the world: its blocks vanish from existing chunks, its items disappear from inventories, and its dimensions become unreachable. That is expected behaviour, and it is permanent. Snapshot from the Backups tab first — see How to create a backup.
Client Requirements
For any modded server, players need:
- The same mod loader installed via the Minecraft launcher (Forge/NeoForge/Fabric)
- The same content mods in their local
mods/folder - The same Minecraft version
- Fabric API too, if the server is running Fabric mods that need it
Client-only mods are the exception — players can add or skip shaders and minimaps freely, since the server neither knows nor cares.
Document your exact mod list and loader version and link it in your server description. Mismatched mods are the number one reason players cannot connect to a modded server. Past a handful of mods, publishing a modpack is far more reliable than asking people to assemble a list by hand.
Modpacks: the Easy Path
A modpack is a mod list someone else has already built, tested and versioned, which players install with one click through a launcher. For anything beyond a few mods it is the better route, and installing one on a server is a different process — a separate server download, its own version matching, and its own memory story.
That is covered in full in How to Install a Minecraft Modpack Server, including CurseForge, Modrinth and FTB, and how to update a pack without destroying the world.
Memory for Modded Servers
Modded servers are far more memory-hungry than vanilla or plugin servers, so lean toward the larger Minecraft server plans. Mod count drives this more than player count does: every mod registers blocks, items, recipes and tags at load, and that stays in the heap for the life of the server.
Your server sizes its own heap: it launches with -XX:MaxRAMPercentage=95.0, which caps the heap at 95% of the RAM your plan gives it. There is no Xmx field and no memory field in the Startup tab, so the plan is the lever. See Minecraft Server RAM and JVM Flags for how that number is arrived at, and Managing your Minecraft server for tuning a heavy modded server. If the server crashes with an out-of-memory error, the fix is a larger plan or a lighter mod list.
Common Issues
- The mod is installed but does nothing: It is a client-side mod. Shaders, minimaps and UI mods have no server-side effect; each player installs those themselves.
- Server exits immediately with a class-version error: Wrong Java runtime for the Minecraft version. 26.x needs Java 25; 1.20.4 and older need Java 17 or below.
- Players cannot connect to a modded server: Mod mismatch. Players need the exact same loader version and content-mod list. Share a pack link rather than a loose mod list.
- Server crashes on boot with a mod error: The console names the offending mod and usually the reason (missing dependency, wrong MC version). Remove or update that mod.
Missing or unsupported mandatory dependencies: Install what the message names, for the same Minecraft version and loader. Check that dependency's own requirements too.- A Fabric mod fails at load complaining about
fabric: Fabric API is missing, or it is the wrong version for your Minecraft release. - Out of memory: The heap is already 95% of your plan's RAM and there is no
Xmxfield to raise. Cut the mod list, lower view and simulation distance, or move to a larger plan. Modded servers are memory-hungry. - Mod works alone but conflicts alongside another: Two mods touch the same game system. The crash log names the conflicting pair; run one or the other.
What to Read Next
- How to Install a Minecraft Modpack Server for CurseForge, Modrinth and FTB packs
- Performance and Backups for tuning a heavy modded server and protecting the world
- Getting started with your Minecraft server to revisit server type selection and first boot
- Minecraft Server RAM and JVM Flags for sizing the heap a modded server needs
- Plugins if you decide you want server-side management instead of content mods
- How to upload files via SFTP for moving a large mod set onto the server
- Minecraft Server Commands for
/datapack,/functionand the technical set
Made with 💜 by GameServerKings

Need a Minecraft server?
Deploy an instantly-provisioned Minecraft server on high-clock hardware — DDoS protected, no contracts, cancel anytime.
From $4.80 /month