Terabit
Back to knowledgebase

How to Add Workshop Mods to an Arma Reforger Server

Add mods to the config.json mods array, get the load order right, and avoid the version-mismatch errors that stop clients joining.

August 17, 2026 by Terabit Editorial / 6 min read

On this page

Mods are why most Reforger communities run their own server. The format is simple once you have seen it, and clients download everything on join. Three things cause nearly all the problems: the ID is not the name, order matters more than people expect, and leaving the version off is a decision rather than a default.

The format#

Mods live in a mods array inside the game block:

{
    "game": {
        "name": "Example Milsim",
        "scenarioId": "{ECC61978EDCC2B5A}Missions/23_Campaign.conf",
        "modsRequiredByDefault": true,
        "mods": [
            {
                "modId": "591AF5BDA9F7CE8B",
                "name": "Capture & Hold",
                "version": "1.0.3"
            }
        ]
    }
}

Per-entry fields:

FieldRequiredPurpose
modIdYesThe 16-character hex GUID from the Workshop URL.
nameNoA comment for your own benefit. Not functional — the server matches on modId.
versionNoLocks the mod to a specific build. Omit it and the latest is used.
requiredNofalse lets the server start anyway if the mod cannot be downloaded.

game.modsRequiredByDefault overrides the default value of required for every mod in the list, so you usually only set required on individual entries you want to deviate.

Load order is array order#

Mods load top to bottom, and a dependency has to sit above every mod that needs it. Get that backwards and you get a server that boots but is quietly missing content, which is a much worse failure than one that refuses to start.

Reforger also treats load position as override precedence: where two mods touch the same content, the one lower in the list wins. That is why a curated order is worth keeping rather than appending every new mod to the bottom.

A workable order, top to bottom:

  1. Frameworks and shared libraries.
  2. Faction and asset packs.
  3. Terrain and scenario mods that build on those assets.
  4. Small tweaks and overrides.

Adding a mod, step by step#

1. Get the mod ID#

Open the mod on the Arma Reforger Workshop and copy the 16-character hex string from the URL.

2. Add the entry#

Append an object to the mods array, in the right position for the load order. modId is the only field you strictly need.

Add the mod's dependencies too, above it — the Workshop page lists them. A good panel will expand and order them for you; done by hand, this is the step that most often goes wrong.

3. Decide on the version#

This is the decision people skip. Omitting version means the server pulls the newest build every restart. That is convenient right up until a Workshop update changes something and your server stops matching your players' clients mid-week.

Lock versions on any server a community actually depends on. Mod collections and version locking covers the trade-off and how to manage updates deliberately.

4. Validate before restarting#

The mods array is the easiest part of config.json to break, because it is the most nested and the most edited. Paste the file into the config validator first — a stray comma here produces a server that will not boot, with a log line that does not obviously point at the mods array.

5. Restart and watch the log#

Mods download on first start, so expect the boot to take noticeably longer than usual. Watch until the scenario reports loaded.

What players have to do#

Nothing. Mods listed in the server config are downloaded and activated on join.

That does mean download size is a real consideration: a first-time join to a server with a large modlist is a long wait before the player sees anything. It is worth knowing the total size of your modlist so you can tell people what to expect, and worth being deliberate about adding another large terrain mod to a server whose players are mostly casual joiners.

Common failures#

Server will not start after a mod change. In order: JSON syntax in the mods array, then a mistyped modId, then a locked version that no longer exists.

Server starts, content is missing. A dependency sitting below the mod that needs it. Check order before you check anything else.

Server starts completely vanilla. Two mods claiming the same internal package name — see the warning above.

Clients cannot join a working server. Version mismatch — the server updated a mod and the client has a different build, or the reverse. This is the failure that locking a version prevents, and it is the one covered in mod collections and version locking.

PS5 players cannot join. PlayStation certification restricts user-generated content. Modded servers are broadly joinable from PS5, but some mod types are still unavailable, so test with a real PS5 client rather than assuming. See crossplay.

Verify it worked#

  1. config.json validates.
  2. Server log completes mod download and reports the scenario loaded.
  3. The mods you expect are listed in the server's browser entry.
  4. A client that has never joined before can connect and download the list cleanly — test with an account that is not your own, since your own client may already have the mods cached.
  5. In-game, the modded content is actually present. A clean boot is not proof the content loaded as you intended.

Trusted references#

Frequently asked questions

It is the 16-character hexadecimal string in the mod's Workshop URL. It is not the mod's name and not a numeric Steam ID.