How to Install Forge Mods on a Minecraft Server
Install Forge mods on a server: run the Forge server for your Minecraft version, put jars in mods, remove client only mods, and match versions with players.
Updated Oct 3, 2026 · 6 min read
On this page
To install Forge mods on a Minecraft server, run the Forge server for the exact Minecraft version your mods need (for example 1.20.1 with Forge 47.4.10), then put each mod's .jar in the server's mods/ folder and restart. Leave out client only mods such as minimaps, shaders and Optifine, because Forge does not skip them and they crash the server. Every player needs Forge and the same content mods, in the same versions, on their own game.
What you are working with
| Piece | What it is | Where it goes |
|---|---|---|
| Forge installer | Builds the server from files.minecraftforge.net with --installServer |
Run once, then delete |
libraries/ plus unix_args.txt or a -shim.jar |
The installed Forge server (the start file depends on the version) | Server root |
run.sh, user_jvm_args.txt |
Start script and memory settings when you self host | Server root |
Mod .jar files |
The mods | mods/ |
config/ |
Common mod settings | Server root |
world/serverconfig/ |
Per world server settings for many mods | Inside the world folder |
defaultconfigs/ |
Server configs copied into new worlds | Server root, used by modpacks |
Forge mods are not NeoForge mods (except on 1.20.1), not Fabric mods and not Paper plugins. A Fabric jar in a Forge mods folder stops the server with an error.

Which Forge version do I need?
Pick the Minecraft version your most important mods support, then the Forge build for it:
| Minecraft | Forge (recommended or latest, October 2026) | Java |
|---|---|---|
| 1.20.1 | 47.4.10 recommended | 17 |
| 1.21.1 | 52.1.0 recommended | 21 |
| 26.1.2 | 64.1.0 recommended | 25 |
| 26.3 | 66.0.9 latest | 25 |
Most big Forge modpacks and mods still target 1.20.1. For 1.21.1 and newer, many mod authors moved to NeoForge, so check each mod page before choosing Forge.
Before you start
- Collect the mod list first. Every jar must say Forge and your exact Minecraft version on its download page.
- Back up. Content mods change the world, and removing one later can break chunks.
- Separate server and client mods. Read on, this is the step that decides whether the server starts.
Step 1: Install the Forge server
Self hosting, download the installer for your version and run it in an empty folder:
java -jar forge-1.20.1-47.4.10-installer.jar --installServer
It creates libraries/, a run.sh or run.bat start script and user_jvm_args.txt. Accept eula.txt and start the server once with ./run.sh so it creates mods/, config/ and the world. An existing vanilla world of the same version loads fine on Forge.
Step 2: Sort your mods into server and client
| Kind of mod | Examples | Server | Players |
|---|---|---|---|
| Content: blocks, items, mobs, dimensions | Create, Mekanism, Twilight Forest | Yes | Yes, same version |
| Libraries the mods depend on | Architectury, Curios, GeckoLib | Yes, when a mod needs them | Yes |
| Server tools and performance | ModernFix, FerriteCore, Chunky | Yes | Optional |
| Client visuals and UI | Optifine, Oculus, Embeddium, Xaero's Minimap, Controlling, zoom mods | No | Their choice |
The mod's page usually says "client side only". If it does not, look at what it does: anything that only changes rendering, menus, keybinds or the HUD stays off the server.
Step 3: Upload the mods
- Stop the server.
- Upload the jars, including every library they list as a dependency, into
mods/. - Start the server and watch the log. Forge lists missing dependencies by name, with the version range it wants.
Add mods in small batches on a new server. When something breaks, you know which batch did it.
The gotcha: client only mods crash a Forge server
Fabric quietly skips mods marked client only. Forge, in practice, does not: a client mod that touches rendering code is loaded on the server and crashes it during startup. The crash report says something like:
Attempted to load class net/minecraft/client/... for invalid dist DEDICATED_SERVER
That line names a class, and the stack trace below it names the mod. Remove that jar from the server's mods/ (players keep it) and start again. When you copy a whole client mods folder from a launcher like CurseForge, this happens almost every time, because client packs are full of minimaps, shader loaders and menu tweaks. Copy the pack's server files instead when the author provides them.
A second trap is memory on hosted servers. Self hosted Forge reads the heap size from -Xmx in user_jvm_args.txt. On GamezServers the server starts Forge with its own launch command and sizes memory from your plan, so editing user_jvm_args.txt changes nothing. If a pack runs out of memory, upgrade the plan instead.
Step 4: Give players the same setup
Players need, on their own PC:
- Forge for the same Minecraft version, from the Forge installer or a launcher like CurseForge, Prism or the Modrinth App.
- Every content mod and library from the server, same versions.
- Any client only mods they like on top.
The clean way is a modpack everyone installs. A player missing a mod is disconnected with a "mismatched mods" or registry message naming it.
Common problems
- "invalid dist DEDICATED_SERVER": a client only mod is on the server. Remove it.
- "Mod X requires Y" or "Missing or unsupported mandatory dependencies": add the library named, in the version range shown.
- Crash right at start with a Java class version error: wrong Java. 1.20.1 wants Java 17, 1.21.1 wants 21, 26.x wants 25.
- A config change does nothing: many mods read server settings from
world/serverconfig/, notconfig/. Edit the file in the world folder with the server stopped. - Fabric or NeoForge jar refused: get the Forge build of that mod, or move the server to the loader the mod supports.
- Lag after adding big mods: see how much RAM a Minecraft server needs and pregenerate the world.
Forge mods on GamezServers
On a Minecraft server from GamezServers, choose Forge in Settings, set the Minecraft version, pick a recommended or latest build (or type an exact one like 1.20.1-47.4.10), and press Update game. Forge is installed for you and your world stays. Upload mods to mods/ with the file manager or SFTP, and press Backup first. New servers run Java 25, so if a 1.20.1 pack needs Java 17, ask support to switch it. For a whole pack, see how to make a modded server from a CurseForge modpack.
FAQ
Do Forge mods go on the server or the client?
Content mods go on both, in the same versions. Client only mods like minimaps and shaders go on the client only.
Can I use Forge mods on a NeoForge server?
Only on Minecraft 1.20.1, where NeoForge still loads most Forge mods. From 1.20.2 on, they are separate.
Why does my Forge server crash with "invalid dist DEDICATED_SERVER"?
A client only mod is in the server's mods folder. Remove the mod named in the crash report.
How much RAM does a Forge server need?
Light mod lists run on 4 GB. Big packs like All the Mods want 8 GB or more.
Skip the setup. Your own Minecraft server.
Then $4.99/mo. Just trying it? $1.25 for 3 days