Skip to content
    Supply Chain Technology

    How to measure container dwell time across your terminals

    Oct 26, 20266 min read

    Container dwell time gets measured four different ways by four different systems. How to define the clock, source the timestamps, and make the number comparable.

    The Pacific Merchant Shipping Association put truck dwell at the San Pedro Bay ports at 3.18 days in September, up from 2.95 days in August. Rail dwell went to 7.19 days from 6.75. Los Angeles and Long Beach both processed record September volumes, and a peak season that was supposed to taper has kept going. None of that is unusual in a heavy month. What is unusual is how few shipper teams can produce the same two numbers for their own containers, at their own terminals, without a week of spreadsheet work first.

    That gap matters more than it looks. Dwell is the quietest cost in the inbound chain. It does not show up as a late shipment until it already is one, it does not trigger an alert, and by the time it turns into a demurrage invoice the decision that would have prevented it is three weeks old. Teams that cannot measure it end up managing it by anecdote: someone remembers that Long Beach was slow in September, nobody can say by how much, and the free-time negotiation at the next carrier review has no evidence behind it.

    Ask three people what dwell time is and you get three answers

    Before anything gets measured, the definition has to be settled, because the word is used for at least four different clocks.

    Terminal dwell runs from vessel discharge to out-gate. It is the number ports publish and the one most industry reporting means.

    Street dwell runs from out-gate to empty return. It is the clock the carrier bills detention against, and it belongs to your drayage operation, not the terminal.

    Rail dwell runs from grounding at the terminal to railing out. It behaves completely differently from truck dwell, which is why the San Pedro Bay numbers above are more than twice as high for rail.

    Inland node dwell runs from arrival at your DC to receipt into available stock. It is invisible to everyone outside your four walls and is frequently the worst of the four.

    Keep them separate and name them separately. A single blended "dwell time" figure averaged across all four is the kind of metric that survives a quarterly review and changes nothing, which is the failure mode behind most end-to-end supply chain scorecards. You want four numbers that each point at a different team.

    Find out which system owns each timestamp

    Every one of those clocks needs a start event and a stop event, and no single system holds both ends of any of them.

    Discharge comes from the carrier event feed, which is where most ocean tracking stops and where tracking a container after it arrives at the port becomes its own exercise. Out-gate comes from the terminal, sometimes through the carrier, sometimes through a terminal portal your drayage provider logs into on your behalf. Delivery and empty return come from the drayage provider, often as a line in an email or a status in a portal rather than a feed. Receipt into stock comes from the WMS. Customs release comes from the broker. That is five sources for four clocks, and they disagree about more than you would expect: different time zones, different definitions of "available", timestamps recorded to the day rather than the hour, and events backfilled two days after they happened.

    This is the point where most dwell projects stall, and it is worth being honest that the hard part is not analysis. It is getting five partners' timestamps into one record with one clock. A command center like Orkestra exists for exactly this layer: 200+ pre-built connectors pull carrier, terminal, and system events into a normalized shipment record, so discharge, gate, delivery, and receipt sit on the same timeline rather than in five formats. If some of your partners have no feed at all, that problem is solvable but has to be solved deliberately, and we covered the options in getting data from partners who have no API.

    Make the numbers comparable before you compare anything

    Three decisions determine whether your dwell figures mean anything across terminals.

    Calendar hours or working hours. A container that gates out on Tuesday after discharging Friday evening did not sit for four working days. Most published port figures use calendar days. Pick one convention, write it down, and apply it everywhere, because mixing the two is how one terminal looks 40% worse than another for no operational reason.

    Holds in or out. A customs or USDA hold is dwell, and it is real cost, but it is not the terminal's performance and it is not your drayage team's. Measure total dwell and held dwell as two series so you can see both the bill and the controllable part.

    Median and 90th percentile, never the average. Dwell distributions have long right tails. A mean of 3.4 days can hide a p90 of 11 days, and the p90 containers are the ones generating every demurrage charge and every angry call. This is the same discipline that makes transit time variability useful rather than decorative.

    Then cut the result by terminal, by container type, and by whether the box was rail or truck out. A single company-wide dwell number is interesting once. A dwell number per terminal per month is something you can negotiate with.

    Separate the dwell you caused from the dwell you inherited

    Once the clock is clean, the next question is whose it is. Inherited dwell comes from customs and agency holds, chassis shortages, appointment scarcity, terminal congestion, and vessel bunching that lands four weeks of arrivals in nine days. Caused dwell comes from your own side: a container nobody dispatched, an appointment nobody booked, paperwork that arrived late, and a DC with no door available to receive.

    Teams are usually surprised by the split. The inherited share is loud and gets discussed constantly. The caused share is quiet, is often a third or more of total dwell, and is the only part you can fix this quarter without anyone else's cooperation.

    Attribution only works if the timestamps carry the reason codes alongside them, which is a data problem before it is a process problem. Bridgestone's teams went after the same thing from the normalization side: once shipment data was consistent enough to drive production planning and customizable alerts, the result was $11.6K in weekly savings across 22 shipments. The mechanism is unglamorous. When the record is clean, the exception is visible early enough to be cheap.

    Give the number a threshold that actually fires

    A dwell report that gets read on the fifth of the month is a history lesson. The version that changes outcomes is a threshold tied to the last free day.

    Set it per terminal, because free time and congestion differ by port, and set it in hours rather than days. If the container is still on the terminal at 60% of its free time with no appointment booked, something has gone wrong and it needs a name against it. That one rule converts dwell from a reporting metric into an exception, which matters because roughly 62% of supply chain exceptions are still detected after the customer has already felt them. Dwell is one of the easiest to catch early, since the clock is visible from the moment of discharge and runs for days before the damage lands. The mechanics of the charges themselves are worth understanding properly: see our guide to demurrage and detention for which clock bills what.

    The same thresholds are what let you tell a genuine surge apart from a bad week, which is the first decision in managing an inbound container surge.

    What to do Monday

    Pick one terminal and one month. Pull discharge, out-gate, delivery, empty return, and receipt for every container that moved through it. Compute the four clocks separately, in calendar hours, with holds flagged. Report median and p90, not the mean. Then look at the p90 containers one by one and write down why each sat, because thirty of those stories tell you more than any dashboard will.

    Most teams find the measurement work is one week and the plumbing is three months, because the timestamps live in five systems that were never designed to agree. That plumbing is what Orkestra's analytics layer is built to remove: one normalized record across carriers, terminals, and your own systems, so dwell is a standing metric with a threshold against it rather than a quarterly data project. Once it is standing, the free-time conversation at your next carrier review stops being a matter of opinion.

    Book a demo to see dwell measured against your own terminals.

    Trusted by leading supply chain teams
    MatalcoOIA GlobalKingsdownDBWMatalcoOIA GlobalKingsdownDBW
    DLAIllyLevitt SafetySquareInstoreDLAIllyLevitt SafetySquareInstore
    TAKE THE NEXT STEP

    Action breaks down when operations are disconnected.

    Orkestra gives teams one place to see what matters, coordinate the response, and move operations forward.