Developers and integrators · Free decoder

Tracker frame decoder for JT808 and GT06

Paste the hex your tracker sends. See where each frame starts and ends, every header field, the checksum or CRC result, and the position, speed and alarm bits. Calculations run in your browser. Inputs are sent only if you ask for the emailed report.

JT808 frames start and end with 7E. GT06 frames start with 78 78 or 79 79.

One frame per line, or several frames in one line. Spaces, commas and 0x prefixes are fine. Up to 20,000 bytes. The sample mixes JT808 and GT06 frames. Replace it with your own capture.

Load a sample
How the checksum works
JT808: check = byte1 XOR byte2 XOR ... XOR last body byte GT06: CRC-16/X25 over length, protocol number, information, serial

JT808 compares one XOR byte. GT06 compares a two-byte CRC-16/X25 value. A wrong result means a byte changed on the way, or the frame was edited after it was captured.

Decoded framesCheck verified

Keep a record of this capture

A report with every frame, its check result and the decoded fields.

Decode report

Get every frame, its check and its fields in one report

  • Every frame with its check result
  • Header, position, speed and alarm fields
  • Corrected frames where a check was wrong
  • Checksum and CRC candidates side by side
  • The scaling values you used

What does a tracker frame look like?

A tracker sends small binary packets, called frames, over TCP or UDP. Each protocol marks the start and end of a frame, puts a header in front, and adds a check value so the server can spot damage.

7E0002 0000 007261019004 0378 FF7E

  • Start and end flag 7E
  • Header: message ID, attributes, phone number, serial
  • Body (empty for a heartbeat)
  • XOR check byte

In a JT808 frame every byte between the two 7E flags is covered by one XOR byte. A GT06 frame uses a CRC instead, so a single flipped bit is almost always caught.

How is a JT808 frame built?

Read the parts in this order. Sizes are in bytes.

JT808 frame parts
PartSizeWhat it holds
Start flag1Always 7E.
Message ID20200 is a location report, 0002 a heartbeat.
Body attributes2Bits 0 to 9 body length, bits 10 to 12 encryption, bit 13 sub-package, bit 14 version flag.
Protocol version1Only when bit 14 is set (2019 style).
Phone number6 (10 in 2019 style)The terminal number as BCD digits.
Serial number2Counts up with every message the terminal sends.
Sub-package fields4Total parts and part number. Only when bit 13 is set.
Body0 to 1023Depends on the message ID. The length has 10 bits.
Check byte1XOR of every byte from the message ID to the last body byte.
End flag1Always 7E.

Inside a frame, a 7E byte is written as 7D 02 and a 7D byte as 7D 01, so the flag never appears in the middle. The decoder undoes this first, then calculates the XOR on the real bytes.

What is inside a location report?

Message 0200 carries a fixed block of 28 bytes. Optional items follow it.

Location report body
FieldSizeReading
Alarm flags4One bit per alarm. Bit names are in the tool and can be edited in the page settings.
Status flags4Bit 0 ACC on, bit 1 positioned, bit 2 south latitude, bit 3 west longitude.
Latitude4Degrees × 1,000,000 typical
Longitude4Degrees × 1,000,000 typical
Altitude2Meters.
Speed2Raw ÷ 10 = km/h typical
Direction2Degrees from north, 0 to 359.
Time6BCD, YYMMDDhhmmss, on the device clock.
Additional itemsvariableRepeats of item ID, length, value. 01 mileage, 02 fuel, 03 recorder speed, 30 signal, 31 satellites, 64 ADAS, 65 DSM.

How is a GT06 frame built?

GT06 frames are shorter and end with a CRC and two stop bytes.

78 780D01012345678901234500018CDD0D 0A

  • Start bits 78 78 and stop bits 0D 0A
  • Length and serial number
  • Protocol number 01: login
  • IMEI as BCD digits
  • CRC-16/X25
GT06 frame parts
PartSizeWhat it holds
Start bits278 78. Long frames use 79 79 and a 2-byte length.
Length1Bytes from the protocol number to the CRC.
Protocol number101 login, 12 location, 13 status, 16 alarm, 80 server command.
InformationvariableDepends on the protocol number.
Serial number2Counts up. The server repeats it in its reply.
CRC2CRC-16/X25 over the length, protocol number, information and serial number.
Stop bits20D 0A.

In a location packet the position is a raw number divided by 1,800,000 (typical). Bits 0 to 9 of the course and status word are the course, bit 10 set means north, bit 11 set means west, and bit 12 set means the GPS is fixed.

Which checksum or CRC does a device use?

Makers do not always name the variant. The Checksum and CRC tab tries all of these on your bytes and marks the one that matches the value in the frame.

Algorithms in the tool
AlgorithmBitsPolynomialStart valueReflectedFinal XORCheck value
XOR-88-----
SUM-88-----
CRC-880700no00F4
CRC-8/MAXIM83100yes00A1
CRC-8/ROHC807FFyes00D0
CRC-8/EGTS831FFno00F7
CRC-16/X25161021FFFFyesFFFF906E
CRC-16/IBM1680050000yes0000BB3D
CRC-16/MODBUS168005FFFFyes00004B37
CRC-16/CCITT-FALSE161021FFFFno000029B1
CRC-16/KERMIT1610210000yes00002189
CRC-16/XMODEM1610210000no000031C3
CRC-323204C11DB7FFFFFFFFyesFFFFFFFFCBF43926

