Game Hosting home

How to Add Mods to a Minecraft Java Server (Fabric, NeoForge)

How to add mods to a Minecraft Java server: match the loader and version, check server and client sides, add dependencies, restart and read the log.

Difficulty
NormalDifficulty Normal
Time to do
15 min
Reading
12 min
Updated
By
Game Hosting team

You will need

  • A Minecraft Java server on Fabric, NeoForge or Forge that you can stop and start
  • Access to the server's folder (on the same PC, over SSH, or in your host's file manager)
  • The mods you want, downloaded from Modrinth or CurseForge
  • One friend who can test the join

To add mods to a Minecraft Java server, stop the server, put the .jar files built for its loader (Fabric, NeoForge or Forge) and its exact Minecraft version in the mods folder, add every mod they depend on, then start it and read the log. Paper and Vanilla servers can’t load mods at all. Players then install the same mods that run on both sides; mods that only run on the server need nothing from them. This guide covers how to add mods to a Minecraft server on Java Edition the way that works the first time: the checks on each mod’s page, the dependencies people miss, the log lines that prove a mod loaded, what your players install, and how to take a mod out without wrecking the world. Versions are current for Minecraft 26.3.

Check the server’s loader and Minecraft version first#

A mod is built for one loader and one Minecraft version, and the server loads it only if both match. So before downloading anything, write down two things: which software the server runs, and which Minecraft version.

Server software Loads Folder
Vanilla Nothing (data packs only) none
Paper, Purpur Plugins plugins/
Fabric Fabric mods mods/
NeoForge NeoForge mods mods/
Forge Forge mods mods/

The server’s log says both. The vanilla line Starting minecraft server version 26.3 gives the Minecraft version, and a line near the top names the loader: on Fabric it reads Loading Minecraft 26.3 with Fabric Loader 0.19.5. If neither Fabric, NeoForge nor Forge appears in the first lines, the server is Vanilla or Paper, and a mods folder there is ignored. Installing a loader is a separate job; pick it by the mods you want, not the other way around.

The version matters as much as the loader. Since 2026, Minecraft numbers its releases by year: 1.21.11, then 26.1, 26.2 and 26.3, the current one. A mod built for 26.2 doesn’t load on 26.3, and big mods often stay on one version for a long time. Create by simibubi, for example, has NeoForge builds up to 6.0.10+mc1.21.1 and nothing for 26.x yet, which is why so many modded servers still run 1.21.1. Decide on the version your most important mod supports, then check every other mod against it.

Read the mod page: loader, version and whether it runs on the server#

Every mod page on Modrinth lists the loaders and Minecraft versions it supports, and a third thing most guides skip: its environment. Modrinth stores two values per mod, one for the client (a player’s game) and one for the server, each required, optional or unsupported. That pair tells you where the mod belongs.

Here’s what Modrinth said for common mods on 9 October 2026:

Mod (author) Loaders Has 26.3 builds Client Server Where it goes
Lithium (CaffeineMC) Fabric, NeoForge yes optional optional Server only is fine
FerriteCore (malte0811) Fabric, NeoForge, Forge yes optional optional Server only is fine
Chunky (pop4959) Fabric, NeoForge, Forge yes optional optional Server only
Waystones (BlayTheNinth) Fabric, NeoForge, Forge yes (Fabric, NeoForge) required required Server and every player
Simple Voice Chat (henkelmax) Fabric, NeoForge, Forge yes optional optional Server, plus players who want to talk
Sodium (CaffeineMC) Fabric, NeoForge yes required unsupported Players only, never the server
Iris Shaders (IMS, coderbot) Fabric, NeoForge yes required unsupported Players only, never the server

Read it this way. required on both sides means the mod adds content, like blocks, items or mobs, and both the server and every player need it. optional on the client with optional or required on the server means it works on the server alone. unsupported on the server means it’s a client-only mod: minimaps that only draw on screen, shaders, renderers, menu tweaks. On Forge and NeoForge a client-only mod in mods/ usually stops the server from starting, with a line like Attempted to load class net/minecraft/client/Minecraft for invalid dist DEDICATED_SERVER. That message means “this mod belongs in a player’s game”, and the fix is to take it out of the server.

