On 17 August 2026, Google Maps Platform took Large Vehicle Routing to general availability in the United States — height, weight, length, width, axle count and hazardous-goods class, across the Routes API, the Route Optimization API and the Navigation SDK. It is a good product, and it settles something worth settling: a truck profile on a routing call is no longer a differentiator. HERE has had one for years, PC*MILER and Trimble build businesses on one, and now the largest maps platform in the world ships one too.
That is genuinely useful news, and it moves the interesting question exactly one layer down.
A router avoids a low bridge because somebody published a height for it. That is the entire mechanism. There is no inference, no clever geometry, no model that deduces clearance from satellite imagery at the precision a 13′6″ trailer needs. Some agency measured a structure, wrote a number into a feed, and a routing engine read it. Everything downstream — the avoidance, the warning, the re-route — rests on that number existing.
So: how often does it exist?
We aggregate US and Canadian DOT feeds for a living, which makes that question answerable rather than rhetorical. Every figure below is a single atomic snapshot of our North American production database taken between 07:58 and 08:01 UTC on 2 September 2026. They move — two of them moved while we were taking the snapshot — so treat them as a dated observation, not a constant.
16.1%
Our store held 662,519 active bridge-clearance records from 53 state and provincial sources. Of those, 106,351 — 16.1% — carry a vertical clearance value at all.
The other 84% are not corrupt, and they are not padding. They are federal National Bridge Inventory structural records, and they are rich. Here is one of them, unedited, exactly as it sits in our database:
{
"location": "0.096 mi W of Old Hotel",
"facility_carried": "POLAND SPRING ROAD",
"feature_crossed": "I-95",
"structure_number": "0079",
"year_built": 1956,
"structure_length_m": 99.4,
"max_span_length_m": 17.5,
"roadway_width_m": 7.9,
"deck_area_sqm": 934.36,
"deck_condition": "5",
"superstructure_condition": "6",
"substructure_condition": "5",
"structural_evaluation": "5",
"scour_critical": "N",
"posting_status": "open",
"inventory_rating_t": 33,
"operating_rating_t": 43.1,
"weight_limit_t": 43.1,
"avg_daily_traffic": 2567,
"clearance_m": 4.49,
"clearance_ft": "14.7"
}
That record knows the bridge was built in 1956, how wide the roadway is, the condition rating of its deck, its substructure and its superstructure, whether it is scour-critical, what it can legally carry, and how many vehicles crossed it yesterday. This particular one also happens to carry a height. Five out of six do not, because the National Bridge Inventory is a structural inventory. It was designed to tell an engineer whether a bridge needs repair. It was never designed to tell a driver what fits underneath.
That is not a criticism of NBI, and it is not a criticism of anyone’s router. It is a statement about the ceiling. No routing engine — Google’s, HERE’s, ours, anyone’s — can avoid a clearance nobody published.
Twenty-Nine Names for One Measurement
Where a height does exist, the second problem starts. Across those 53 sources, a vertical clearance reaches us under 29 distinct property names (there are 32 clearance-related keys in total; three of them are horizontal clearances, which are a different measurement and must not be mixed in). The long tail is real:
| Property name | Records carrying it |
|---|---|
clearance_m | 92,476 |
clearance_ft | 91,967 |
deck_clearance_ft / deck_clearance_m | 10,908 each |
vertical_clearance_m | 6,076 |
vertical_clearance_under_ft | 4,535 |
vertical_clearance_ft | 2,499 |
lane_1_clearance … lane_9_clearance | ~2,000 each |
posted_height | 2,038 |
posted_clearance_ft, posted_clearance_in | 645 each |
left_ / center_ / right_clearance_in | 645 each |
vertical_clearance_on_ft, _over_ft, _left_ft, _right_ft, _deck_ft, _raw, _label | 16 – 509 each |
Renaming fields is tedious but mechanical. This next one is not. Look again at the two clearance lines in the record above:
"clearance_m": 4.49,
"clearance_ft": "14.7"
One measurement, one object, two JSON types. The metric value is a number; the imperial value of the same physical distance is a string. And it is not a one-off glitch in a stray record — the split is total and perfectly consistent across the store. All 92,476 records carrying clearance_m hold it as a JSON number. All 91,967 records carrying clearance_ft hold it as a JSON string.
That shape passes a schema check. It passes a null check. It passes a range check. Then it reaches a comparison, and in a good few languages 3.63 < 4.1 and "11.9" < "4.1" are both true and mean entirely different things. A clearance test one careless comparison away from that will look correct in staging for months.
It Is Not Just Clearances
Clearance is the layer people think of, because bridge strikes make the news. It is not the thinnest one. The same snapshot, across every layer a truck actually has to care about:
| Layer | Active records | Jurisdictions publishing |
|---|---|---|
| Truck restrictions | 1,472,849 | 63 |
| Bridge clearances | 662,519 | 53 |
| Rail crossings | 163,033 | 50 |
| Posted weight restrictions | 22,273 | 6 |
| Weigh stations | 975 | 46 |
| Tunnel clearances | 580 | 45 |
| Border crossings | 198 | 20 |
| Inspection stations | 32 | 1 |
Read the fourth row next to the first. Same continent, same trucks, two layers that both decide whether a load is legal — and one of them reaches us from six jurisdictions.
To be precise about what that number is and isn’t: it is not a claim that only six jurisdictions have posted weight limits. Spring load restrictions are law across most of the northern half of the continent, and every state posts bridges. It is a claim about how many publish those limits in a machine-readable feed that anything can consume. That gap — between a rule that exists and a rule a computer can read — is the actual constraint on automated compliance, and no vendor can route around it.
What We Do With an Absence
Which brings up the design decision that matters most in this whole business, and the one we would defend hardest: what your system does when the number isn’t there.
There is a strong temptation to fill it. Infer a missing clearance from the neighbouring structure. Default a missing weight limit to “no limit”. Carry forward last week’s reading because a stale number looks more professional than a blank. Every one of those turns a known unknown into a confident, checkable, wrong answer — and a dispatcher cannot tell the difference by looking.
We leave it empty. A blank is a blank.
The clearest illustration in our own data is truck parking. In the same snapshot we held 1,907 active truck parking sites in North America. 1,527 carry a capacity — how many spaces the lot has. But only 130, across 6 jurisdictions, carry a live count of how many of those spaces are currently free, because a live count requires a state to have deployed a TPIMS installation and to publish its output. So that is what we return: capacity almost everywhere, a live occupancy figure in the handful of places where one genuinely exists, and nothing at all in the rest. We could produce a plausible-looking number for the other 1,777 sites. It would be fiction, and a driver at 2 a.m. with eight minutes of drive time left deserves better than fiction.
The Questions Worth Asking a Routing Vendor
If truck profiles are now table stakes, “do you support height and weight?” has stopped being a useful procurement question. Everyone will say yes, and everyone will be telling the truth. Better ones:
- Which of these layers do you actually carry — clearances, posted weight limits, truck restrictions, rail crossings, weigh stations, tunnels — and in how many states and provinces each?
- What do you return when the publisher has nothing? A blank is a legitimate answer. A silent default is not.
- Where did this number come from, and when? Every warning should name its source and its jurisdiction, so a dispatcher can go argue with the right agency.
- Is the restriction data the same age as the route? A route computed in real time against a restriction layer refreshed quarterly is a real-time answer to a stale question.
Where This Leaves Everyone
Large vehicle routing arriving in the Routes API is the routing half of the problem converging, and convergence is good for fleets: more vendors, better prices, fewer trucks sent down roads they do not fit on. We proxy a commercial truck routing engine ourselves precisely because the routing is not where the scarcity is.
The scarcity is one layer down, it is a publishing problem rather than an engineering one, and it does not get solved by whoever ships the best router. It gets solved by agencies publishing more, publishing in consistent shapes, and publishing the fields a driver needs rather than only the fields an inspector needs — and, in the meantime, by somebody doing the unglamorous work of pulling 53 sources into one contract and being honest about the holes.
That is the part we do. The counts above are what it currently looks like, holes included.
See what’s actually on the corridor
One call returns a truck-aware route plus every hazard our database holds along it — bridge clearances checked against your height, posted weight and dimension limits, at-grade rail crossings with 49 CFR 392.10 awareness, weigh stations, live incidents and weather — each severity-ranked, stamped with a projected arrival time, and carrying the source and jurisdiction it came from. Free 14-day trial. No credit card.
Get Free API Key Read the Docs