MAV Telemetry Protocol Utility

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.

✓ MAVLink 1 ✓ MAVLink 2 ✓ Message ID ✓ System ID ✓ Component ID ✓ Signature
MAV
MAVLink Packet Decode
● Ready
Enter one complete MAVLink packet. Spaces, commas, colons and hyphens are accepted. Continuous hexadecimal input and 0x-prefixed bytes are supported.
Checksum scope: the decoder extracts the two transmitted checksum bytes, but it does not label the checksum valid or invalid unless the message-specific MAVLink CRC_EXTRA definition is known. Structural packet decoding does not require guessing a dialect or message definition.
MAVLink Packet Decode Result Decoded
Packet Structure
Version
Magic Byte
Payload Length
Sequence
System ID
Component ID
Message ID
Checksum
Incompat Flags
Compat Flags
Signed
Total Bytes
Payload Bytes
MAVLink 2 Signature
Byte-Level Packet Breakdown

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 Checksum

The 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 Signature

MAVLink 1 vs MAVLink 2

Feature MAVLink 1 MAVLink 2
Magic Byte0xFE0xFD
Message ID8 bits24 bits
Compatibility FlagsNoYes
Incompatibility FlagsNoYes
Packet SigningNo protocol signatureSupported
Checksum2 bytes2 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 2

If 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 0

System 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 component

The 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 = 0x030201

MAVLink 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 checksum

MAVLink 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 Signature

This 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?
MAVLink 1 packets use hexadecimal 0xFE as their framing magic byte.
What is the MAVLink 2 magic byte?
MAVLink 2 packets use hexadecimal 0xFD.
Can this decoder automatically detect MAVLink 1 and 2?
Yes. It checks the first packet byte and applies the appropriate MAVLink 1 or MAVLink 2 structure.
How large is the MAVLink 1 Message ID?
MAVLink 1 contains a one-byte, or eight-bit, Message ID.
How large is the MAVLink 2 Message ID?
MAVLink 2 uses a three-byte, or 24-bit, Message ID.
Why doesn’t the decoder always verify the checksum?
MAVLink checksum verification requires the CRC_EXTRA value associated with the specific message definition. That value cannot be safely derived from arbitrary packet bytes alone.
How long is a MAVLink 2 signature?
The optional MAVLink 2 packet signature occupies 13 bytes.
How do I know whether a MAVLink 2 packet is signed?
Bit 0 of the incompatibility-flags byte indicates the presence of the 13-byte signature block.
Can the tool decode proprietary MAVLink messages?
It can decode their packet framing and Message ID, but application payload fields require the corresponding MAVLink dialect or message definition.
Can I enter continuous hexadecimal data?
Yes. Continuous hexadecimal input and common byte separators are supported.

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.

Scroll to Top