If you have set up a modded Minecraft server in the last couple of years you have hit the question: the pack says NeoForge, the mod you want says Forge, and nothing explains whether that matters. It does — and the answer hinges almost entirely on one Minecraft version number. Here is the short version of NeoForge vs Forge, what changes on an actual server, and how to tell which one a given jar wants.
NeoForge is a fork of Minecraft Forge, started in 2023 by a group of people who had been working on Forge and split off after a disagreement about how the project was run. It began as a copy of Forge's 1.20.1 codebase, which is why that particular version behaves so strangely in compatibility terms, and it has been diverging ever since.
It is not a lighter or a faster loader. It is the same kind of loader with the same kind of API, maintained by different people, and in the years since the split it is where most active mod development has gone.
This is the part worth memorising.
net.minecraftforge.* became net.neoforged.* — and the two ecosystems became genuinely separate. A mod compiled against one will not load on the other. There is no shim, no compatibility layer and no flag that makes it work.So the failure mode is loud rather than subtle: drop one leftover Forge jar into a NeoForge 1.21 mods folder and the server does not limp along without that mod, it crashes on startup. If you are debugging a modded server that will not boot after an update, checking that every jar targets the same loader is a two-minute test worth doing first.
Pick the pack or the mod list first; the loader follows from it. That said, the trend is clear enough to plan around:
If a mod you depend on has never been ported past 1.20.1, that decides your server version, and the loader question answers itself.
This is where the two loaders bite hardest, because the differences are in the parts nobody documents on a mod page.
Modern Forge and NeoForge installers do not leave you a single fat jar to run. They lay down a libraries tree and generate an argument file — under libraries/net/minecraftforge/forge/<version>/ for Forge and libraries/net/neoforged/neoforge/<version>/ for NeoForge — and the server is started by pointing Java at that file (or at the run.sh the installer writes).
Get this wrong and the symptom is genuinely confusing: a control panel that falls back to -jar server.jar will happily start a vanilla server, players connect fine, and every single mod appears to have vanished. If your mods are "not loading" but the console shows no errors at all, check the start command before you check anything else.
Both loaders inherit Minecraft's own requirements: 1.17 and up need Java 17, and 1.20.5 and up need Java 21. A mismatch throws UnsupportedClassVersionError on startup, which reads like a corrupted download but is only the wrong runtime.
One folder, one loader, one Minecraft version. Do not keep "spares" in there for later.
Three checks, in order of effort:
-forge- or -neoforge- in it.META-INF: a Forge mod carries mods.toml, while newer NeoForge mods carry neoforge.mods.toml.Fabric is the third loader and a genuinely different design: smaller, quicker to start, quicker to update to a new Minecraft version, and the traditional home of client performance mods. Its API has nothing in common with Forge's, so Fabric mods and Forge/NeoForge mods never mix — this is not a "same family, different version" situation. Quilt is a fork of Fabric that can load most Fabric mods.
For a server, the practical split is that heavy tech and content packs mostly live on Forge/NeoForge, while lightweight and performance-focused setups often prefer Fabric.
Between Forge 1.20.1 and NeoForge 1.20.1, with the same mods on both sides, a world usually moves without drama. Any other jump — a different Minecraft version, or a mod list that is not identical — should be treated as a migration rather than a switch.
The safe order: take a full backup and download it, copy the world onto a second server to test, then start with the new loader and read the console rather than the game. Missing registry entries are the thing to watch for; if mods have been dropped, the blocks and items they added are gone from the world with them.
| Minecraft version | Run | Why |
|---|---|---|
| 1.19.x and older | Forge | NeoForge does not exist there |
| 1.20.1 | Either | Mods are interchangeable; follow your pack |
| 1.20.2 – 1.20.4 | Whatever the pack says | The split happens here — no mixing |
| 1.21 and newer | NeoForge | Where new mods and packs are published |
On 1.20.1, generally yes. On 1.20.2 and later, no — the internal packages were renamed and a mod built for one will not load on the other.
Not in any way you would feel as a player. They are the same class of loader; performance comes from your hardware, your mod list and your tick budget, not from the badge on the launcher.
If you are starting fresh on a current version, NeoForge, because that is where the mods are. If you are running an established pack, run whatever that pack targets and do not fight it.
No. One loader per server, and one mods folder that matches it.
On a GGameHost Minecraft server the loader is a dropdown: pick Forge, NeoForge, Fabric or a full CurseForge pack, and the correct start command and Java version are configured for you — which removes both of the failure modes above. Our modpack install guide walks through a pack end to end, and if you are heading for a Create pack specifically, the Create server guide covers what to give it.