The canonical record

Data and corrections

Every result since 1886. Richer detail fills in over time — gaps shown honestly.

The record

Complete results, layers that fill in

Every result is known back to 1886. The richer detail thins as the record reaches into the Victorian past — this is exactly where, layer by layer and decade by decade.

6,028official matches

every result known, back to 1886

81%
Complete goalscorer rows
100%
Starting XIs
99%
Attendances

Swipe for all decades →

Layer
18801
1890256
1900384
1910247
1920451
1930420
1940172
1950472
1960531
1970515
1980516
1990562
2000591
2010554
2020356
All-time
Resultthe spine — every match
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100
100%
United scorerscomplete goal list
100
74
71
75
71
76
85
83
81
77
75
82
83
97
99
81%
Opposition goalswho scored against
100
22
36
61
64
71
65
75
73
69
60
58
56
61
68
61%
Starting XIthe eleven named
100
100
100
100
100
100
100
100
100
100
99
100
100
100
100
100%
Cardsbookings recorded
0
0
0
0
0
0
0
0
0
0
0
0
0
67
92
12%
Attendancecrowd recorded
100
98
100
100
100
100
100
99
100
100
100
100
100
100
81
99%
Assistssource-limited to recent eras
0
0
0
0
0
0
0
0
0
0
0
0
0
61
82
10%
Cell value is the percent of that decade’s matches carrying the layer.0%100%

Slice: all 6,028 matches in the database, grouped by decade. Every match carries a result row.

Intensity and the cell value are the share of each decade's matches that carry the layer. The all-time column on the right is the same share across the whole record.

The other cut

Coverage by competition type

The same layers, sliced by competition rather than by decade — league fixtures are the best-covered, the deep cup and European archive the thinnest.

  1. League
    Matches
    4,860
    Scorers
    3,922 (81%)
    Lineups
    4,859 (100%)
  2. FA Cup
    Matches
    464
    Scorers
    380 (82%)
    Lineups
    464 (100%)
  3. Europe
    Matches
    430
    Scorers
    362 (84%)
    Lineups
    430 (100%)
  4. League Cup
    Matches
    218
    Scorers
    180 (83%)
    Lineups
    217 (100%)
  5. Shields and Super Cups
    Matches
    40
    Scorers
    31 (78%)
    Lineups
    36 (90%)
  6. Test Matches
    Matches
    8
    Scorers
    4 (50%)
    Lineups
    8 (100%)
  7. World
    Matches
    8
    Scorers
    7 (88%)
    Lineups
    8 (100%)

Provenance

How the record is built and corrected

Every layered fact cites a source, and corrections follow one contract. The queue below is where the faint cells above turn into work.

Sources

Grouped by upstream source where several use cases share a lineage. Expand a family to see how each use case is applied and an example on file.

High-value gaps

The queue prioritises recent post-war United goalscorer gaps, then opposition goals, lineups, and attendance. Older archive work can still be added whenever a citation is strong.

For developers

Public read-only API

The API serves the same read-only record used by the app. Responses are plain JSON with permissive CORS, pagination on the large lists, and an attribution block that points back to this coverage ledger.

Treat result rows as the stable core and read facet flags before using event, lineup, assist, card, attendance, or source-derived fields as complete historical totals.

Dataset downloads

Each production build exports flat files from the compiled SQLite database, so the downloadable release matches the app and API. Use the manifest first to see file counts and build metadata.

Also layered onto lineups: 2,474 matches with used-substitute records and 882 with a named bench.