KnowledgeSuperTuxKart

SuperTuxKart Server config.xml Explained (All Key Options)

What each key SuperTuxKart server config.xml option does: server-mode numbers, difficulty, players, password, voting, owner-less, ranked and MOTD.

Updated Oct 7, 2026 · 8 min read

On this page

A SuperTuxKart server keeps its settings in the XML file passed with --server-config (often config.xml or server_config.xml), a <server-config version="6"> file with one <option value="..."/> line per setting. The options that shape a lobby most are server-mode, server-difficulty, server-max-players, private-server-password, track-voting, owner-less and motd. Edit values only while the server is stopped, keep the XML valid, and remember that command line options such as --mode or --max-players override the file at every start.

This walk through uses the file format from SuperTuxKart 1.5 as documented in the official NETWORKING.md.

Before you edit: two ways to lose your changes

Broken XML gets replaced. If the server cannot parse the file, it logs Could not read server config file '...'. A new file will be created. and writes a fresh one with defaults over yours. A missing quote or a stray < is enough. Keep a copy before editing.

Old versions get replaced too. If the version attribute is outside what the binary accepts, it logs Your config file was not compatible, so it was deleted and a new one will be created. Version 6 is current for the 1.x releases.

The command line wins. The server loads the XML first, then applies --lan-server, --wan-server, --mode, --difficulty, --max-players, --motd, --port and the other flags on top. If a value in the file seems ignored, check the start command.

Identity and connection

<server-name value="STK Server" />
<server-port value="0" />
<wan-server value="true" />
<private-server-password value="" />
<motd value="" />
  • server-name: the lobby name players see. --lan-server=Name or --wan-server=Name replaces it. Encode non ASCII characters as XML entities.
  • server-port: 0 means the default from the game data, which is UDP 2759. If the port cannot be bound, STK switches to a random port on its own.
  • wan-server: true registers the server with the online list and needs a saved STK account. --lan-server forces it to false.
  • private-server-password: empty means public. Players are asked for it when they join.
  • motd: message in the lobby. It accepts text or the name of a .txt file, which is handy for a list of rules.

server-mode numbers

This is the setting that trips people up, because the XML numbers differ from the --mode numbers on the command line.

server-mode (XML) Mode --mode (command line)
0 Normal race, grand prix use --network-gp
1 Time trial, grand prix use --network-gp
3 Normal race 0
4 Time trial 1
6 Soccer 3
7 Free for all (battle) 2
8 Capture the flag 5

Follow the Leader is --mode=4 on the command line, but it has no server-mode value, so starting a server with it leaves server-mode at whatever the XML says (normal race by default). Grand prix servers do not let new players join and wait for the running game, which is why most public servers use mode 3.

Related options:

Option Default What it does
server-difficulty 0 0 Beginner, 1 Intermediate, 2 Expert, 3 SuperTux
gp-track-count 3 Tracks per grand prix
soccer-goal-target false true = first to a goal count, false = time limit
server-configurable false Lets the lobby owner change mode and difficulty in the lobby GUI; not for owner-less or GP servers, and changes are not saved to the file

A SuperTuxKart race lobby moment on track

Players and lobby control

Option Default What it does
server-max-players 8 Player limit; the file warns more than 8 can hurt performance
owner-less false No owner: games start on a timer and nobody can kick
start-game-counter 60 Seconds before an owner-less server moves to kart selection
min-start-game-players 2 Players needed before that countdown starts
team-choosing true Players pick red or blue in soccer and CTF
live-spectate true Join or spectate a game in progress (FFA, CTF, soccer only)
strict-players false Blocks duplicate online IDs and split screen players
kick-idle-player-seconds 60 Kick players idle mid race; always off on LAN servers
chat true false ignores all chat
chat-consecutive-interval 8 Basic chat spam limit, negative turns it off

For a group of friends, keep an owner so someone can start races and kick. For a server that runs while you sleep, set owner-less to true so it never waits on one person.

Track voting and game length

