How this is built
Methodology
The three dwell metrics defined exactly, the collection behind every number, the trailing-12-month band, and the precise rule behind the import-friction read, so you can check our work.
The three metrics, defined exactly
This is the most important section on the site, because three different measurements get called dwell in the port trade and conflating them produces wrong conclusions. We define each one and we never blur them.
Vessel dwell at berth is how long a container ship sits at the berth, from its arrival at the berth to its departure, derived from AIS ship-position data by the Bureau of Transportation Statistics. It is a ship metric. It says nothing directly about how long your container then sits in the yard.
Container dwell, or box dwell, is how long a loaded import container sits on the marine terminal after discharge before it leaves by truck or rail. It is a box metric, and it is the one that governs your free-time and demurrage exposure. It is a different number from vessel dwell. It is also the number the site's name points to, and the honest position is that it has no clean public data feed: the port authorities and industry groups like the Pacific Merchant Shipping Association publish it as monthly narrative and PDFs, not as structured data we can pull and stand behind. So we report box dwell only where a source publishes it in a form we can cite, we label it as box dwell so it is never mistaken for the vessel figure, and until a clean feed exists the live congestion signal on this site is the weekly ship queue, not a box-dwell number. The one dwell series with a real public feed, the BTS vessel dwell at berth, is archived and shown as a labeled historical page.
Ships awaiting berth is the count of container ships waiting offshore for a berth to open at a complex, from MARAD and the Marine Exchange by way of the BTS indicators. It is a queue, a count of ships, not a dwell time at all. When the queue is empty we say so rather than showing a zero dwell.
How the data is collected
The numbers come off three public sources, pulled on a fixed schedule. Vessel dwell comes from the BTS open-data portal, which exposes each dataset through a standard JSON data API; we discover the exact port-performance datasets at build and read them by that API rather than hardcoding an identifier. Ships awaiting berth, the truck planning-time index and rail terminal dwell come from the BTS port and supply-chain freight indicators. The monthly TEU volumes come from the port authorities' own container-statistics pages. Every figure is dated to the period it reports, never to the day we pulled it, so a backfill never reads as new news, and a monthly number is shown as the latest month available rather than as the current week.
The components do not update on the same clock, so we date each one to its own reading and never let a monthly number read as a live snapshot. The ship queue is weekly and is the only truly current signal, which is why the site calls it out as the live congestion read. The truck planning-time index and the monthly TEU volumes land about two months after the month they cover, so on the friction board and the metric pages those components are labeled with their own month, and any "right now" language on the site refers to the weekly ship queue, not to the lagging monthly components.
The trailing-12-month normal
For the vessel-dwell and ship-queue series we compare each reading to its own trailing-12-month normal: the median of that series over the prior twelve months, with the band being its recent range. A reading more than fifteen percent above its trailing-12-month median is elevated; more than fifteen percent below is eased; anything in between is normal. We use a trailing twelve-month window rather than a five-year seasonal one because the AIS-derived series are young, and a short honest window beats a thin long one. Where a page also shows a seasonal vs-normal reading from prior years, it is labeled as such and appears only where the series carries enough history for it.
The import-friction read, the exact rule
The friction read is a rules-based, descriptive label per port complex. It is not a model and it is not a prediction. For each complex we take up to three component readings and compare each to its own trailing-12-month median: the count of ships awaiting berth where a queue is published, the truck planning-time index where BTS publishes it, and loaded-import TEU summed across the complex's member ports. Each component is classed elevated if it sits more than fifteen percent above its trailing-12-month median, eased if more than fifteen percent below, and normal otherwise. For the ship queue there is one extra guard: the latest reading must also be at least two vessels above the median, so a calm near-empty queue is never tripped elevated by percentage noise on a one-or-two-ship count. The composite read is then fixed by the count of elevated components: zero elevated is Flowing, exactly one elevated is Some pressure, and two or more elevated is Congested. A component with no current reading is skipped and the read is judged on the components that do report; if fewer than two components report, we show the individual readings and no composite label. That is the whole rule. It describes where the current numbers sit against their own recent normal, and nothing more.
One baseline, everywhere
The trailing-12-month median is the single yardstick across the whole site. The friction board, the complex pages, and the small "how does this sit versus normal" reading on each metric card all compare a series to the same trailing-12-month median, so the ship queue never reads near normal on the board and elevated on its own card, or the reverse. Some pages also carry a seasonal comparison, a versus prior-years median, but it is a separate reading, labeled as such, and it is never the number the friction read or the cards are built on.
Small counts get plain words, not percentages
The ship queue is a count of ships, and in the current calm it runs at a handful or fewer. A percentage move on a count that small is technically true and practically meaningless: two ships against a median of one and a half is "up thirty-three percent" and also just a normal, quiet queue. So for a low-count series, meaning one whose latest reading or whose typical level is below ten ships, the cards drop the percentage and show the count in plain terms instead: the number waiting, a typical range for context, and a plain word, quiet, normal, or elevated, from the same trailing-12-month rule the friction read uses. The percentage framing returns on its own if a queue ever climbs into a sustained double-digit backup.
The TEU baselines
The monthly container statistics run far longer than the dwell series, so for TEU we show three comparisons: month over month, year over year, and the change against the 2019 pre-pandemic baseline where the history reaches it. We report loaded imports, loaded exports and empties as the port authority publishes them, in TEU, and we treat loaded imports as the import-demand read. We never blend a port's numbers with another's or invent a total the source does not publish.
Median, not average, for the baselines
The trailing-12-month normal and any seasonal baseline are medians, not averages, so one freak month does not skew the reference. A percentage move on a bounded reading is stated in the terms that fit the metric, and every number on the site carries its unit, days or hours for dwell, a ship count for the queue, TEU for volume.
The history floor
Each series reaches back only as far as its source truly goes, and we report that floor honestly on the page rather than padding it. The AIS-derived dwell and the ship-queue indicators are the young series and drive the trailing-12-month band; the monthly TEU series are the deep ones and carry the year-over-year and pre-pandemic comparisons. Where a series is too young for a comparison, that comparison simply does not appear.
What we do not compute
We do not track ocean freight rates and carry no rate feed. We do not forecast congestion, volumes or fees. We do not recommend a port, a booking, or a way to handle a demurrage or detention charge. Where a public number does not exist, the site says so rather than substituting an estimate. Charts and statistics on this site are free to republish with visible attribution and a link back.
For the plain-English version of how to read a page, see how to read this.
Republishing our charts and statistics
The charts and statistics on The Dwell are free to republish. Use them in an article, a report, a class, a presentation, or a post — you do not need to ask us first. We ask one thing in return: credit The Dwell with a visible link back to the page you took the figure or chart from, and keep that link live.
Every chart has an Embed chart button with a snippet you can paste straight into a web page. Because it points at the live image, the chart you embed today keeps updating itself as new data lands — you never have to swap in a fresh screenshot. Every data page, guide, and issue has a Cite button that hands you a ready-made citation line, including the date the data runs through. If you are quoting a number, keep that date: it is what tells your reader how current the figure is.