CurseForge pages don’t show the environment as clearly. When a mod is on both sites, check its Modrinth page; when it’s only on CurseForge, the description usually says “client-side only” or “server-side” in its first lines.

Add every dependency the mod needs#

Most mods lean on other mods, and the server refuses to start without them. On Modrinth, a version’s page lists its dependencies, marked required or optional. Download every required one, for the same loader and Minecraft version.

Some examples from Modrinth on 9 October 2026:

  • Fabric API (modmuss50 and the Fabric team) is what almost every Fabric mod needs. The Fabric download page says it plainly: most mods require Fabric API in the mods folder. Its newest build is 0.162.0+26.3.
  • Waystones 26.3 needs Balm, also by BlayTheNinth, plus Shogi, on NeoForge and Fabric, and Fabric API on Fabric. Its 1.21.1 builds need only Balm.
  • Architectury API (MaxNeedsSnacks, Juuz) and Cloth Config API (shedaniel) are libraries other mods ask for.
  • Just Enough Items (mezz) needs MezzConfig on 26.3 and 1.21.1.

A list of 10 mods often turns into 15 files once the libraries are in. That’s normal.

When one is missing, Fabric says so before the world loads. The log stops with a block like this, which names the missing mod and the fix:

text
Incompatible mods found!
Some of your mods are incompatible with the game or each other!
A potential solution has been determined, this may resolve your problem:
	 - Install fabric-api, any version.
More details:
	 - Mod 'Chunky' (chunky) 1.5.3 requires any version of fabric-api, which is missing!

NeoForge and Forge stop on a loading error that names the mod asking, the mod it needs and the version range it accepts. The same block appears when a dependency is present but too old, so a “requires 0.162.0 or later” line means updating the library, not adding a second copy.

How to add mods to a Minecraft Java server, step by step#

