Official badge vs your custom server list

Why adding an “official” tag on your dedicated server may not show as official in the client, and what actually controls it when you use your own public/serverlist link.

1. Two different ideas of “official”

A — What the server list API returns (what the patched client uses)

The in-game server browser that calls …/public/serverlist builds each row from JSON. The game expects a per-server field for “is this row official?” (in metadata this appears as is_official).

If that field is missing, false, or wrongly named, the client will not show the official treatment — even if your Rust server “feels” official to you.

B — What you set only on the dedicated server

Hostname, Steam tags, server description, or the convar server.official do not automatically become “official” in the custom HTTP list unless something copies that into the JSON your list API returns.

Arab / Alkad aren’t special magic: their backend decides which rows include is_official (or equivalent). Your setup must do the same.

Takeaway: For your own list, the HTTP API response is the source of truth for what the client displays, not a tag alone on the game server.

2. Why “I added an official tag” often does nothing

What people tryWhy the client still doesn’t show official
Tag in server name / description onlyThe HTTP server list does not use your name for “official”; it uses API fields.
Set something on RustDedicated onlyUnless your list service reads that and sets is_official in JSON, the client never sees it.
API lists servers but no is_official: trueRows are treated as non-official.
Wrong JSON property name or typeIL2CPP expects exact names; wrong name ⇒ ignored.

3. Client vs server — what to do

Client (patched to your URL)

Usually nothing extra for “official” beyond calling your public/serverlist and parsing the response. The URL patch is enough for routing.

Your backend (the important part)

  1. Server list API: For each row returned from public/serverlist, set the field the client expects — typically is_official: true for servers you want marked official. Confirm the exact property name by capturing a real response from a known-good client or reverse engineering; it must match the game.
  2. Optional pipeline: If you want “I marked this in my panel” to show in-game, your service must map Steam IP/query identity (or your own IDs) to those rows and set is_official when building JSON. A tag on the Rust process only helps if your list backend reads it and maps it to that field.

server.official on the dedicated server

That convar is oriented toward Facepunch’s own server rules. For a custom server list, your API JSON is what drives the browser UI for “official” in most flows. Do not assume server.official alone will make your custom list show the badge unless you have verified the client still ties that to the list (often it does not for third-party lists).

4. Why Arab / Alkad can show official and yours might not

They control their public/serverlist implementation and choose which rows include is_official. You are building the same kind of thing: you must return is_official (or the exact field name) for the servers you want highlighted.

5. Checklist for later

  1. Capture a sample public/serverlist JSON (from an environment where you are allowed to) and mirror the structure, especially the official flag field.
  2. In your API, set that field to true only for rows you intend.
  3. If it still fails, investigate manifest / official-servers flows (client errors mention manifest); some builds may need more than the plain list endpoint.
  4. Do not label servers as Facepunch “official” if they are not — misleading and against typical platform rules.

Related pages