Free tool
ADS-B message decoder
Paste a Mode S or ADS-B hex string. Every field is shown with the bit range it came from.
One message or a whole log. Any separator works.
Or click an example
Paste a message above, or try one of the examples.
What it reads
- ADS-B broadcasts (DF17 and DF18)
- Callsign, position, altitude, speed, heading, and climb rate. The 24-bit CRC is checked on every message, so you can tell when one picked up an error.
- Radar replies (DF0, 4, 5, 16, 20 and 21)
- Altitude and squawk codes. These messages do not send the aircraft address openly. The address is mixed into the parity field and recovered from it. That leaves nothing to check the message against, so no pass/fail verdict is given. DF11 (the all-call reply) is different: the address is sent in the clear, and the parity carries the interrogator code.
- Why a position takes two messages
- One position message does not contain a position. It holds a CPR index that repeats every few degrees of latitude. An even message and an odd message from the same aircraft together resolve the coordinate. A reference position can also decode a single message. Without either, only the raw index is shown.
Two different zone widths. The overlap gives one answer.
Why is the format like this?
Every field has to fit the same limits: 112 bits, a shared frequency, no handshake, and no retransmission. This article takes one real message apart and explains each design choice.
Read: What’s actually in an ADS-B message?We turn millions of these into prints
The fields in one message are the same ones behind every airport print: position, altitude, and address, collected across millions of broadcasts.
See the airport prints