The Status state is reached when a client sends a Handshake with Next State = 1. It implements the multiplayer server-list "ping": the client requests a JSON description of the server (MOTD, player counts, version, favicon) and optionally a round-trip latency measurement. After the latency exchange the connection is closed by the client.
See Data Types for primitive encodings and Text Component for the structure of the description field.
| ID | Name | Direction |
|---|---|---|
0x00 |
Status Request | Server-bound |
0x01 |
Ping Request | Server-bound |
0x00 |
Status Response | Client-bound |
0x01 |
Pong Response | Client-bound |
Packet ID: 0x00 · State: Status · Bound To: Server
This packet has no fields.
Semantics. Sent first by the client after entering the Status state. The server replies with exactly one Status Response. Sending more than one Status Request on the same connection is a protocol error.
Packet ID: 0x01 · State: Status · Bound To: Server
| Field | Type | Notes |
|---|---|---|
| Payload | Long | An opaque value chosen by the client (typically the current Unix time in milliseconds). The server must echo it back unmodified. |
Semantics. Sent by the client after it has received the Status Response. The server immediately replies with Pong Response carrying the same payload, which lets the client compute round-trip latency. The connection is closed by the client after the pong arrives.
Packet ID: 0x00 · State: Status · Bound To: Client
| Field | Type | Notes |
|---|---|---|
| JSON Response | String (32767) | A UTF-8 JSON document describing the server. See the schema below. |
JSON schema. The string is a JSON object with the following optional fields:
| Field | Type | Notes |
|---|---|---|
description |
Text Component (JSON form) | The MOTD shown in the server list. Defaults to an empty component if omitted. |
players |
Object | { "max": int, "online": int, "sample": [{ "name": String, "id": UUID-String }] }. The optional sample populates the hover tooltip. |
version |
Object | { "name": String, "protocol": int }. protocol is the server's wire version (775 for 26.1.2); the client compares it against its own to decide whether to render an "Outdated" / "Incompatible" badge. |
favicon |
String | A 64×64 PNG icon encoded as data:image/png;base64,…. |
enforcesSecureChat |
Boolean | When true, the server requires Mojang-signed chat messages. Vanilla 1.19+ clients display a warning if the user joins an enforcesSecureChat=false server while their profile is signed-in. Defaults to false. |
Semantics. Sent in reply to Status Request. Only one is sent per connection.
Packet ID: 0x01 · State: Status · Bound To: Client
| Field | Type | Notes |
|---|---|---|
| Payload | Long | The exact value received in Ping Request. |
Semantics. Sent in reply to a Ping Request. Implementations must not modify the payload — the client uses it both to compute latency and to correlate the response.