With the files checked, the install itself takes a few minutes. Mods load only while the server starts: there’s no hot loading, and /reload only reloads data packs, so every change means a full stop and start.

  1. Back up the world

    Copy the world folder (world unless level-name in server.properties says otherwise) somewhere outside the server folder. On an existing server with months of building, this is the step that matters.

  2. Stop the server

    Type stop in the console and wait for it to finish saving. Adding files to a running server does nothing until the next start, and removing them while it runs can corrupt what it’s writing.

  3. Copy the jars into the mods folder

    The folder sits next to the server jar: C:\minecraft-server\mods on a Windows PC, ~/minecraft-server/mods on Linux. It appears after the loader’s first start; if it’s missing, create it with that exact name. Copy the .jar files as they downloaded, without unzipping them. From another computer, scp *.jar user@your-server:~/minecraft-server/mods/ does it over SSH.

  4. Start the server

    Use the same command as before: java -Xmx4G -jar with the Fabric server jar on Fabric, or the run.bat / run.sh the NeoForge and Forge installers create (memory goes in user_jvm_args.txt there).

  5. Read the log

    Open logs/latest.log. On Fabric, a line like Loading 18 mods: lists every mod with its version; the count includes Minecraft, Java and Fabric Loader themselves. On NeoForge and Forge, search for each mod’s name or file. Either way, the start is good when the log reaches Done ( followed by the seconds it took.

If the log stops before Done, the last error lines and the newest file in crash-reports/ name the culprit. Remove that one mod, start again, and you’re back to a working server while you look into it.

Adding mods to an existing world works the same way. Mods that add items, blocks and mobs work in the world you have. Mods that change world generation, such as new biomes, structures or ores, only appear in chunks nobody has explored yet, so your old base stays as it was and the new content waits further out.

Give players the same mods, or none at all#

What your players install depends on the environment column from the table above. Mods that are required on both sides must be in every player’s game, with the same loader and the same mod versions as the server. Server-only mods need nothing from them, so a server running just Lithium, FerriteCore and Chunky can take players on an unmodded launcher. Client-only mods are each player’s own choice: they can add Sodium or a shader pack without the server knowing.

The easy way to keep a group in sync is a launcher with profiles. The Modrinth App, the CurseForge app and Prism Launcher all let a player create a profile for the loader and Minecraft version, then add mods to it. Send your group a list with the exact mod versions, or better, make a modpack of the both-sides mods and share it so everyone imports the same files.

When a player’s game doesn’t match, the join fails before they see the world. On NeoForge and Forge the disconnect screen lists missing or mismatched mods; on Fabric the player is dropped with a message about missing mods or registry entries. A player on plain Minecraft joining a server with content mods gets refused the same way. In each case the answer is on their side: install the listed mods in the versions the server has.

Let the Game Hosting panel do these checks for you#

Everything above works on a home PC or any host. If you’d rather not compare loaders, versions and dependency lists by hand, we recommend Game Hosting’s Minecraft servers. Software & version on the Overview switches between Paper, Purpur, Vanilla, Fabric, NeoForge and Forge, or installs a Modrinth modpack in one click, and picks the right Java for the Minecraft version. Before any software or version change, every world is copied, and moving a world to an older version than it was played on is refused.

The Plugins & mods tab searches Modrinth filtered by your server’s loader and Minecraft version, so a mod you add is one that fits. Required dependencies come with it: add a mod that needs a library and the library is installed too. Each mod shows its author with a link to its Modrinth page, you can pin a version, and a mod with no build for your Minecraft version is marked skipped instead of breaking the start. Mods that Modrinth marks as client-only can’t be added from the search; the panel tells you each player installs those in their own game.

Before every start, the server checks the mods folder with Modrinth and moves mods made only for players’ games, such as minimaps, Sodium or menu tweaks, to .gamehosting/client-only-mods, keeping any that a server mod needs. If Forge or NeoForge still crashes on client classes, it takes those mods out using the crash report and starts again. The console says which mods it took out. In our tests, a modpack that shipped 31 client-only mods started this way. And when a player joins without the server’s mods on NeoForge, the console says it in a plain line: that player couldn’t join because their game doesn’t have the server’s mods.

Jars you’d rather add by hand go in through Files, the web file manager (there’s no SFTP). CurseForge modpacks aren’t one click yet: files Modrinth doesn’t host are listed with links so you can upload them. Every plan includes three backup slots, and the panel copies your worlds before it changes your plugins and mods.

Remove or update a mod without breaking the world#

Taking a mod out is the risky direction. Everything that mod added to the world goes with it: its blocks turn to air when their chunks load, its items vanish from chests and inventories, and machines built from it lose what was inside. There’s no undo except the backup.

  1. Back up first, and keep the copy

    Keep that backup until the group has played a few sessions without the mod. Problems in far-off chunks can take days to notice.

  2. Empty what you can in the game

    Move items out of the mod’s storage and machines, and break blocks you want to keep the materials from, before the mod goes.

  3. Check that nothing else needs it

    A library such as Balm or Architectury can only go when no other mod depends on it. Removing it with a dependent still installed brings back the missing-dependency error.

  4. Stop the server and delete the jar

    Delete the .jar from mods/. Its settings in config/ can stay; they do nothing without the mod and come back into use if you reinstall it.

  5. Start, test, then tell the players

    Check the log reaches Done (, join yourself, and only then tell the group to remove the mod from their profiles.

Updating a mod is safer than removing it: stop the server, replace the old jar with the new one for the same loader and Minecraft version (never keep both), start, and read the log. For both-sides mods, players update to the same version at the same time.

Quest complete

Before you invite your friends, check that the intended world loaded and that each player can connect. If those checks pass, you're ready for a session; if you'd rather not keep a PC on, that's what we're here for.

Quick answers

How do I add mods to an already existing Minecraft server?

Back up the world, stop the server, put the new mod and its dependencies in the mods folder, then start it again and check the log. If the server runs Paper or Vanilla, it has to move to Fabric, NeoForge or Forge first. Mods that change world generation only show up in chunks nobody has explored yet.

Is Forge or Fabric better for a server?

Neither in general: pick the loader your mods are built for. Fabric suits light and performance mods on the newest versions; NeoForge has the big content mods such as Create, mostly on 1.21.1; Forge is where older mods and 1.20.1 modpacks live.

Do players need the mods installed to join?

Only the ones that run on both sides, which is most mods that add blocks, items or mobs. Players need the same loader and the same versions of those. Server-only mods, such as Lithium or Chunky, need nothing on their side.

Can I add mods to a Paper server?

No. Paper and Purpur load plugins from the plugins folder and ignore Fabric, NeoForge and Forge mods. To use mods, the server has to switch to the loader those mods are made for.