CruiseMigration
Live Map

Explainers

How We Track Cruise Ships: AIS, Itineraries, and Why Glacier Bay Goes Dark

Cruise ships broadcast their position via AIS — but coverage isn't perfect. Here's how CruiseMigration combines AIS, scheduled itineraries, and crew-of-port reports to build the live map.

By EricEdited with assistive AI from ClankBotPublished

CruiseMigration's live ship map combines three data sources: AIS broadcasts (real-time position from each ship), a scheduled-itinerary database (where each ship is supposed to be), and port-call reports (when ships arrive and depart). When all three agree, the tracker is rock-solid. When they disagree — and they sometimes do — the tracker tells you which one to trust. Here's how it works.

What AIS is and how it works

AIS (Automatic Identification System) is the maritime equivalent of the ADS-B transponders aircraft use. International Maritime Organization regulations require every ship over 300 gross tonnes to broadcast AIS continuously while underway, and most ships also broadcast in port. The broadcast contains:

FieldExampleNotes
MMSI311000934Maritime Mobile Service Identity — unique per ship
Name"CORAL PRINCESS"Self-reported
IMO9229529Static unique identifier (doesn't change with renaming/re-flagging)
Position60.7700° N, 148.6900° WGPS-derived, accurate to a few meters
Speed over ground18.3 kn
Course over ground042°True heading
Heading045°Magnetic
Navigation statusUnderway / Moored / At anchor
Destination"Whittier"Self-reported, often abbreviated
ETA"04-28 08:00"Self-reported

The broadcast is on VHF marine band (around 161–162 MHz), repeating every 2–10 seconds depending on the ship's speed. Land-based AIS receivers (run by port authorities, marine traffic services, hobbyists, and commercial data aggregators) pick up the broadcasts coastally — usually within 20–40 nautical miles. Satellites with AIS receivers (notably Spire and Orbcomm) cover the rest of the ocean, though with much sparser temporal resolution.

How CruiseMigration ingests AIS

We use AISStream.io as the primary AIS source. AISStream aggregates land-based and satellite AIS feeds, deduplicates messages, and exposes them via a real-time WebSocket. We subscribe to a bounding box covering the Alaska cruise region (roughly 48°N to 70°N, 130°W to 170°W) and ingest filtered messages for ships matching our cruise-ship MMSI list.

A backup feed from VesselFinder runs in parallel for redundancy. If AISStream goes down, the data path silently fails over.

The ingest pipeline is:

  1. WebSocket message arrives with { mmsi, lat, lon, sog, cog, timestamp }
  2. Match mmsi against our ships table (we maintain MMSI → cruise-ship-id mapping)
  3. Insert a row into the positions table with the timestamp
  4. Update the ship's "last known position" cache for fast UI reads
  5. Recompute next-port ETA against the scheduled itinerary

Steps 1–4 happen continuously. Step 5 runs on a 5-minute cron via Vercel scheduled functions.

Why ships sometimes disappear

The tracker can show a stale position when:

  • Glacier Bay scenic day. No land-based AIS receiver inside the bay; satellite passes are intermittent. Ships appear "stuck" at the bay entrance for the day even though they're actively cruising. We show a "last seen" timestamp so you can tell.
  • Tracy Arm / Endicott Arm. Same issue — narrow fjord, no nearby receiver.
  • Mid-ocean deep Pacific. Satellite AIS coverage is good but not continuous; expect 15–60 minute gaps on Pacific crossings.
  • Briefly in port. Some ships dial AIS broadcast power down in port; pickup can become spotty if the nearest land receiver is also in a building's RF shadow.

When AIS is unreliable, we fall back to the scheduled itinerary — i.e., "based on the published schedule, this ship is in Glacier Bay until 17:00 today." The UI clearly indicates which mode the displayed position is in (live AIS vs scheduled).

How accurate the data is

Three accuracy axes to think about:

AxisTypical accuracyNotes
PositionFew meters (when AIS is fresh)GPS-grade
Latency (broadcast → display)Under 1 min coastal, 5–15 min mid-oceanSatellite AIS is the bottleneck
Self-reported destination/ETAVariableCrews update sometimes; not authoritative
Schedule predictionsBest-effort, recomputed every 5 minBased on current course + scheduled itinerary

For cruise-ship tracking the position fidelity is essentially "where is the ship right now within a meter or two, with up to a few minutes of broadcast lag." For passengers asking "is my parent's ship still on schedule?", that's plenty.

For navigation-grade or operational use cases, AIS isn't the primary system — that's the ship's own GPS, ECDIS, and radar.

What you can do with our tracker

Why we built this

Most marine traffic services treat cruise ships as just another AIS target. Cruise passengers, families, and fans want cruise-specific context: which world voyage is wrapping up, which ship has the Glacier Bay permit today, why the ship is briefly missing from the tracker. Building it required a cruise-ship-specific data model on top of generic AIS — that's most of what CruiseMigration is.

Sources

Frequently asked questions

How do cruise ships report their position?
Cruise ships broadcast their position via AIS (Automatic Identification System), a marine radio standard that all ships over 300 GT are required by IMO regulations to use. AIS includes the ship's MMSI identifier, position, speed, heading, and basic vessel info, and is transmitted every few seconds at sea.
What is AIS and how does CruiseMigration use it?
AIS is the maritime equivalent of aircraft transponder ADS-B. Coastal AIS receivers on land and on satellites pick up the broadcasts and feed them into commercial data services. CruiseMigration ingests AIS from AISStream.io (primary) and VesselFinder (fallback), updates ship positions every few minutes, and pairs them with our scheduled-itinerary database for context.
Why do cruise ships sometimes disappear from the tracker?
Three reasons. (1) AIS reception is poor in some narrow fjords (notably Glacier Bay, parts of the Inside Passage, and Tracy Arm) — the receivers can't see the broadcast. (2) Some ships occasionally throttle their AIS power for security or local regulation. (3) Data-feed delays — coastal receivers and satellite passes don't always update in real time, so a ship in mid-ocean can show a 15–30 minute gap. We display a 'last seen' timestamp on every ship so you can see how fresh the data is.
How accurate is cruise ship tracking?
Position accuracy is essentially GPS-grade (a few meters) when AIS is being received. The lag from broadcast to display is typically under a minute coastal, 5–15 minutes mid-ocean (where positions come from satellite AIS). Schedule predictions (ETA at next port) are best-effort based on the ship's current course and speed, and can shift if the ship adjusts.
Why does Glacier Bay always 'go dark' on the tracker?
Glacier Bay is a deep fjord with steep granite walls that block VHF radio line-of-sight. There is no land-based AIS receiver inside the bay's interior, and satellite AIS passes are intermittent. Ships are still broadcasting, but for the duration of a Glacier Bay scenic day (typically 06:00–17:00) they often appear stationary at the bay entrance on the tracker even though they're actively cruising the bay.
Can I track a specific cruise ship in real time?
Yes. Search for the ship on CruiseMigration's ship list, click into the ship's tracker page, and you'll see its current position, recent track, scheduled itinerary, and predicted next-port ETA. Updates are roughly every 5–10 minutes when AIS is reliable, slower when the ship is in a coverage gap.