// 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.

Updated  ·  Forge, NeoForge, Fabric, Quilt

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:

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

  1. 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.
  2. Take a backup. On DSN, that's one on-demand backup from the panel.
  3. 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 read META-INF/mods.toml on Forge (META-INF/neoforge.mods.toml on NeoForge 1.20.5+), fabric.mod.json or quilt.mod.json. The modId or "id" field is the ID. More than one [[mods]] block means the jar carries more than one mod.
  4. 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.
  5. Delete the other jar, or move it out of mods/ entirely. Don't leave backup copies in there.
  6. 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.
  7. 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

Not sure this is your crash?Paste your log into the free crash log analyzer. It checks for duplicate mods and other common crashes, and explains the fix in plain English.

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.

Join the launch list