Docs

Reference · Last updated 2026-08-07

The tables Stingray decodes against

This page lists the lookup tables behind the app. The tables show which AIS messages and NMEA sentences Stingray reads, and what each code means on screen. For how Stingray calculates the values, and for the guards around them, see the methodology.

Tables from the decoder
The enumerable tables on this page come from the same tables the decoder executes. Stingray enumerates the ship types, the navigation statuses and the sentence tiers through its own code at build time. This page therefore cannot drift from the app.

AIS message types

TypeMessageHandling
1–3Class A position reportDecoded into vessel tracks
4, 11Base station report / UTC responseDecoded: base stations shown as fixed shore marks. A vessel's type-11 fix joins its track
5Class A static & voyage dataDecoded: name, callsign, IMO, ship type, dimensions, draught, destination
6, 8Addressed / broadcast binary messageContainer header decoded (DAC/FI). Payload kept as raw bits
7, 13Binary / safety acknowledgementDecoded (acknowledged MMSIs). Station traffic, not plotted
9SAR aircraft position reportDecoded into tracks (altitude kept; SOG in whole knots)
10, 15, 16UTC inquiry / interrogation / assignmentDecoded. Station traffic, not plotted
12, 14Safety-related message (addressed / broadcast)Decoded: texts listed in the load report (shown at load time, not saved with the project)
17DGNSS broadcastHeader decoded (reference position). Corrections kept as raw bits
18Class B position reportDecoded into vessel tracks
19Class B extended position reportDecoded: track + name, ship type, dimensions
20, 22, 23Link management / channel & group assignmentDecoded. Station traffic, not plotted
21Aid-to-navigation reportDecoded: AtoN name + position shown as fixed diamond marks
24Class B static data (A/B parts)Decoded: name, callsign, ship type, dimensions
25, 26Single / multi-slot binary messageContainer header decoded (DAC/FI when structured). Payload kept as raw bits
27Long-range broadcastCounted in the load report, not plotted (0.1′ ≈ 185 m position quantization)

Ship type codes (ITU-R M.1371 Table 53)

Stingray shows the precise name in the vessel detail panel and in the info dialogs. The category is the coarser group that sets the map colour, the map shape, and the type filter. Codes that this table does not list are reserved or unassigned. Stingray shows those codes as their raw number.

CodeMeaningMap category
20Wing-in-groundSpecial
21Wing-in-ground (hazmat A)Special
22Wing-in-ground (hazmat B)Special
23Wing-in-ground (hazmat C)Special
24Wing-in-ground (hazmat D)Special
25Wing-in-groundSpecial
26Wing-in-groundSpecial
27Wing-in-groundSpecial
28Wing-in-groundSpecial
29Wing-in-groundSpecial
30FishingFishing
31TowingTug
32Towing (large)Tug
33Dredging / underwater opsFishing
34Diving opsFishing
35Military opsSpecial
36SailingFishing
37Pleasure craftFishing
40High-speed craftHigh-Speed
41High-speed craft (hazmat A)High-Speed
42High-speed craft (hazmat B)High-Speed
43High-speed craft (hazmat C)High-Speed
44High-speed craft (hazmat D)High-Speed
45High-speed craftHigh-Speed
46High-speed craftHigh-Speed
47High-speed craftHigh-Speed
48High-speed craftHigh-Speed
49High-speed craftHigh-Speed
50Pilot vesselPilot
51Search and rescueSpecial
52TugTug
53Port tenderSpecial
54Anti-pollutionSpecial
55Law enforcementSpecial
58Medical transportSpecial
59NoncombatantSpecial
60PassengerPassenger
61Passenger (hazmat A)Passenger
62Passenger (hazmat B)Passenger
63Passenger (hazmat C)Passenger
64Passenger (hazmat D)Passenger
65PassengerPassenger
66PassengerPassenger
67PassengerPassenger
68PassengerPassenger
69PassengerPassenger
70CargoCargo
71Cargo (hazmat A)Cargo
72Cargo (hazmat B)Cargo
73Cargo (hazmat C)Cargo
74Cargo (hazmat D)Cargo
75CargoCargo
76CargoCargo
77CargoCargo
78CargoCargo
79CargoCargo
80TankerTanker
81Tanker (hazmat A)Tanker
82Tanker (hazmat B)Tanker
83Tanker (hazmat C)Tanker
84Tanker (hazmat D)Tanker
85TankerTanker
86TankerTanker
87TankerTanker
88TankerTanker
89TankerTanker
90OtherUnknown
91Other (hazmat A)Unknown
92Other (hazmat B)Unknown
93Other (hazmat C)Unknown
94Other (hazmat D)Unknown
95OtherUnknown
96OtherUnknown
97OtherUnknown
98OtherUnknown
99OtherUnknown

