To add mods to a Minecraft server, run a mod loader as the server software, put mod files built for that loader and your game version in the server’s mods folder, and restart. Then every player installs the same loader and the same content mods. The steps below work on any host and on your own PC, with Fabric, Forge or NeoForge.
What you need to add mods to a Minecraft server
- A Minecraft: Java Edition server where you can change the server software and reach the files. A Bedrock server takes add-ons, not Java mods.
- The list of mods you want, from Modrinth or CurseForge.
Step 1: choose a loader and a game version
A mod is built for one loader and one game version. Every mod on your server has to share both.
- Open each mod’s page and note which loaders and game versions it has files for.
- Pick the loader that all of them support.
- Pick the newest game version that all of them support.
| Loader | What it runs | Status as of October 2026 |
|---|---|---|
| Fabric | Fabric mods. Most need Fabric API too | Stable on 26.3, loader 0.19.5 |
| Forge | Forge mods | 26.3 build 66.0.10, not yet marked “recommended” (26.2 has one: 65.1.0) |
| NeoForge | NeoForge mods | 26.3 build 26.3.0.76 |
All three loaders are ready for 26.3, the current release. Your mods may not be. If one mod has no file for the version you want, choose an older version that every mod has, or drop that mod. To compare the loaders, see Forge vs Fabric vs NeoForge.
Step 2: sort server-side mods from client-side mods
Not every mod belongs on the server. On Modrinth, a mod’s page lists its supported environments: client-side, server-side, or client and server. On CurseForge, read the description.
| Kind of mod | Examples | Where it goes |
|---|---|---|
| Content mods | New blocks, items, mobs, dimensions | The server and every player |
| Server-side mods | Admin and maintenance tools | The server only |
| Client-side mods | Minimaps, shaders, client performance mods | Players only |
Step 3: put the loader on the server
On a host. In your host’s control panel, set the server software to Fabric, Forge or NeoForge and the game version to the one from step 1. If the server already has a world, download a copy of it first. Start the server once so the loader creates its folders, then stop it. On Severoo, all three loaders are on the list of server software, and a free modded server has up to 6 GB of RAM.
On your own PC. Install the Java version your game version needs: Java 25 for 26.1 to 26.3, Java 21 for 1.20.5 to 1.21.11, Java 17 for 1.18 to 1.20.4. Then install the loader in an empty folder.
Fabric. On the Fabric server page, choose the game version and download the server launcher. It is one jar, with no installer to run. Start it with the command that page shows. For 26.3, as of October 2026:
java -Xmx2G -jar fabric-server-mc.26.3-loader.0.19.5-launcher.1.1.2.jar nogui
The number in -Xmx2G is the memory the server may use: 2 GB here.
NeoForge. Download the installer from neoforged.net, put it in the server folder and run it with the server flag:
java -jar neoforge-26.3.0.76-installer.jar --installServer
Then start the server with run.bat on Windows or ./run.sh on Linux and macOS. Memory is set in user_jvm_args.txt; the comments in that file show how. The NeoForge server guide has every step.
Forge. Download the installer from the Forge files page. Open it and choose “Install server”, or run it with the same --installServer flag. Forge 1.20 creates the same run.bat, run.sh and user_jvm_args.txt files. Other versions can differ, so look at what the installer left in the folder.
With any loader, the first start stops by itself. Open eula.txt, change eula=false to eula=true to accept the Minecraft EULA, and start again. For ports and letting friends in, see how to host a Minecraft server on your PC.
Step 4: put the mods and their dependencies in the mods folder
- Stop the server.
- Download each mod’s
.jarfile for your loader and game version. A mod is a program that runs on your server, so stay with sources you trust. - Check each mod’s page for dependencies: other mods it needs in order to load. On Fabric, most mods need Fabric API. Download each one for the same loader and game version.
- Put all the
.jarfiles in themodsfolder, which sits in the server’s main folder besideserver.properties. On a host, upload them through the file manager or SFTP, whichever your host offers. Do not unzip them. - Leave the client-side mods from step 2 out.
Mods keep their settings in the config folder.
Step 5: give every player the same mods
Each player needs the same loader, the same game version and the same content mods as the server. Match the mod versions too, and send your friends the exact list.
- With the official launcher. Each player runs the loader’s own installer in client mode. Fabric’s installer adds a Fabric profile to the launcher, and NeoForge’s has an “Install client” option. Mods then go in the game’s own
modsfolder, which is%appdata%\.minecraft\modson Windows. - With a mod launcher. Modrinth App, the CurseForge app and Prism Launcher run on Windows, macOS and Linux. Each downloads mods and modpacks for you.
Past a handful of mods, sharing a modpack is easier: see how to install a modpack on a Minecraft server. Then everyone joins the server with its address as usual.
Step 6: start the server and read the log
Start the server and watch the console. The same text is saved in logs/latest.log. It worked if startup finishes, you can join with your modded game, and an item from one of the mods is in the creative inventory.
A new 26.3 server starts with the whitelist on (white-list=true in server.properties), so nobody but an operator can join until they are on the list. Type whitelist add and a player name in the console for yourself and each friend. See how to whitelist a Minecraft server.
If the server stops instead, scroll up to the first error.
| What you see | Cause | Fix |
|---|---|---|
Fabric: Incompatible mods found! and a line ending which is missing! |
Missing dependency | Add the mod that line names, often Fabric API. Fabric prints a suggested fix when it finds one |
Fabric: a line with but only the wrong version is present |
Version mismatch | Replace the named mod with the file for your game version |
Fabric: a line ending which is disabled for this environment (client/server only)! |
Wrong side: a mod needs something client-only | Remove the mod that asks for it |
| Forge or NeoForge: startup stops and lists mods with the versions they require | Missing dependency or version mismatch | Add or replace what the list names. NeoForge also writes logs/debug.log with more detail |
| A crash that names one mod and a part of the game a server lacks, such as rendering or a screen | A client-side mod on the server | Move that mod out of mods |
Could not find or load main class @user_jvm_args.txt |
Java is too old | Install the Java version from step 3 |
| The server runs but a player cannot join | That player’s mods differ from the server’s, or the player is not on the whitelist | Compare the two mod lists. On a 26.3 server, also add the player with whitelist add and their name |
Still stuck? Move half of the mods out of the folder, keeping each mod with its dependencies, and start again. Repeat with the half that fails until one mod is left. For errors that are not about mods, see Minecraft server won’t start and can’t connect to a Minecraft server.
Updating mods safely
- Check that every mod has a file for the version you are moving to.
- Stop the server and download a copy of the world folder,
modsandconfig. A world that a newer game version has opened cannot be downgraded. - Replace each old
.jarwith the new one. Do not leave two versions of the same mod in the folder. - Update the loader if a mod asks for a newer one. On a host, pick the new loader version in the control panel. For NeoForge on a PC, run the new installer in the same folder.
- Send players the new files, start the server and read the log again.