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.
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.
Get the Sentences
Copy them from AIS-catcher, rtl-ais, a dAISy receiver, a chartplotter or an AIS data feed.
Paste or Open
Mixed lines are fine. Tag blocks and other NMEA sentences are skipped.
Read the Messages
Messages decodes each one in order, with problems such as bad checksums reported in place.
Merge or Export
Vessels shows one entry per ship. JSON downloads the decoded values for your own code.
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.
“!AIVDM,1,1,,B,15M67FC000G?ufbE`FepT@3n00Sa,0*5C”
“!AIVDM,2,1,1,A,55?MbV02;H;s<HtKR20EHE:0@T4@Dn2222222216L961O5Gf0NSQEp6ClRp8,0*1C !AIVDM,2,2,1,A,88888888880,2*25”
“!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,402=abivbejN0wqWVPM7m`700000,0*05”
“!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”
“!AIVDM,1,1,,B,15M67FC000G?ufbE`FepT@3n00Sa,0*5C”
“!AIVDM,1,1,,B,15M67FC000G?ufbE`FepT@3n00Sa,0*5D !AIVDM,2,2,1,A,88888888880,2*25”
“$GPGGA,123519,4807.038,N,01131.000,E,1,08,0.9,545.4,M,46.9,M,,*47”
AIS Message Types Worth Knowing
AIS defines 27 message types. These ten carry nearly everything a ship tracker shows.
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?”
Type 4
A base station’s UTC date and time and its surveyed position, used to keep receivers in sync.
“Who sends type 4?”
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?”
Type 9
Position, altitude and speed of search and rescue aircraft.
“Which MMSI prefix do SAR aircraft use?”
Type 18
The Class B position report from smaller vessels and yachts, without status or rate of turn.
“Does type 18 include navigation status?”
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?”
Type 21
An aid to navigation: a buoy, beacon or light with its type, name and position.
“Can an aid to navigation be virtual?”
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?”
Type 27
A coarse long-range position for satellite reception, accurate to a tenth of a minute.
“Who picks up type 27?”
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.
Ships
MMSIs starting 2 to 7 belong to ships. The first three digits are the maritime identification digits, the flag country.
Coast Stations
A leading 00, then the country’s three digits, marks a shore station such as a base station.
Aircraft
111 then the country digits is a search and rescue aircraft, which reports with type 9.
Aids to Navigation
99 then the country digits is a buoy, beacon or light, real or virtual.
Emergency Devices
970 is an AIS-SART, 972 a man overboard device and 974 an EPIRB with AIS.
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.
Not Available Values
Speed 102.3, heading 511 and latitude 91 mean not available, not real readings. The decoder shows them as such.
Lost Fragments
If one part of a multi-part message is missed, the whole message is lost. Log both channels.
Typed-In Data
Names, destinations and ETAs are entered by the crew and are often stale or misspelled.
Heading Versus Course
Heading is where the bow points. Course over ground is where the ship moves, and they differ with current and wind.
Class B Gaps
Class B sends position every 30 seconds and its name separately, so a yacht can appear nameless for minutes.
Spoofing
AIS isn’t authenticated. Positions can be wrong by mistake or on purpose, so cross-check before relying on them.