// crash guide
Minecraft server crash: duplicate mods
Two jars in your server's mods folder claim the same mod ID, and the loader can't tell which one to use. It's usually an old copy left behind after an update, or a fork sitting next to the mod it was forked from. Keep one, delete the other, restart.
What the error looks like
The server stops before the world loads. Look near the bottom of the console and in logs/latest.log. Forge 1.16+ and NeoForge also save a report named crash-…-fml.txt in crash-reports/. On a Pelican panel, open these from the file manager. The wording depends on your loader and version.
Forge 1.19 and newer
[main/ERROR] [ne.mi.fm.lo.UniqueModListBuilder/LOADING]: Found duplicate mods:
Mod ID: 'rubidium' from mod files: xenon-1.20.1-0.3.1.jar, embeddium-0.3.30+mc1.20.1.jar
Mod ID: 'embeddium' from mod files: xenon-1.20.1-0.3.1.jar, embeddium-0.3.30+mc1.20.1.jar
[main/ERROR] [ne.mi.fm.lo.mo.ModDiscoverer/SCAN]: Failed to build unique mod list after mod discovery.
net.minecraftforge.fml.loading.EarlyLoadingException: Duplicate mods found
Each Mod ID line gives you the ID and both file names. That's everything you need. If two library jars collide instead, the message is Found duplicate plugins or libraries: followed by Library: '…' from files: ….
Forge 1.16 to 1.18
These versions don't print the file names in the log. You get this:
Error during pre-loading phase
net.minecraftforge.fml.ModLoadingException: fml.modloading.dupedmod
On 1.18 there's also an earlier Failed to build unique mod list after mod discovery. line, followed by EarlyLoadingException: Duplicate mods found. fml.modloading.dupedmod is a message key Forge never translated, so you see the raw key. To find the mod, open the crash-…-fml.txt report. Each duplicate gets a section like -- MOD jei --, and its Mod File line names one of the jars. The other copy is somewhere else in mods/. The log shows only the first duplicate. The report lists all of them.
NeoForge
NeoForge for 1.20.1 to 1.20.4 prints the same messages as Forge 1.19 and newer, including the Mod ID: '…' from mod files: … lines. On NeoForge 1.21 and newer, the log starts the same way, but the detail line is a raw message key:
Found duplicate mods:
ERROR: fml.modloadingissue.duplicate_mod [<modid>; <first>.jar, <second>.jar]
The crash-…-fml.txt report spells it out: Failure message: Mod <modid> is present in multiple files: <first>.jar, <second>.jar.
Forge 1.12.2 and older
Found a duplicate mod jei at [.../mods/jei_1.12.2-4.15.0.268.jar, .../mods/1.12.2/jei_1.12.2-4.16.1.301.jar]
net.minecraftforge.fml.common.DuplicateModsFoundException
A client shows this as "You have mod sources that are duplicate within your system".
Quilt
Quilt's error window shows the mod's display name, not its ID, and lists every file:
Duplicate mod: <mod name>
- <first file>
- <second file>
Remove all but one.
A server in a panel runs without a screen, so there's no window. In the log and Quilt's crash report, look for Duplicate mandatory mod ids [<modid>], followed by the same file list.
What it means
Every mod has an internal ID, like jei or create. It isn't the file name. At startup the loader collects every ID in mods/, and each one must be unique. If two jars claim the same ID and the loader can't safely pick one, it stops rather than load the same mod twice.
How it usually happens:
- An update that didn't remove the old jar. Downloads get new file names, so the old one stays. A double download like
jei (1).jarcounts too. The loader reads every file ending in.jar. - A fork next to the original. Embeddium also registers the ID
rubidium, so mods that expect Rubidium still work. Install both and Forge seesrubidiumtwice. Xenon claimsembeddiumandrubidium, as in the log above. - A copy in a subfolder. Forge 1.12.2 and older also load a version folder like
mods/1.12.2/. Quilt loads subfolders ofmods/. Newer Forge, NeoForge and Fabric only read the top level. - A modpack update copied over the old folder. The new jars land, the old ones stay. Replace
mods/as a whole instead; the modpack update guide lists what to keep and what to replace.
Forge 1.16.5 and newer, and NeoForge, group jars by their main mod ID (the first one listed in the jar) and quietly keep the newest when two match. So a plain old-and-new pair often doesn't crash there. When it does crash, the ID is usually bundled inside a second jar, which is why forks are the classic trigger. Forge 1.12.2 and older, and Quilt, stop on any pair. Fabric is the exception. See the Fabric notes below.
Common in these packs: any pack you update by uploading new files over the old ones. A leftover jar is easiest to miss in big packs, like All the Mods 10 (around 500 mods) or Enigmatica 10 (313).
How to fix it
- Copy the mod ID and file names from the error. Fix every duplicate it lists before you restart. On Forge 1.16 to 1.18, the full list is in the crash report.
- Take a backup. On DSN, that's one on-demand backup from the panel.
- Find both jars. Open
mods/in the file manager or over SFTP, and check any subfolders. If the names don't help, open each jar as a zip (7-Zip works) and readMETA-INF/mods.tomlon Forge (META-INF/neoforge.mods.tomlon NeoForge 1.20.5+),fabric.mod.jsonorquilt.mod.json. ThemodIdor"id"field is the ID. More than one[[mods]]block means the jar carries more than one mod. - Pick the one to keep.
- Two versions of one mod: keep the build for your exact Minecraft version and loader, normally the newer one. Players should run the same version as the server.
- A fork and its original: keep one. Embeddium, Rubidium and Xenon are client-side rendering mods, so a server needs none of them.
- Running a modpack: keep the version the pack shipped, unless you updated on purpose.
- Delete the other jar, or move it out of
mods/entirely. Don't leave backup copies in there. - For a messy modpack, start clean. Check that your backup includes the world first. Then reinstall the pack's server files at the version your players run (the Pelican one-click installer handles CurseForge and Modrinth packs), and re-add your own extras one at a time.
- Restart. If the error names another ID, repeat.
Forge and NeoForge notes
When Forge or NeoForge quietly picks the newest copy, the note usually goes only to logs/debug.log. Search it for "most recent based on version data". The newest NeoForge versions also write that line to latest.log. Delete the old jar anyway, so you know what's running.
On Forge 1.17+ and NeoForge, two jars holding the same Java code under different names can fail differently: java.lang.module.ResolutionException: Modules <a> and <b> export package …. The two names after Modules point at the two jars. Same fix.
Fabric and Quilt notes
Fabric Loader 0.12 and newer don't crash on two versions of a mod. They load the newest compatible copy. The catch: if the newer copy's dependencies aren't met, Fabric may quietly load the older one. Delete the extra jar either way. If you see Mods share ID with builtin mod, a jar in mods/ claims an ID Fabric reserves for the game itself, minecraft or java. Delete that jar.
Quilt stops on duplicates and lists every file. Check subfolders of mods/.
How to check it's fixed
- Restart.
Found duplicate mods,Duplicate mods found,fml.modloading.dupedmod,Duplicate mandatory mod idsandDuplicateModsFoundExceptionshould be gone. - The server is up when you see
Done (…s)! For help, type "help". - On Fabric, the
Loading N mods:list near the top oflatest.logshould show the version you kept. - Join from a client. If players still have the version you deleted, have them switch to the one on the server. Mismatched mod versions can stop players joining.
- If a new error says a mod is missing, another mod needed the jar you deleted. Restore it from your backup and remove the other copy instead.
Related crash guides
Modded hosting is relaunching.
DSN hosts modded Minecraft only, with a file manager and SFTP for cleaning up mods/, on-demand backups before you do, and support from the owner at hello@dsnservers.com. We're moving DSN Servers to new hardware, and ordering is closed until then. Join the launch list and we'll email you when servers open.