— Developer Tools

Free AIS Message Decoder

Paste !AIVDM sentences from a receiver or feed to see each ship’s position, speed, name and voyage on a map.

— Samples
Messages 8Vessels 4Problems 0Valid
Live

What is an AIS Message Decoder?

AIS, the Automatic Identification System, is how ships broadcast who they are, where they are and where they’re going. Receivers write each broadcast as an NMEA sentence starting !AIVDM, with the data packed into a 6-bit armoured payload. This decoder unpacks it.

It joins multi-part messages, checks every checksum, and decodes position reports from Class A and Class B transponders, static and voyage data, base stations, aids to navigation, SAR aircraft and long-range reports. Vessels mode merges each MMSI’s messages, and every position is drawn on a map.

Key Features

Twelve Message Types

Types 1 to 5, 9, 11, 18, 19, 21, 24 and 27, the ones that carry positions, names and voyages.

Multi-Part Joined

Type 5 and other long messages are reassembled by sequence ID and channel before decoding.

Per-Vessel View

Position, static and voyage data merged per MMSI, with name, type, size and destination.

JSON Export

Every decoded value with ITU field names, ready for scripts and spreadsheets.

Feed Stays Private

Your feed never leaves the browser. Only the background map comes from OpenStreetMap’s tile servers.

Perfect for everyone

  • Maritime software developers
  • AIS receiver builders
  • Port and fleet analysts
  • Ship spotters

How to Use the AIS Message Decoder

Paste sentences from a receiver, a log or a feed.

1

Get the Sentences

Copy them from AIS-catcher, rtl-ais, a dAISy receiver, a chartplotter or an AIS data feed.

2

Paste or Open

Mixed lines are fine. Tag blocks and other NMEA sentences are skipped.

3

Read the Messages

Messages decodes each one in order, with problems such as bad checksums reported in place.

4

Merge or Export

Vessels shows one entry per ship. JSON downloads the decoded values for your own code.

Worked Examples

AIS Sentences, Decoded

Each row is AIS traffic as a receiver writes it, and each answer is this decoder’s output in the mode on the chip. The first two are the examples the pyais library documents.

REF_001A Class A position report

“!AIVDM,1,1,,B,15M67FC000G?ufbE`FepT@3n00Sa,0*5C”

REF_002A two-part static and voyage report

“!AIVDM,2,1,1,A,55?MbV02;H;s<HtKR20EHE:0@T4@Dn2222222216L961O5Gf0NSQEp6ClRp8,0*1C !AIVDM,2,2,1,A,88888888880,2*25”

REF_003A Class B position report

“!AIVDM,1,1,,B,B3P=BS@0>7vR1t7@m>2SkwW7h000,0*51”

REF_004Class B static data, parts A and B

“!AIVDM,1,1,,B,H3P=BS@pu9@PE8r1@E8p00000000,0*3D !AIVDM,1,1,,B,H3P=BSDTCBD419W=HIJo00104224,0*04”

REF_005An aid to navigation

“!AIVDM,1,1,,A,E>jHD0TcRab@5W7V6@700000000Otw0L>Qu<000003g000,4*29”

REF_006A base station’s clock and position

“!AIVDM,1,1,,A,402=abivbejN0wqWVPM7m`700000,0*05”

REF_007A receiver log, merged per vessel

“!AIVDM,1,1,,A,402=abivbejN0wqWVPM7m`700000,0*05 !AIVDM,1,1,,A,13P80v@01twr2SPM4R>5B4<H0000,0*29 !AIVDM,2,1,1,A,53P80v@2<r8?848?<01<thDqB1A84@E800000016?0P8:6f60BTkmE20CD53,0*7D !AIVDM,2,2,1,A,kP000000000,2*1E !AIVDM,1,1,,B,B3P=BS@0>7vR1t7@m>2SkwW7h000,0*51 !AIVDM,1,1,,B,H3P=BS@pu9@PE8r1@E8p00000000,0*3D !AIVDM,1,1,,B,H3P=BSDTCBD419W=HIJo00104224,0*04 !AIVDM,1,1,,A,E>jHD0TcRab@5W7V6@700000000Otw0L>Qu<000003g000,4*29 !AIVDM,1,1,,A,33P80v@11vwr4D0M4Hn5D4>d0000,0*3B”

REF_008The same report as JSON

“!AIVDM,1,1,,B,15M67FC000G?ufbE`FepT@3n00Sa,0*5C”

REF_009A wrong checksum and a lost first part