Option Default What it does
track-voting true Players vote for the track; false picks one at random
voting-timeout 30 Seconds for kart selection and track voting
auto-end false Ends a race some time after the first player finishes
auto-game-time-ratio -1 Scales laps and soccer length from the track default; -1 = off
official-karts-threshold 1 Share of official karts a client must have
official-tracks-threshold 0.7 Share of official tracks a client must have

The two thresholds decide who gets in. A client with fewer official tracks than the server times the threshold is refused with Connection refused: Game data is incompatible. The Android build ships without some official tracks, so raising official-tracks-threshold toward 1 locks Android players out. Add-on tracks are a separate matter: a track can only be voted if the server has it installed, and each player needs it from the add-ons menu.

Battle and capture the flag limits

Option Default Mode
hit-limit 20 Free for all, 0 = no limit
time-limit-ffa 360 Free for all, seconds
capture-limit 5 CTF, 0 = no limit
time-limit-ctf 600 CTF, seconds
flag-return-timeout 20 Seconds before a dropped flag returns home
flag-deactivated-time 3 Seconds a flag is inactive after a capture or return

Validation, ranked play and network

Option Default What it does
validating-player true WAN servers check players against the STK online service; LAN never does
validation-timeout 20 Seconds allowed for that check
ranked false Submits ranking for race games; needs permission from the STK team and forces validation, auto-end, strict-players and owner-less on
firewalled-server true STUN code for servers behind a router; false saves resources on a server with an open port
ipv6-connection true Dual stack if the server has a public IPv6 address
max-ping 300 Ping limit in ms
jitter-tolerance 100 Allowed jitter in ms
kick-high-ping-players false Kick anyone over max-ping
high-ping-workaround true Keeps high ping players playable; disables the kick above
state-frequency 10 Updates sent per second; leave the default
enable-console false Network console, same as --network-console

Leave ranked alone unless the SuperTuxKart team has approved your server. A WAN server with ranked on and no permission stops at startup with You don't have permission to host a ranked server.

Database options

sql-management, database-file, the *-ban-table options and the geolocation tables only matter if the server was built with SQLite and you created the tables described in NETWORKING.md. With them you get persistent IP and online ID bans, player reports and play time stats. Without SQLite, keep sql-management false and use kickban in the network console for quick bans.

A sample friends lobby

<server-mode value="6" />
<server-difficulty value="2" />
<server-max-players value="10" />
<private-server-password value="tuxnight" />
<motd value="Soccer every Friday. Be nice." />
<owner-less value="false" />
<track-voting value="true" />
<soccer-goal-target value="true" />

On a GamezServers server

On a SuperTuxKart server from GamezServers, the panel's Server Name, Mode, Difficulty, Max Players and Message of the Day are passed on the command line, so they override the same lines in the XML; change those in the panel. The panel Mode uses the command line numbers, 0 to 5, and as explained above Follow the Leader (4) leaves server-mode as the XML has it. The Config File Name setting picks which XML file loads, and the file itself is in the file manager for the password, voting, limits and everything else above. The server runs in LAN mode, so wan-server is always off and players join with Enter server address. Stop the server, edit, save, start, and check the live console for the "new file will be created" line in case the XML broke.

Still setting up? Start with how to host a SuperTuxKart server, or see why a server may not appear in the online list.

Karts racing on a colorful SuperTuxKart track

FAQ

Where is the SuperTuxKart server config file?

Wherever --server-config points. A plain file name is created in the folder the server was started from. Logs go to the STK config folder as <name>.log.

How do I add a password to my SuperTuxKart server?

Set private-server-password in the XML or start with --server-password=secret. Leave it empty for a public server.

Why did my config.xml reset to defaults?

The XML was invalid or had an unsupported version, so the server replaced it. Check the log for "A new file will be created" and fix the syntax in your backup.

How many players can a SuperTuxKart server hold?

You set it with server-max-players. The default is 8, and the file itself warns that going higher can affect performance on weaker hardware.

What is an owner-less server?

A lobby with no owner: games start automatically after start-game-counter once enough players are in, and nobody can kick. It suits always on public servers.

Skip the setup. Your own SuperTuxKart server.

$1.49USD first month

Then $2.99/mo. Just trying it? $0.75 for 3 days

Keep reading