Adding Workshop mods to an Arma Reforger dedicated server is not a “drop files in a folder” job like older Arma titles. Everything runs through a single JSON array in your server config, and the server downloads each mod from the Workshop backend on startup. Get the format right and your server pulls every mod automatically; get one field wrong and the server either refuses to launch or quietly drops players from Xbox and PlayStation. This guide walks through the exact mods array structure, how to find a mod’s modId, how to pin versions, how load order actually behaves, and the console crossplay caveat that catches almost everyone. It is written against the current 1.7.0.41 “Partisan Update” (released May 28, 2026) and the official Bohemia Interactive server config specification.
Where mods live: the mods array in config.json
Arma Reforger has no separate mod loader and no -mod launch parameter for dedicated servers. Mods are declared inside your config.json — the same JSON file you pass to the server with -config — under game.mods. When the server starts, it reads that array, contacts the Workshop backend, downloads any mod it does not already have cached, and loads them before the scenario.
The array sits inside the game block, alongside fields like name, scenarioId and maxPlayers. A vanilla config simply has "mods": []. Here is the minimal shape, trimmed down to the parts that matter for modding:
{
"bindAddress": "",
"bindPort": 2001,
"publicAddress": "",
"publicPort": 2001,
"a2s": { "address": "", "port": 17777 },
"game": {
"name": "My Modded Server",
"scenarioId": "{ECC61978EDCC2B5A}Missions/23_Campaign.conf",
"maxPlayers": 64,
"modsRequiredByDefault": true,
"mods": [
{ "modId": "59672945D69497A0", "name": "Server Admin Tools", "version": "1.0.5" },
{ "modId": "5972D43D44FCABDD", "name": "Example Optional Mod", "required": false }
]
}
}
That is the whole mechanism. Every other modding detail — finding the GUID, pinning a version, controlling load order, handling consoles — is about filling out the objects inside that array correctly. For a full breakdown of every other field in the file (networking, RCON, view distance, BattlEye and so on), see our Arma Reforger server configuration guide.
The four fields of a mod entry
Each element in the mods array is a JSON object with up to four fields. Only one of them is strictly required.
| Field | Required? | Type / default | What it does |
|---|---|---|---|
modId | Yes | string (GUID) | The mod’s unique identifier from the Workshop. This is the only field that actually selects the mod. |
name | No | string | Human-readable label. Purely a comment for your own reference — it has no functional effect on which mod loads. |
version | No | string | Pins a specific mod version. If omitted, the server uses the latest available version. |
required | No | bool, defaults to modsRequiredByDefault (true) | If false, the mod is auto-removed with a log warning when it can’t be downloaded, instead of blocking server start. Added in 1.2.1. |
The single most common mistake is assuming name matters. It does not. You can type “Server Admin Tools” or “asdf” — the server resolves the mod entirely from modId. Keep name accurate purely so your config stays readable, especially once you have a dozen mods stacked up.
Finding a mod’s modId on the Workshop
The modId is a GUID — a 16-character hexadecimal string like 59672945D69497A0. It is not the mod’s display name and not a Steam Workshop numeric ID. Arma Reforger uses its own Workshop, and there are three reliable ways to get the GUID:
- From the Workshop webpage — open the mod’s page in the in-game Workshop or on the web Workshop; the GUID is shown on the listing and in the page URL.
- From the in-game Mod Manager (easiest) — this is the method Bohemia’s own wiki recommends and it is by far the least error-prone.
- From the mod’s
.gprojfile or from Workbench options while the mod is running, if you are developing locally.
The Mod Manager JSON-copy trick
Rather than hand-typing GUIDs (one wrong character and the mod silently fails to load), let the game build the array for you:
- Launch the Arma Reforger client and open Workshop → Mod Manager.
- Enable every mod you want on your server and arrange them in the order you want them loaded.
- Switch to the JSON tab and click “Copy to clipboard.”
- Paste the result straight into the
modsarray of yourconfig.json.
The clipboard output is already valid JSON with correct GUIDs, names and (optionally) versions filled in. This eliminates the most common cause of “my mods won’t load” — a mistyped modId. It also captures the order you set, which matters for load order (see below).
Version pinning vs. always-latest
The version field is optional, and that one fact has real operational consequences:
- Omit
versionand the server always pulls the latest published version of the mod. Convenient, but a mod author’s update can break your server or change behavior mid-season without warning. - Specify
version(e.g."version": "1.0.5") and the server stays pinned to exactly that release until you change the string yourself.
For a stable community server, pinning versions is the safer default — you control exactly when updates land and can test them before exposing players to them. The trade-off is that you have to maintain those strings: every time a mod ships a fix you want, you bump the number. A practical middle ground is to pin the handful of large gameplay-overhaul mods that define your server, and leave small cosmetic or utility mods on latest.
One important caveat tied to the engine, not the mod: the dedicated server must be on the same build as your clients. After a Bohemia patch you re-run app_update 1874900 validate in SteamCMD, and mods frequently need updating too — the 1.7.0.41 modding changes relocated or removed several APIs, which required many mods to be rebuilt. A pinned version that predates the engine update can fail to load on the new build, so after a major patch, expect to re-check your pins.
Load order: how the array sequence works
Arma Reforger loads mods in the order they appear in the mods array, top to bottom. There is no separate priority field — the array position is the load order. When two mods modify the same asset or config, the one loaded later generally takes precedence, so dependencies and base frameworks should sit above the content that builds on them.
This is exactly why the Mod Manager JSON-copy approach is so useful: you visually sort mods in the manager, dependencies first, and the exported JSON preserves that sequence. If you hand-edit, keep framework/library mods near the top, faction or asset packs in the middle, and tweak/override mods last. When a mod’s description lists dependencies, place those dependencies before it in the array.
Required vs. optional mods and modsRequiredByDefault
By default — controlled by game.modsRequiredByDefault (bool, default true, added in 1.2.1) — every mod is treated as required. A required mod that cannot be downloaded blocks the server from starting. That is usually what you want: if a core gameplay mod is missing, you do not want the server limping along without it.
Set a mod’s required to false and the behavior flips: if that mod fails to download, the server logs a warning and removes it from the load list rather than refusing to boot. This is handy for non-essential cosmetic or convenience mods where you would rather the server come up than sit dead because one optional add-on had a Workshop hiccup. You can flip the global default by setting modsRequiredByDefault: false, then mark only your critical mods as "required": true individually.
The console crossplay caveat (read this before adding any mod)
This is the part that surprises most server owners. The moment you add any mod, you change which platforms can join your server. Crossplay is governed by game.supportedPlatforms, an array using the tokens PLATFORM_PC, PLATFORM_XBL (Xbox) and PLATFORM_PSN (PlayStation). The game.crossPlatform boolean, when true, auto-adds the platforms it can. But mods and consoles interact in strict ways:
| Platform | Mod policy | Net effect on a modded server |
|---|---|---|
PC (PLATFORM_PC) | Any mods allowed | Always fine. No restrictions. |
Xbox (PLATFORM_XBL) | Only Bohemia-certified console-compatible mods | Xbox players can join, but adding a single PC-only (non-console-compatible) mod drops Xbox. |
PlayStation (PLATFORM_PSN) | No mods at all | Any mod present excludes PSN entirely. There is no per-mod exemption. |
The practical rules that follow from this:
- Mods and PlayStation are mutually exclusive. PS5 players cannot access modded servers — this is widely reported to stem from Sony’s certification policy on user-generated content. Treat it as absolute: if you want PSN players, run vanilla.
- Even with
crossPlatform: true, the wiki notes that PSN is not added on modded servers — the engine silently leaves PlayStation out the moment a mod is in the list. - Xbox survives only with certified mods. Look for the console-compatible / “XBL” badge on a mod’s Workshop listing. One PC-only mod in the array and Xbox players lose access.
- A fully cross-platform server (PC + Xbox + PS5) must therefore be vanilla / no mods. With mods you can reach at most PC + Xbox (and only with console-certified mods), never PlayStation.
So decide your platform target before you build your mod list. If your community is console-heavy on PlayStation, your mod choices are effectively zero. If it is PC plus Xbox, restrict yourself to certified mods. If it is PC-only, go wild. There is a deeper walkthrough of the platform tokens and valid combinations in our guide to making your Arma Reforger server cross-platform.
Applying changes and restarting
The mods array is only read at server startup. After editing config.json you must restart the server process for changes to take effect — the in-game #restart admin command restarts the scenario but does not re-read the mod list. On first boot after adding new mods, expect a longer startup while the server downloads them from the Workshop backend; subsequent boots use the cache and start quickly. You launch the server with a command like:
# Windows
ArmaReforgerServer.exe -config ".\Configs\config.json" -maxFPS 60
# Linux
./ArmaReforgerServer -config /home/user/.config/ArmaReforgerServer/config.json \
-profile /home/user/.config/ArmaReforgerServer -maxFPS 60
If you are running self-hosted, watch the startup log: failed downloads, missing dependencies and dropped optional mods all show up there. On a managed XGamingServer plan you can paste the array straight into the control-panel config editor and the panel handles the restart and download for you — if you are not yet running a box, our Arma Reforger server plans come pre-wired for Workshop mods. The full server-side reference for mod fields, scenario IDs and startup parameters lives in the XGamingServer Arma Reforger documentation.
Troubleshooting mods that won’t load
- Mistyped
modId— the number-one cause. GUIDs are 16 hex characters; one wrong character means the mod silently doesn’t load. Use the Mod Manager JSON copy instead of hand-typing. - Server build mismatch after a patch — re-run
app_update 1874900 validateand update mods; the 1.7.0.41 API changes broke many older mods until they were rebuilt. - Console players missing — that is the crossplay caveat, not a bug. A mod dropped PSN, or a PC-only mod dropped Xbox.
- Server won’t start at all — a
requiredmod failed to download. Mark non-essential mods"required": falseso a single failed download doesn’t block boot. - Invalid JSON — a trailing comma or missing brace will stop the whole config from parsing. Validate the file before launching.
Frequently asked questions
How do I find the modId for an Arma Reforger mod?
The modId is a 16-character hexadecimal GUID, not the mod’s name or a Steam numeric ID. The most reliable way to get it is the in-game Workshop → Mod Manager → JSON tab → “Copy to clipboard”, which exports a ready-to-paste array with correct GUIDs. You can also read the GUID from the mod’s Workshop webpage/URL, from its .gproj file, or from Workbench options while developing. Avoid hand-typing it — a single wrong character makes the mod silently fail to load.
Can Xbox or PlayStation players join a modded Arma Reforger server?
PlayStation players cannot join any modded server — adding even one mod removes PLATFORM_PSN entirely, with no per-mod exemption, and crossPlatform: true won’t add PSN to a modded server. Xbox players can join, but only when every mod is Bohemia-certified for console (the “XBL”/console-compatible badge); a single PC-only mod drops Xbox. PC players can use any mods. So a modded server reaches at most PC + Xbox, never PS5.
Do I need to pin a mod version, or will it always use the latest?
The version field is optional. If you omit it, the server always downloads the latest published version of the mod. If you set it (e.g. "version": "1.0.5"), the server stays locked to that release until you change the string. Pinning is safer for stable community servers because mod-author updates won’t change your server’s behavior without warning — but you then have to bump the version manually to get fixes. After a major engine patch, re-check pins, since old versions may not load on the new build.
Where do I put the mods — is there a mod folder?
There is no mod folder and no -mod launch parameter for dedicated servers. All mods are declared in the game.mods array inside your config.json, and the server downloads them automatically from the Workshop backend on startup. You do not manually copy mod files onto the server. After editing the array you must restart the server process (not just #restart the scenario) for the new list to load.
How does load order work for Arma Reforger mods?
Mods load in the order they appear in the mods array, top to bottom — array position is the load order, and there is no separate priority field. When two mods touch the same asset, the one loaded later typically wins, so put framework/dependency mods near the top and override/tweak mods last. Sorting mods in the in-game Mod Manager before doing the JSON copy preserves the order you set.
Why does my server fail to start after I add a mod?
By default modsRequiredByDefault is true, so every mod is treated as required and a required mod that can’t be downloaded blocks startup. Either fix the failing mod (check the modId and that it exists on the current build) or set that mod’s "required": false so the server logs a warning and removes it instead of refusing to boot. Also check for invalid JSON — a stray trailing comma will stop the whole config from parsing.
Next steps
Mods are one piece of a well-run Arma Reforger server. Once your mods array is solid, the natural follow-ups are choosing the right scenario and AI settings — covered in our guide to disabling AI and running a PvP server — and tuning who gets in, which we walk through in setting up server queues and reserved slots. With the GUIDs sorted, the version pins set, and your platform target decided, your modded server should download everything on the next restart and be ready for players.
Ready to play?
Run your own Arma Reforger server with XGamingServer
Spin up an always-on Arma Reforger server your friends can join in minutes — no port-forwarding, no tech headaches.




