Article · 23/09/2026
How to add a live player count, a leaderboard and the real map to your Rust server website
Most Rust server websites are a logo, a Discord link and an IP. The three things players actually check — who is online, who is on top and what the map looks like — can all come straight from your own server.
1. Live player count: ask your server directly
Every Rust server answers the same small query the in-game server browser uses: Valve's A2S_INFO, sent over UDP to the server's query port. The answer includes the server name, the map and the current and maximum number of players.
The query port is not the game port. Facepunch's server guide explains that server.queryport is what lets services query your server, that it is UDP, and that if you don't set it, it defaults to 1 + the higher of server.port and rcon.port. On a default 28015/28016 setup that means 28017. If your status widget shows nothing, a wrong or closed query port is the first thing to check.
Browsers cannot send UDP, so the query has to run on a machine you control — your web host or a small VPS — on a timer, writing the result to a JSON file that your page reads. Once a minute is plenty. Two details make it trustworthy: store when the value was measured, and never show an old number as if it were live.
2. Leaderboard: a plugin records, your site displays
Rust does not publish player stats to the web on its own. A plugin (Oxide or Carbon) has to count kills, deaths, playtime or farming on the server and send them somewhere your website can read.
The safe pattern is a push: the plugin uploads the leaderboard on a timer to a small receiver on your web host, which accepts the upload only with a shared secret and writes a JSON file. Your page never talks to the game server, and nobody can post fake stats without the secret.
Decide early what counts. Without rules, leaderboards get farmed: the same friend killed over and over, teammates killing each other, or someone joining for five minutes and topping the board. A time window per victim, ignoring team kills and a minimum playtime solve most of it. And think about privacy: a public leaderboard does not need to show players' SteamIDs.
3. The real map, updated every wipe
A procedural Rust map is defined by two values: server.worldsize and server.seed. With those two numbers, map sites such as RustMaps can render the same island your players are on — the page for a 3500 map with seed 777, for example, is rustmaps.com/map/3500_777.
Monument positions are better read from the server itself than guessed from a seed, especially after game updates or on custom maps. A console/RCON command that returns every monument on the loaded map as JSON lets your site place clickable labels on the image.
The step people forget is the wipe. A new wipe usually means a new seed or a new map, and a website still showing last wipe's island is worse than no map at all. Make updating the map part of your wipe checklist — or automate it, reading the size and seed from the server after it restarts.
4. Steam login, done properly
If players need an account on your site — to link Discord, see their own stats or unlock perks — Steam is the natural login. Valve's Steamworks documentation describes Steam as an OpenID 2.0 provider: a third-party website can use it to get a player's SteamID and use it as the login.
The important part is on the server: verify the answer with Steam instead of trusting the parameters in the return URL, and only accept a return address on your own domain. A Steam login that skips verification lets anyone log in as anyone.
5. Keep it fast and boring
The pages themselves can be almost entirely static: the dynamic parts are small JSON files refreshed on a timer. That keeps the site fast on phones, cheap to host and hard to break — and your game server never takes a hit from website traffic.
How we can help
Everything above runs on the Rust servers we build for. You can buy the pieces as plugins — the Server Status widget, the Web Ranking leaderboard and Map Labels — or have us build the whole website for your server.
Sources
- Creating a server — Rust wiki (Facepunch)
- Server queries (A2S) — Valve Developer Community
- User authentication and ownership (OpenID) — Steamworks documentation
- RustMaps — map for size 3500, seed 777
Want help with this?
Tell us what you need and we will reply with a fixed-price proposal.