MAVLink Packet Decoder
Decode MAVLink 1 and MAVLink 2 hexadecimal packets into payload length, packet sequence, system ID, component ID, message ID, compatibility flags, checksum bytes and MAVLink 2 signature information.
CRC_EXTRA definition is known. Structural packet decoding does
not require guessing a dialect or message definition.
—
—
—
What Is a MAVLink Packet Decoder?
A MAVLink Packet Decoder converts raw MAVLink hexadecimal bytes into the individual fields of the MAVLink packet structure. MAVLink is a lightweight messaging protocol commonly used between unmanned vehicles, autopilots, ground-control software, companion computers and telemetry devices.
The decoder first checks the packet’s magic byte to determine whether the message uses MAVLink 1 or MAVLink 2. It then applies the correct header layout and separates the payload, checksum and optional MAVLink 2 signature.
MAVLink 1 Packet Format
MAVLink 1 packets begin with the hexadecimal magic byte FE. The packet contains a six-byte header when the magic byte is included, followed by the message payload and a two-byte checksum.
MAVLink 1:
Byte 0 Magic = FE
Byte 1 Payload Length
Byte 2 Packet Sequence
Byte 3 System ID
Byte 4 Component ID
Byte 5 Message ID
... Payload
Last 2 ChecksumThe MAVLink 1 Message ID occupies one byte, allowing the packet structure to represent message IDs from 0 through 255.
MAVLink 2 Packet Format
MAVLink 2 uses the magic byte FD and expands the packet header to support compatibility flags, incompatibility flags and a 24-bit Message ID. The complete header occupies ten bytes when the magic byte is counted.
MAVLink 2:
Byte 0 Magic = FD
Byte 1 Payload Length
Byte 2 Incompatibility Flags
Byte 3 Compatibility Flags
Byte 4 Packet Sequence
Byte 5 System ID
Byte 6 Component ID
Bytes 7–9 Message ID, little-endian
... Payload
Next 2 Checksum
Optional 13-byte SignatureMAVLink 1 vs MAVLink 2
| Feature | MAVLink 1 | MAVLink 2 |
|---|---|---|
| Magic Byte | 0xFE | 0xFD |
| Message ID | 8 bits | 24 bits |
| Compatibility Flags | No | Yes |
| Incompatibility Flags | No | Yes |
| Packet Signing | No protocol signature | Supported |
| Checksum | 2 bytes | 2 bytes |
MAVLink Magic Byte
The first byte provides an immediate indication of the MAVLink framing version. A MAVLink 1 packet begins with 0xFE, while a MAVLink 2 packet begins with 0xFD.
FE → MAVLink 1
FD → MAVLink 2If neither value appears at the beginning of the supplied packet, this calculator rejects the input rather than attempting to interpret unrelated bytes as a MAVLink message.
MAVLink Payload Length
The byte immediately following the magic byte specifies the number of payload bytes. The decoder uses this value to determine where the payload ends and where the two checksum bytes begin.
This also makes the payload-length field useful for detecting incomplete or overlong packet input. If the number of supplied bytes does not agree with the packet structure, the calculator reports the mismatch.
Packet Sequence Number
MAVLink packets contain an eight-bit sequence number. A sender increments the sequence as packets are transmitted, allowing receiving software to observe gaps that may indicate packet loss.
Sequence range:
0–255
After 255:
sequence wraps to 0System ID and Component ID
The System ID identifies a MAVLink system, while the Component ID identifies a component associated with that system. A vehicle can contain several MAVLink components even though they belong to the same system.
Example structure:
System
├── Autopilot component
├── Camera component
├── Gimbal component
└── Companion-computer componentThe decoder reports the numeric IDs contained in the packet. It does not assign a device identity solely from those values because actual component use depends on the MAVLink environment and dialect.
MAVLink Message ID
The Message ID identifies the definition used to interpret the payload. MAVLink 1 carries an eight-bit Message ID, while MAVLink 2 expands this field to 24 bits.
In MAVLink 2 the three Message ID bytes are transmitted in little-endian order. The decoder therefore combines byte 7 as the least-significant byte, byte 8 as the middle byte and byte 9 as the most-significant byte.
MAVLink 2 Message ID bytes:
01 02 03
Message ID =
0x03 02 01
= 0x030201MAVLink Checksum
Both MAVLink 1 and MAVLink 2 carry a two-byte checksum after the payload. The MAVLink checksum calculation also incorporates a message-specific CRC_EXTRA byte from the message definition.
That detail matters when building a general-purpose packet decoder. A raw packet reveals the transmitted checksum bytes, but reliable verification requires knowing the exact message definition or MAVLink dialect associated with its Message ID.
For this reason, the calculator extracts and displays the checksum but does not falsely report that it is valid merely because the packet has the expected length.
MAVLink 2 Incompatibility Flags
MAVLink 2 includes an incompatibility-flags byte. A receiver that does not understand an enabled incompatibility feature should not simply process the packet as if that feature were absent.
Bit 0 indicates that a MAVLink 2 packet contains the optional packet signature. When this bit is set, thirteen signature bytes follow the checksum.
Incompatibility Flags:
Bit 0 = Signed packet
Example:
01
→ signature flag set
→ expect 13 bytes after checksumMAVLink 2 Packet Signature
A signed MAVLink 2 packet appends a 13-byte signature block after its normal checksum. This block consists of a link identifier, a six-byte timestamp and a six-byte signature value.
MAVLink 2 Signature = 13 bytes
1 byte
Link ID
6 bytes
Timestamp
6 bytes
SignatureThis calculator separates those fields structurally. Cryptographic authentication requires the signing key and is therefore outside the scope of a schema-free packet decoder.
Why Message Payloads Need a MAVLink Dialect
The bytes inside a MAVLink payload do not independently describe their field names, types, units or scaling. Those details come from MAVLink XML message definitions such as a common or application-specific dialect.
For example, a four-byte sequence might represent an integer, floating-point number, bitmask or part of another structured value depending on the Message ID. Automatically guessing a type from the raw bytes could therefore produce misleading results.
The tool consequently provides reliable packet framing information first and keeps the original payload visible for further message-specific analysis.
How to Decode a MAVLink Hex Packet
Paste the complete hexadecimal MAVLink packet into the input field. The bytes can be separated by spaces, commas, colons or hyphens, or supplied as one continuous hexadecimal string.
Click Decode MAVLink Packet. The calculator determines the MAVLink version from the magic byte, validates the packet length, extracts all header fields and separates the payload and checksum. For a signed MAVLink 2 packet, the thirteen-byte signature is decoded separately.
MAVLink Packet Decoder FAQs
What is the MAVLink 1 magic byte?
What is the MAVLink 2 magic byte?
Can this decoder automatically detect MAVLink 1 and 2?
How large is the MAVLink 1 Message ID?
How large is the MAVLink 2 Message ID?
Why doesn’t the decoder always verify the checksum?
How long is a MAVLink 2 signature?
How do I know whether a MAVLink 2 packet is signed?
Can the tool decode proprietary MAVLink messages?
Can I enter continuous hexadecimal data?
Decode MAVLink 1 and MAVLink 2 Packets
Inspect MAVLink framing, message identifiers, sequence numbers, system and component IDs, payload boundaries, checksum bytes and MAVLink 2 signatures directly from hexadecimal packet data.