# Truck restriction data, measured

A truck router can only enforce a restriction the map records. That is
true of every routing engine, ours included, and it is the one limit
that no amount of engine work removes. So rather than assert that our
truck data is good, we measured it and published the measurement, with
the denominators attached.

No provider publishes restriction completeness for the road network they
route over. We found no provider that guarantees the accuracy of the
height and weight limits their trucks are routed against. This page
exists so that the gaps in ours are measured rather than assumed away.

Everything below comes from one audit run. Where a number is a share, the
denominator it is a share of is stated next to it.

## What we measured, and how

The source is a single OpenStreetMap extract, `uk.osm.pbf`, dated
5 August 2026, 2.24 GB, covering the whole United Kingdom including
Northern Ireland. One extract, one date, one pass. Re-running the audit
on a later extract will move these numbers, and we would rather publish a
dated measurement than an undated impression.

The unit of counting is the OSM way, except where a length in kilometres
is stated. A way is not a road and not a kilometre, so counts of ways and
shares of network length are reported separately rather than mixed.

Two denominators carry most of the page:

| Denominator | Count |
|---|---|
| Ways in the extract, all kinds | 35,707,141 |
| Highway ways | 8,212,278 |
| Ways carrying any truck-relevant restriction tag | 47,208 (0.57% of highway ways) |

A truck-relevant restriction tag means any of the tags in the table
below: a dimension limit, a weight limit, a hazardous-goods restriction,
or an HGV access rule.

## The tags that are there

| Tag | Ways |
|---|---|
| `maxheight` | 18,353 |
| `maxheight:physical` | 107 |
| `maxweight` | 11,594 |
| `maxweight:signed` | 10,351 |
| `maxwidth` | 4,374 |
| `maxlength` | 771 |
| `maxaxleload` | 109 |
| `hazmat` | 564 |
| `hgv` | 11,412 |

`maxweight:signed` is the one entry in that table that is not a limit. It
is signage metadata: it records whether a weight limit is signed, not
what the limit is. At 10,351 ways it is a large enough block to distort
any figure that mistakes it for a value, which is exactly what happens
below.

The most common values on the 11,412 `hgv` ways are `no` 3,670,
`destination` 3,058, `yes` 851, `designated` 528 and `delivery` 480.

## What the numbers say

**The head of the network is better covered than the whole.** Taking the
major classes, motorway down to secondary including link roads, the
extract holds 103,978 km across 429,664 ways. Of that, 7,029 km, or
6.76% of the major-class length, carries any truck-relevant tag. That is
far better than the 0.57% of highway ways across the whole extract, and
it is what you would expect: the roads that carry lorries are the roads
people tag for lorries. The two shares are not directly comparable, one
being a share of length and the other a share of way counts, but the
direction is not in doubt.

**The tail is thin, and it starts thinning early.** Within those same
major classes, primary roads sit at 1.10% and secondary roads at 1.33%.
Since the major-class figure as a whole is 6.76%, the coverage is
concentrated in the classes above primary. By the time you reach the
roads a delivery actually finishes on, the recorded restriction data is
close to absent.

**Values are mostly parseable, once the metadata is set aside.** About
6.7% of genuine dimension and weight values cannot be parsed into a
number. A naive pass over the same data reports 27.4%. The difference is
almost entirely `maxweight:signed`, whose values are not weights at all,
so counting them as unparseable limits badly overstates the problem. We
publish 6.7% and mention 27.4% only to explain why we do not publish it.

**A small conflation probe found the head covered.** We took the ten
most-struck bridges in the Network Rail struck-bridge dataset and looked
for a matching OSM height limit near each. Seven had a numeric
`maxheight` near the anchor point. Two misses were attributable to poor
anchors on our side rather than missing OSM data. One was a true absence:
Abbey Farm, Thetford, a struck bridge with no recorded height limit.

That result is head-biased by construction. n is 10, and the ten were
selected for being the most struck, which is close to selecting for the
ten most likely to have been noticed and tagged. It says the worst
offenders are largely known. It says nothing about the other bridges.

**Regionally, the picture is uneven rather than uniformly thin.** In a
Birmingham sample, 4 of 644 major bridge ways carried a height tag. In a
Cumbria sample, 0 of 893 did. Two samples are not a national survey, but
a gap that wide between an urban and a rural sample is not noise, and it
means a national completeness figure would hide more than it revealed.

**For context on why any of this matters:** the Network Rail dataset of
struck bridges runs to more than 5,000 structures, and 1,666 strikes were
recorded in 2024/25. That is about one every five hours.

## What this means for routing

Our truck costing applies every dimension, weight and hazardous-goods
constraint the graph carries, and excludes restricted ways rather than
penalising them. See [truck and ADR routing](/docs/adr) for exactly which
rules are enforced and which are not. What that page and this one share
is a single boundary: enforcement stops where the recorded data stops.

The consequence is worth stating in one sentence, because it is the
sentence most easily lost.

**Absence of a recorded restriction is not evidence that a road was
checked.** A route returned over an untagged bridge is not a claim that
the bridge is high enough. It is a claim that the map records no limit
there, which on this data is the ordinary case rather than the exception.
Treat a clear route on a sparsely tagged network as unverified, not as
verified.

This is also why we do not fabricate values. Where the graph carries no
limit, nothing is surfaced, rather than a plausible guess that would be
indistinguishable from a real one.

## What we are doing about it

**The audit tool is open, and it is the source of this page.** It
measures truck-attribute completeness cell by cell over an extract, so
the coverage of a given area can be checked rather than assumed. The
numbers above are its output, not a summary of it.

**Conflation against authoritative structure data is in progress.** The
ten-bridge probe was a probe, not a product. Matching recorded
restrictions against an authoritative structures dataset at full scale is
the work that turns "we found no tag here" into "there is no limit here",
and those are different statements.

**Ingest of the Department for Transport's D-TRO service is in
progress.** Traffic regulation orders are the legal source for many of
the restrictions that OSM records second-hand. Nothing from it is wired
into routing today, and we will say so on this page until it is.

We will re-run the audit on later extracts and update the figures here
with their new dates. If a number on this page moves in the wrong
direction, it will still be on this page.
