# Every year-on-year movement in the condition ratings of every US bridge, 1992-2025

Two tables, built from all 34 annual snapshots of the **National Bridge Inventory** that the
Federal Highway Administration publishes in delimited form, 1992 through 2025: 1,782
state-year files, 20,652,117 primary records, 1,039,109 distinct bridges.

## transitions.csv  (394,001 rows)

A complete contingency table of every year-on-year movement in the four condition ratings.
One row per **unit, year_from, component, rating_from, rating_to, reconstruction_recorded,
inspection_date_advanced**, with the count. Summed, it is 49,764,872 component-year
transitions: 1,147,581 upward, 2,884,159 downward, 45,733,132 unchanged.

Of the 1,147,581 upward movements, **1,065,846 (92.88 per cent)**
carry nothing in item 106.

## reversals.csv  (220,613 rows)

The event list: a rating rose, and within three years returned to its starting value or
lower, with no reconstruction recorded anywhere in the window. 220,613 events on
142,944 bridges, of which 22,747 reached two rating
points or more above where they started.

FHWA's own recommended QC/QA framework offers plus or minus one rating point as an example
of an acceptable out-of-tolerance definition, so the 197,866 single-point
excursions sit inside a tolerance the agency itself describes. The larger ones do not.

## What a reader can ask this that the page did not

- Per state and per decade: does the unaccompanied-upgrade share move?
- Restricted to substructures, or to culverts, whose scale is different.
- Conditioned on the starting rating: are 4s more likely to rise than 7s?
- Crossings of the 4/5 line, which is the federal boundary between a bridge in poor
  condition and one that is not, in either direction.
- Whether your own state's rate changed when it adopted element-level inspection.

## The one thing to hold on to before using it

`reconstruction_recorded = 0` does **not** mean no work was done. See `sources.json`, field
`what_it_is_not`. The legacy National Bridge Inventory has no field in which most
maintenance can be recorded; FHWA's replacement specification, first submitted in March
2026, adds one.

Every row of both files satisfies `schema.json`. `validate.mjs` checks that, and the byte
lengths and digests in `manifest.json`, without importing anything of ours.