Own-ship sentences (decoded tier)

The decoded tier holds standard NMEA 0183 sentences with a published field layout. Stingray extracts these sentences into labelled values:

FormatterCarries
DBTDepth below transducer
DPTWater depth (with transducer offset)
DTMGeodetic datum
GGAGNSS fix
GLLGeographic position
GNSGNSS fix (multi-system)
HDGMagnetic heading
HDTTrue heading
MTWWater temperature
MWDWind direction and speed
MWVWind speed and angle
OSDOwn-ship data: course/speed
RMCRecommended minimum: position, SOG, COG
ROTRate of turn
RPMEngine / shaft revolutions
RSARudder sensor angle
VBWGround / water speed
VHWWater speed and heading
VTGCourse and speed over ground
ZDAUTC time and date

Own-ship sentences (coded tier)

The coded tier holds sentences that Stingray recognizes. Their field meanings are installation-specific. Stingray captures the raw fields and shows them. Only analyst-authored decode tables give these fields a meaning (see the methodology, Section 6).

FormatterCarries
ALADetail alarm condition
ALCCyclic alert list
ALRAlarm state
ETLEngine telegraph status
HBTHeartbeat supervision
HTDHeading/track control data
PRCPropulsion remote control
RTE
TXTText transmission
WPL
XDRTransducer measurements (type codes are installation-specific)

All other sentences are the opaque tier: proprietary $P…sentences and non-standard tags. Stingray records their presence, their counts and their raw fields. Stingray never interprets the content, because no published field grid exists to interpret it against. If your installation's Record of Configuration documents such a sentence, a decode rule can name its fields. The meaning then comes from that document, and never from an assumption made here.

Recording packaging

PackagingShape
Bare NMEAPlain !AIVDM/!AIVDO lines. No timestamps (synthetic order-preserving times)
ETX-wrappedTimestamped lines with a trailing ~XX source-channel suffix
Wärtsilä VDR-4370HEXSECONDS:HEXSUBSEC prefix + trailing ~XX channel
VDR tab / commadate, 4-hex channel column, sentence (the vendor replay-export form)
Simple tabtimestamp<TAB>sentence
NMEA 4.10 tag block\s:…,c:…*hh\ prefix. A checksummed key:value block. A verified c: field is the per-sentence receive clock
CSVStingray's own decoded-data CSV (re-importable)
SalvageAny other packaging, text or binary: every checksum-valid sentence is recovered, timestamps ZDA-derived (marked coarse)

Sources

The tables above come from Stingray's decoder. Stingray builds the decoder and the analysis methods on these references:

  • ITU-R M.1371 (Recommendation ITU-R M.1371-6, Technical characteristics for an automatic identification system using time-division multiple access in the VHF maritime mobile band). This is the AIS standard. It gives the message structures, the ship-type and navigation-status code tables, and the “not available” sentinels. itu.int/rec/R-REC-M.1371
  • gpsd, AIVDM/AIVDO protocol decoding. This is the field-level community reference. The AIS bit layouts in Stingray come from it, and the tests for those layouts use it. It also covers the rate-of-turn encoding quirk. gpsd.gitlab.io/gpsd/AIVDM.html
  • NMEA 0183 / IEC 61162-1. These standards define the sentence formatters of the own-ship tiers. The standards are proprietary. Stingray therefore implements the field layouts from the published community references: the gpsd NMEA reference and the OpenCPN documentation.
  • Yan, X., Sang, L., Wall, A., Wang, J., Mao, Z., CPA calculation method based on AIS position prediction. This is the reference for hull-to-hull separation. It shows that a received AIS position is the antenna position. It also shows that the broadcast A/B/C/D offsets locate that antenna within a rectangular hull. It gives the corrected-range expression, which Stingray solves exactly. The projected closest approach uses a different method by design. Stingray minimises over the whole projection. It does not evaluate at the closest instant of the antennas (Section 5 of the methodology).

If a code on this page disagrees with your installation's own documentation, that disagreement is evidence. Stingray shows the transmitted values. Stingray lets the decode tables carry your installation's meaning.