The check value is the result for the ASCII text 123456789. If your tool gives the same number, it uses the same algorithm. XOR-8 and SUM-8 have no polynomial: XOR combines the bytes with exclusive-or, SUM adds them and keeps the last 8 bits.

Worked example

Two short frames. Paste them into the decoder to follow the steps.

7E 00 02 00 00 00 72 61 01 90 04 03 78 FF 7E

  • Message ID 0002 is a heartbeat. The attributes 0000 say the body is empty and not encrypted.
  • The phone number is the BCD digits 007261019004 and the serial number is 0378, which is 888.
  • XOR of the 12 header bytes is FF, and the frame carries FF. The check passes.

78 78 0D 01 01 23 45 67 89 01 23 45 00 01 8C DD 0D 0A

  • The length byte 0D is 13: protocol number, 8 IMEI bytes, serial number and CRC add up to 13.
  • Protocol number 01 is a login. The 8 bytes 01 23 45 67 89 01 23 45 are the IMEI with a leading zero: 123456789012345.
  • CRC-16/X25 over 0D 01 01 23 45 67 89 01 23 45 00 01 is 8CDD. The packet carries 8CDD, so it passes.

What usually goes wrong?

  • Check wrong on every frame. The decoder reads the wrong protocol, or the bytes include a log time stamp or a line prefix. Set the protocol and remove the prefix.
  • Check wrong on one frame. A byte changed on the way, or someone edited the frame by hand. Use the corrected frame the decoder shows.
  • Frame cut. A capture tool may split a long frame in two. Join the lines before you decode.
  • No CRC variant matches. Change the bytes to skip first. Many devices cover only part of the frame. If nothing matches, ask the device maker for the parameters.
  • A position is off by a factor of 10. The device uses another scaling. Change the divisor in the Scaling tab.

Assumptions and limits

  • Message names, bit tables and scaling follow public protocol documents. They are typical, not a copy of the standard. Check them against the edition your device uses.
  • The decoder reads message 0200, 0704, 0100, 0102, 0002, 8001 and 8100 in JT808, and protocol numbers 01, 12 and 13 in GT06. Every other message is listed and checked, and its body is shown raw.
  • Vendor extension blocks differ between makers. The tool shows an unknown block as raw bytes and never guesses its meaning.
  • A passing check shows that a frame arrived intact. It does not show that the position is accurate or that the device follows a standard.
  • The calculations run in your browser. Pasted bytes and inputs are sent to our server, and kept for up to 45 days, only if you ask for the emailed report. A share link you copy yourself also carries the bytes when they are short.
  • The decoder does not describe the protocol of a Tracom model. Paste a frame from any device and read it with the published layouts.

Sources

Last checked 3 November 2026. The 7E flags, the 7D 02 and 7D 01 escaping and the XOR check byte match the official draft above. The CRC check values and the two worked examples were recalculated for this page. The final JT/T 808-2019 text, the message tables and the GT06 layout, which has no official standard, are still to verify against the edition your device uses.

Related Tracom solution

See exactly what your device sends, then trust the data after it

Tracom designs devices that record second by second and keep deciding on the vehicle when there is no network. Use this decoder to read what a tracker sends, then compare it with what your platform stores.

  • Second-by-second data. Records how the vehicle moves in fine detail.
  • No internet? No problem. The device keeps deciding on the vehicle without a connection.
  • SCMS portal. Manages device settings and configuration files in one place.
  • Over-the-air updates. Bring new firmware to devices in the field.
Questions

Questions about tracker frames and checksums

Building an integration? Contact Tracom.

How do I check a JT808 checksum by hand?

Remove the two 7E flags and undo the escapes. XOR every byte from the message ID to the last body byte, one after another, starting from zero. The result must equal the byte before the closing 7E.

Why does my GT06 CRC not match?

Most often the range is wrong. The CRC covers the length byte up to the serial number, not the start bits and not the CRC itself. Set the skip values so that exactly those bytes are checked.

Does the tool know the protocol of a Tracom ST100 or M1N?

No. It reads JT808 and GT06 as published and does not describe the protocol of a Tracom model. Paste a frame from any device. Ask Tracom which protocol your model uses before you build on it.

Is the position scaling the same on every device?

Usually, but not always. JT808 normally uses degrees × 1,000,000 and GT06 uses minutes × 30,000. Both are inputs in the Scaling tab, so you can change them when a position looks wrong.

Is my data sent anywhere?

Only if you ask for the emailed report. The bytes are parsed in your browser. If you request the report or the CSV, the bytes and inputs are sent to our server with your name and email, and kept for up to 45 days.

What is Tracom's role here?

Tracom makes tracking and video hardware. The decoder is a reading aid. A passing check shows a frame arrived intact, not that a device follows a standard or that its data is right.

Related tools and templates

Keep going with the integration

Get the report

Enter your details and we will email you the file.

Use your real name so the file arrives addressed to you. Don't worry, we won't flood you with emails or calls.

Scroll to Top