“!AIVDM,1,1,,B,15M67FC000G?ufbE`FepT@3n00Sa,0*5D !AIVDM,2,2,1,A,88888888880,2*25”

REF_010A GPS sentence, not AIS

“$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47”

Message Types

AIS Message Types Worth Knowing

AIS defines 27 message types. These ten carry nearly everything a ship tracker shows.

01 / TYPES

Types 1, 2 and 3

Class A position reports: status, rate of turn, speed, position, course and heading, every 2 to 10 seconds under way.

“How often does a fast Class A ship report?”

02 / TYPE

Type 4

A base station’s UTC date and time and its surveyed position, used to keep receivers in sync.

“Who sends type 4?”

03 / TYPE

Type 5

Static and voyage data: IMO number, call sign, name, ship type, size, draught, destination and ETA.

“How many sentences does type 5 usually need?”

04 / TYPE

Type 9

Position, altitude and speed of search and rescue aircraft.

“Which MMSI prefix do SAR aircraft use?”

05 / TYPE

Type 18

The Class B position report from smaller vessels and yachts, without status or rate of turn.

“Does type 18 include navigation status?”

06 / TYPE

Type 19

An extended Class B report that adds the name, type and size to the position.

“What does type 19 add to type 18?”

07 / TYPE

Type 21

An aid to navigation: a buoy, beacon or light with its type, name and position.

“Can an aid to navigation be virtual?”

08 / TYPE

Type 24

Class B static data in two parts: part A holds the name, part B the type, call sign and size.

“What does part A carry?”

09 / TYPE

Type 27

A coarse long-range position for satellite reception, accurate to a tenth of a minute.

“Who picks up type 27?”

10 / TYPES

Types 6 and 8

Binary messages for application data such as weather or tide reports, defined by region.

“Does this tool decode their contents?”

How the Payload Is Packed

An AIS message is a string of bits, sent over VHF and written into an NMEA sentence as text. These steps explain how a line such as !AIVDM,1,1,,B,15M67FC…,0*5C turns back into numbers.

VDM and VDO

AIVDM sentences are messages heard from other stations. AIVDO is your own ship’s transponder reporting itself.

Fragments

The first two fields give the fragment count and number, so 2,1 then 2,2 make one message.

Sequence ID and Channel

Parts of one message share a sequential ID and the VHF channel, A or B, it was heard on.

Six-Bit Armour

Each payload character stands for six bits. Subtract 48 from its code, and 8 more if the result is over 40.

Fill Bits

The last field says how many padding bits were added to reach a whole character. They’re dropped before decoding.

Bit Fields

The bits are read in order: 6 for the type, 2 for repeat, 30 for the MMSI, then fields for each type.

Positions

Longitude and latitude are signed counts of 1/10,000 minute, so dividing by 600,000 gives degrees.

What an MMSI Says

The nine-digit MMSI identifies the station, and its first digits tell you what kind of station it is. The decoder labels each one this way.

Tip 01

Ships

MMSIs starting 2 to 7 belong to ships. The first three digits are the maritime identification digits, the flag country.

Tip 02

Coast Stations

A leading 00, then the country’s three digits, marks a shore station such as a base station.

Tip 03

Aircraft

111 then the country digits is a search and rescue aircraft, which reports with type 9.

Tip 04

Aids to Navigation

99 then the country digits is a buoy, beacon or light, real or virtual.

Tip 05

Emergency Devices

970 is an AIS-SART, 972 a man overboard device and 974 an EPIRB with AIS.

Tip 06

Craft With a Parent Ship

98 marks a tender or lifeboat that belongs to a ship, often reported with the parent’s number.

When to Decode AIS

Whenever raw AIS needs reading without a full tracking platform.

Building a Receiver

Check that an RTL-SDR or dAISy setup decodes real ships before feeding a network.

Writing Parsers

Compare your decoder’s output with this one, field by field, in the JSON view.

Port and Fleet Analysis

Pull names, types and destinations from a day’s log for a report.

Checking Your Transponder

Paste your own AIVDO sentences to confirm the static data you broadcast is right.

Learning AIS

See how a few characters of payload become a ship’s position and voyage.

AIS Pitfalls

Things that surprise people working with raw AIS.

Tip 01

Not Available Values

Speed 102.3, heading 511 and latitude 91 mean not available, not real readings. The decoder shows them as such.

Tip 02

Lost Fragments

If one part of a multi-part message is missed, the whole message is lost. Log both channels.

Tip 03

Typed-In Data

Names, destinations and ETAs are entered by the crew and are often stale or misspelled.

Tip 04

Heading Versus Course

Heading is where the bow points. Course over ground is where the ship moves, and they differ with current and wind.

Tip 05

Class B Gaps

Class B sends position every 30 seconds and its name separately, so a yacht can appear nameless for minutes.

Tip 06

Spoofing

AIS isn’t authenticated. Positions can be wrong by mistake or on purpose, so cross-check before relying on them.

Frequently Asked Questions