Terabit
Back to knowledgebase

Arma Reforger config.json Explained: Every Field, and What to Actually Change

A field-by-field reference for the Arma Reforger server config.json, with the defaults, the safe ranges, and the handful of settings that are worth touching.

August 17, 2026 by Terabit Editorial / 8 min read

On this page

Arma Reforger dropped the server.cfg format that Arma 2 and Arma 3 used. The Enfusion engine reads a single JSON file instead — usually called config.json — that holds everything from the UDP port to the AI cap.

That change has one practical consequence worth knowing before you open the file: JSON has no tolerance for syntax errors. A trailing comma or an unquoted string does not produce a warning and a default value. The server refuses to start, and the log line that explains why is not always obvious. Validate the file before you restart, every time.

This page walks the fields you will actually set, by category, with the default and the sane range for each. Two of the bigger ones — the mods array and the admins list — get their own pages, because there is more to say about each than a table row: see adding Workshop mods and admins and RCON.

If you would rather not hand-edit at all, our config generator builds a valid file field by field, and the config validator will catch a syntax error before your server does.

The shape of the file#

Every setting lives in one of four blocks:

{
    "region": "EU",
    "bindPort": 2001,
    "a2s": { },
    "rcon": { },
    "game": {
        "gameProperties": { }
    },
    "operating": { }
}
  • Root — networking and matchmaking region.
  • a2s and rcon — the query and remote-console listeners.
  • game — everything a player sees: name, password, scenario, platforms, and the nested gameProperties for gameplay rules.
  • operating — server-side behaviour: AI limits, save intervals, the join queue.

Network#

FieldDefaultNotes
regionEUMatchmaking region. EU, US, AS, AU, SA, or AF. Set it to where your players are — it affects discoverability.
bindAddressemptyThe IP the server listens on. Leave empty. IPv6 is not supported.
bindPort2001The main game port, UDP.
publicAddressemptyThe address reported to the backend. Leave empty to auto-detect.
publicPort2001The port reported to the backend. Leave empty or match bindPort.

See Arma Reforger server ports for what each port does and which ones need to be reachable.

Query and RCON#

FieldDefaultNotes
a2s.addressemptyQuery bind address. Leave empty.
a2s.port17777Steam A2S query port, UDP. This is what server-list sites poll.
rcon.addressemptyRCON bind address. Leave empty.
rcon.port19999BattlEye RCON port, UDP.
rcon.passwordemptyMinimum three characters, no spaces. RCON is disabled without it.
rcon.maxClients16Simultaneous RCON connections, 1–16.
rcon.permissionmonitormonitor is read-only; admin allows commands.

Set rcon.permission to monitor unless you specifically need connected clients to issue commands — most monitoring bots only need to read. Full setup is covered in admins and BattlEye RCON.

Game#

This is the block you will actually edit.

FieldDefaultNotes
game.nameThe name in the server browser. Make it searchable; players find servers by typing part of the name.
game.passwordemptyJoin password. Empty means public.
game.passwordAdminIn-game admin login password. Change this before you go public.
game.scenarioIdConflict EveronThe mission to load. A GUID-and-path string — see the scenario reference.
game.maxPlayers641–128. Above 64 needs deliberate tuning.
game.visibletruefalse hides the server from the public browser.
game.crossPlatformfalsetrue accepts every platform.
game.supportedPlatformsPLATFORM_PCOnly applies when crossPlatform is false.
game.modsRequiredByDefaulttrueOverrides the default required value for every mod in the list.
game.modsThe modlist. See adding Workshop mods.
game.adminsUp to 20 IdentityIDs or Steam IDs who can elevate without the admin password.

For the platform fields specifically, crossPlatform: true is what you want for a mixed PC/Xbox/PS5 group — see Arma Reforger crossplay, including the PlayStation restriction on modded servers.

Game properties#

Nested under game.gameProperties. These are the gameplay and rendering rules.

FieldDefaultRangeNotes
serverMaxViewDistance1600500–10000The biggest performance lever in the file. Stay at or below ~2500.
serverMinGrassDistance00, or 50–1500 lets clients decide. Values between 1 and 49 are invalid.
networkViewDistance1500500–5000How far entities are streamed to clients. Keep at or below ~2000.
fastValidationtrueLeave enabled on public servers.
battlEyetrueAnti-cheat. Leave enabled on public servers.
disableThirdPersonfalsetrue forces first person. Common on milsim servers.
VONDisableUIfalseHides the voice overlay.
VONDisableDirectSpeechUIfalseHides direct-speech indicators.
VONCanTransmitCrossFactionfalseAllows voice between opposing factions.

The two view-distance values are where most self-inflicted performance problems come from. serverMaxViewDistance at 10000 does not make the game look better for most players — it multiplies what the server has to simulate and stream. Raise it in steps and watch your server frame time.

Operating#

FieldDefaultRangeNotes
lobbyPlayerSynchronisetrueSyncs the lobby player list with the backend. Leave on.
disableCrashReporterfalseLeave off; crash reports are how engine bugs get fixed.
disableServerShutdownfalsetrue keeps the server up if the backend connection drops.
disableAIfalseDisables AI entirely. PvP-only servers gain a lot here.
playerSaveTime120≥1Seconds between player saves. Lower means less rollback on a crash, more disk I/O.
aiLimit-1-1 or ≥0-1 is unlimited. Cap it on busy public servers — 80 or below is a reasonable starting point.
slotReservationTimeout605–300How long a reserved slot is held, in seconds.
joinQueue.maxSize00–500 disables queueing. 20 or below is sensible if you enable it.

A minimal working config#

Everything omitted here takes its default. This is a public, PC-and-console, first-person Conflict server:

{
    "region": "EU",
    "bindPort": 2001,
    "rcon": {
        "port": 19999,
        "password": "changethisvalue",
        "permission": "monitor"
    },
    "game": {
        "name": "Example Milsim - Conflict Everon",
        "password": "",
        "passwordAdmin": "changethisvalue",
        "scenarioId": "{ECC61978EDCC2B5A}Missions/23_Campaign.conf",
        "maxPlayers": 48,
        "visible": true,
        "crossPlatform": true,
        "gameProperties": {
            "serverMaxViewDistance": 1600,
            "networkViewDistance": 1500,
            "battlEye": true,
            "disableThirdPerson": true
        }
    },
    "operating": {
        "aiLimit": 80,
        "playerSaveTime": 120,
        "joinQueue": {
            "maxSize": 20
        }
    }
}

What to change, in order#

If you are setting up for the first time, touch these and nothing else:

  1. game.name — make it findable.
  2. game.passwordAdmin — change it off the default.
  3. game.scenarioId — pick your mission.
  4. game.maxPlayers — match your community, not your ambitions.
  5. game.crossPlatformtrue if anyone is on console.
  6. operating.aiLimit — cap it if you are running Conflict.
  7. rcon.password — only if you want remote administration.

Come back for view distance once you have real players on the server and a frame-time graph to read.

Verify it worked#

  1. Validate the file. Paste it into the config validator — this catches the syntax errors that produce a silent boot failure.
  2. Restart the server and watch the log until the scenario finishes loading. A server still loading does not advertise itself.
  3. Find it in the in-game browser by searching part of game.name.
  4. Join, and confirm the rules you set are in effect — third person blocked, password prompted, platform mix as expected.

If step 3 fails, work through the server browser checklist before changing anything else in the config.

Trusted references#