NMEA Sentence Checksum Validator
Use the free NMEA Sentence Checksum Validator to verify an NMEA 0183 sentence, compare the transmitted checksum with the checksum calculated from the sentence data, and generate a corrected sentence when the checksum is missing or incorrect.
-
-
-
What Is an NMEA Sentence Checksum Validator?
An NMEA Sentence Checksum Validator checks whether the checksum attached to an NMEA 0183 sentence matches the checksum calculated from its message content. NMEA 0183 is widely used by GPS and GNSS receivers, marine electronics, navigation equipment, sensors, AIS devices, autopilots, chart plotters, and embedded positioning systems.
A checksum helps a receiving device detect accidental changes in the text sentence caused by serial communication errors, electrical noise, corrupted logs, software bugs, or damaged data.
This validator performs the calculation directly in your browser. It shows the provided checksum, independently calculated checksum, sentence talker ID, message type, and a normalized sentence containing the correct checksum.
How to Validate an NMEA 0183 Checksum
Enter a complete sentence beginning with $ or
!.
A transmitted checksum normally appears after the asterisk as two hexadecimal characters.
The tool XORs the characters that belong to the NMEA checksum calculation.
If the supplied and calculated hexadecimal values are identical, the checksum passes validation.
When the checksum is incorrect or missing, the validator generates a normalized sentence containing the calculated checksum.
How Is an NMEA Checksum Calculated?
An NMEA 0183 checksum is an 8-bit XOR value. The calculation starts with zero and applies the exclusive-OR operation to the ASCII value of each character between the sentence start delimiter and the checksum delimiter.
The initial $ or ! is not included. The
* checksum delimiter and the two checksum characters following it
are also excluded.
This XOR method is the standard checksum mechanism used by NMEA 0183 sentences. :contentReference[oaicite:2]{index=2}
NMEA Checksum Example
Consider this widely used GGA sentence:
The result matches the standard XOR calculation for this example. :contentReference[oaicite:3]{index=3}
NMEA Sentence Structure
A conventional NMEA 0183 data sentence is a printable text message divided into fields. Understanding the structure makes checksum troubleshooting much easier.
| Part | Example | Purpose |
|---|---|---|
| Start delimiter | $ |
Marks the beginning of a conventional NMEA sentence. |
| Talker ID | GP |
Identifies the originating system or talker. |
| Sentence formatter | GGA |
Identifies the message type. |
| Fields | ,123519,... |
Contain the actual sentence data. |
| Checksum delimiter | * |
Separates sentence data from the checksum. |
| Checksum | 47 |
Two hexadecimal characters representing the XOR result. |
What Does the NMEA Talker ID Mean?
The characters near the beginning of a conventional NMEA sentence commonly
identify the talker or originating system. For example, a sentence beginning
with $GPGGA contains the talker ID GP and the
sentence formatter GGA.
Modern GNSS equipment may use different talker identifiers depending on which satellite constellation or combined GNSS solution generated the sentence. The checksum calculation itself does not change because the talker characters are simply part of the text being XORed.
What Is the NMEA Sentence Type?
After the talker identifier, the formatter identifies the purpose of the sentence. Common GPS and navigation logs contain message types such as GGA, RMC, GLL, VTG, GSA, and GSV.
GGA
Carries fix-related information such as position, fix quality, satellite count, HDOP, and altitude.
RMC
Provides minimum recommended navigation information including position, speed, course, and date.
GLL
Contains geographic position information including latitude and longitude.
VTG
Reports course over ground and ground speed information.
Why Does an NMEA Checksum Fail?
A failed checksum means the value calculated from the sentence content differs from the checksum transmitted after the asterisk. Several problems can cause this.
Modified Character
Changing even one character normally changes the XOR checksum.
Missing Character
A lost comma, digit, decimal point, direction letter, or other field character affects the calculation.
Serial Noise
Communication noise or framing problems can corrupt characters received from GNSS or marine equipment.
Incorrect Logging
Software may alter, truncate, or reconstruct the sentence incorrectly before saving it.
What If an NMEA Sentence Has No Checksum?
When the sentence contains no *XX checksum field, there is no
transmitted checksum to compare against. The validator therefore calculates
the checksum from the available message and reports that the original sentence
has no checksum.
It also generates a corrected form by appending an asterisk and the calculated two-digit hexadecimal checksum.
NMEA Checksum for AIS Sentences
NMEA encapsulation sentences can begin with an exclamation mark rather than a
dollar sign. A common example is AIS data beginning with identifiers such as
!AIVDM.
The same checksum concept applies: XOR the characters after the start delimiter
and before the asterisk. The validator accepts both $ and
! starting delimiters.
NMEA message structure documentation shows both conventional dollar-sign sentences and exclamation-mark encapsulation sentences. :contentReference[oaicite:4]{index=4}
NMEA Checksum vs CRC
The NMEA 0183 checksum is often casually called a CRC, but mathematically the standard NMEA sentence checksum is a simple 8-bit XOR checksum rather than a polynomial cyclic redundancy check such as CRC-16 or CRC-32.
That distinction matters when implementing a receiver. Applying a CRC polynomial algorithm to a normal NMEA 0183 sentence will not reproduce the two-digit checksum after the asterisk.
Common NMEA Checksum Validation Mistakes
Do not XOR the initial $ character.
Stop the calculation immediately before *.
The hexadecimal checksum text itself is not part of the XOR input.
Commas are actual characters in the sentence and are included in the calculation.
ASCII values differ between uppercase and lowercase letters, so capitalization can change the checksum.
Standard NMEA 0183 sentence validation uses XOR, not CRC-16 or CRC-32.
Using the Validator for GPS and GNSS Debugging
Checksum validation is useful when debugging serial output from GPS/GNSS modules. If a receiver continually reports invalid checksums, the cause may be outside the positioning data itself.
Check the UART configuration, baud rate, grounding, voltage levels, cable quality, serial framing, buffering, and application code. A checksum error is often evidence that the exact text received by software differs from the text originally transmitted.
NMEA Checksum Validator FAQs
How is an NMEA checksum calculated?
Does the dollar sign count in an NMEA checksum?
Does the asterisk count in the checksum?
Are commas included in the NMEA checksum?
Is the NMEA checksum a CRC?
What does *47 mean in an NMEA sentence?
Can an NMEA sentence have no checksum?
Does this validator accept AIS sentences?
What is a talker ID?
What is an NMEA sentence formatter?
Why does changing one character invalidate the checksum?
Can I paste a sentence with CR/LF line endings?
Can this tool fix an incorrect NMEA checksum?
Does validation prove the GPS data itself is correct?
Validate NMEA 0183 Checksums Instantly
Paste a GPS, GNSS, marine, or AIS NMEA sentence, compare its transmitted checksum with the calculated XOR value, inspect the message identifier, and generate a corrected sentence directly in your browser.