{
  "title": "Vessels at anchor by port (live AIS snapshot)",
  "slug": "port-congestion",
  "headline": "1,971 vessels are at anchor across 15 AIS-covered major ports — Rotterdam leads with 794 (40.3% of the anchored fleet); the median completed port stay is 11.9h — snapshot as of 2026-07-02.",
  "column": "Port",
  "unit": "vessels at anchor",
  "total": 1971,
  "rows": [
    {
      "label": "Rotterdam (NLRTM)",
      "count": 794,
      "pct": 40.3
    },
    {
      "label": "Tanjung Pelepas (MYTPP)",
      "count": 390,
      "pct": 19.8
    },
    {
      "label": "Singapore (SGSIN)",
      "count": 239,
      "pct": 12.1
    },
    {
      "label": "Shenzhen (CNSZX)",
      "count": 169,
      "pct": 8.6
    },
    {
      "label": "Zeebrugge (BEZEE)",
      "count": 89,
      "pct": 4.5
    },
    {
      "label": "Busan (KRPUS)",
      "count": 64,
      "pct": 3.2
    },
    {
      "label": "New York / New Jersey (USNYC)",
      "count": 55,
      "pct": 2.8
    },
    {
      "label": "Port Said (EGPSD)",
      "count": 48,
      "pct": 2.4
    },
    {
      "label": "Algeciras (ESALG)",
      "count": 35,
      "pct": 1.8
    },
    {
      "label": "Los Angeles (USLAX)",
      "count": 29,
      "pct": 1.5
    },
    {
      "label": "Hamburg (DEHAM)",
      "count": 28,
      "pct": 1.4
    },
    {
      "label": "Valencia (ESVLC)",
      "count": 16,
      "pct": 0.8
    },
    {
      "label": "Genoa (ITGOA)",
      "count": 15,
      "pct": 0.8
    },
    {
      "label": "Guangzhou (CNGUA)",
      "count": 0,
      "pct": 0
    },
    {
      "label": "Laem Chabang (THLCH)",
      "count": 0,
      "pct": 0
    }
  ],
  "methodology": [
    "Vessels-at-anchor counts vessels reporting speed < 2 kt or AIS navigation status \"anchored\"/\"moored\" within 5–25 nm of the port center; at-berth counts the same within 5 nm. Positions come from ArcNautical’s terrestrial AIS receiver network.",
    "Median stay is the median duration of port calls COMPLETED in the last 7 days from the passive port-call detector — never the elapsed age of still-open calls, which over-counts when a departure is missed.",
    "Ports outside terrestrial AIS receiver coverage are excluded rather than shown as a false zero: Shanghai, Ningbo-Zhoushan, Qingdao, Tianjin, Xiamen, Port Klang, Kaohsiung, Ho Chi Minh City, Jebel Ali, Jeddah, Santos. A major port with no receivers nearby is a coverage gap, not an empty port.",
    "At-berth companion count across the same ports: 1,142 vessels."
  ],
  "keywords": [
    "port congestion",
    "vessels at anchor",
    "port delays",
    "shipping delays",
    "AIS data",
    "port waiting time"
  ],
  "sources": [
    {
      "key": "arcnautical_ais",
      "name": "ArcNautical live AIS vessel positions (terrestrial receiver network) + passive port-call detector",
      "url": "https://arcnautical.com/methodology.html"
    }
  ],
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "provenance": {
    "source": "ArcNautical live AIS relay + passive port-call detector (first-party signal, not a third-party aggregate)",
    "source_url": "https://arcnautical.com/methodology.html",
    "data_as_of": "2026-07-02",
    "parsed_by": "ArcNautical screening engine (commit a7911312)",
    "generated_at": "2026-07-02T16:27:08.837Z",
    "canonical": "https://arcnautical.com/data/port-congestion/",
    "csv": "https://arcnautical.com/data/port-congestion/data.csv",
    "reproducible": "Re-run scripts/generate-data-pages.ts against the same source. All figures use the same scoring modules as the ArcNautical vessel dossier (server/arcnautical/scoring)."
  },
  "extra": {
    "computedAt": "2026-07-02T16:17:17.088Z",
    "ports": [
      {
        "locode": "NLRTM",
        "name": "Rotterdam",
        "country": "NL",
        "vesselsAtAnchor": 794,
        "vesselsAtBerth": 303,
        "medianStayHours": 15.6,
        "arrivals24h": 15
      },
      {
        "locode": "MYTPP",
        "name": "Tanjung Pelepas",
        "country": "MY",
        "vesselsAtAnchor": 390,
        "vesselsAtBerth": 0,
        "medianStayHours": null,
        "arrivals24h": 0
      },
      {
        "locode": "SGSIN",
        "name": "Singapore",
        "country": "SG",
        "vesselsAtAnchor": 239,
        "vesselsAtBerth": 158,
        "medianStayHours": 7.5,
        "arrivals24h": 16
      },
      {
        "locode": "CNSZX",
        "name": "Shenzhen",
        "country": "CN",
        "vesselsAtAnchor": 169,
        "vesselsAtBerth": 0,
        "medianStayHours": null,
        "arrivals24h": 0
      },
      {
        "locode": "BEZEE",
        "name": "Zeebrugge",
        "country": "BE",
        "vesselsAtAnchor": 89,
        "vesselsAtBerth": 39,
        "medianStayHours": 12.3,
        "arrivals24h": 2
      },
      {
        "locode": "KRPUS",
        "name": "Busan",
        "country": "KR",
        "vesselsAtAnchor": 64,
        "vesselsAtBerth": 172,
        "medianStayHours": 6,
        "arrivals24h": 13
      },
      {
        "locode": "USNYC",
        "name": "New York / New Jersey",
        "country": "US",
        "vesselsAtAnchor": 55,
        "vesselsAtBerth": 71,
        "medianStayHours": 9,
        "arrivals24h": 4
      },
      {
        "locode": "EGPSD",
        "name": "Port Said",
        "country": "EG",
        "vesselsAtAnchor": 48,
        "vesselsAtBerth": 11,
        "medianStayHours": 12.6,
        "arrivals24h": 1
      },
      {
        "locode": "ESALG",
        "name": "Algeciras",
        "country": "ES",
        "vesselsAtAnchor": 35,
        "vesselsAtBerth": 26,
        "medianStayHours": 4.2,
        "arrivals24h": 0
      },
      {
        "locode": "USLAX",
        "name": "Los Angeles",
        "country": "US",
        "vesselsAtAnchor": 29,
        "vesselsAtBerth": 65,
        "medianStayHours": null,
        "arrivals24h": 0
      },
      {
        "locode": "DEHAM",
        "name": "Hamburg",
        "country": "DE",
        "vesselsAtAnchor": 28,
        "vesselsAtBerth": 176,
        "medianStayHours": 8.2,
        "arrivals24h": 12
      },
      {
        "locode": "ESVLC",
        "name": "Valencia",
        "country": "ES",
        "vesselsAtAnchor": 16,
        "vesselsAtBerth": 45,
        "medianStayHours": 18,
        "arrivals24h": 0
      },
      {
        "locode": "ITGOA",
        "name": "Genoa",
        "country": "IT",
        "vesselsAtAnchor": 15,
        "vesselsAtBerth": 76,
        "medianStayHours": 11.9,
        "arrivals24h": 3
      },
      {
        "locode": "CNGUA",
        "name": "Guangzhou",
        "country": "CN",
        "vesselsAtAnchor": 0,
        "vesselsAtBerth": 0,
        "medianStayHours": null,
        "arrivals24h": 0
      },
      {
        "locode": "THLCH",
        "name": "Laem Chabang",
        "country": "TH",
        "vesselsAtAnchor": 0,
        "vesselsAtBerth": 0,
        "medianStayHours": null,
        "arrivals24h": 0
      }
    ],
    "noCoverage": [
      {
        "locode": "CNSHA",
        "name": "Shanghai"
      },
      {
        "locode": "CNNGB",
        "name": "Ningbo-Zhoushan"
      },
      {
        "locode": "CNQIN",
        "name": "Qingdao"
      },
      {
        "locode": "CNTJN",
        "name": "Tianjin"
      },
      {
        "locode": "CNXMN",
        "name": "Xiamen"
      },
      {
        "locode": "MYPKG",
        "name": "Port Klang"
      },
      {
        "locode": "TWKHH",
        "name": "Kaohsiung"
      },
      {
        "locode": "VNSGN",
        "name": "Ho Chi Minh City"
      },
      {
        "locode": "AEJEA",
        "name": "Jebel Ali"
      },
      {
        "locode": "SAJED",
        "name": "Jeddah"
      },
      {
        "locode": "BRSSZ",
        "name": "Santos"
      }
    ]
  }
}
