Sources
What each source is trusted for, under what licence, and what constrains it.
FIA Formula 1 regulations
- Authority
- official
- Licence
- FIA copyright; published for reference, not redistribution.
- Updated
- Reissued per season, amended in-season by WMSC decision.
- Cross-checked by
- Nothing here outranks it. Its own numbers are checked against each other across seasons, and the limits it sets are stored in regulation_limits rather than on any car.
- URL
- https://www.fia.com/regulations/formula-1
Primary authority for sporting, technical, financial and operational rules.
FIA 2026 Formula One Championship archive
- Authority
- official
- Licence
- FIA copyright.
- Updated
- Per event, during the season.
- Cross-checked by
- The 2026 calendar it gives is checked against the stored race register on every build.
- URL
- https://www.fia.com/events/fia-formula-one-world-championship/season-2026/2026-fia-formula-one-world-championship
Primary authority for FIA championship calendar, classifications and event status.
Formula1.com
- Authority
- official
- Licence
- FOM copyright; no reuse licence.
- Updated
- Continuous during the season.
- Cross-checked by
- Its career totals are reconciled against totals derived from the race records. That is what caught Russell's pole count and, before it, an internally inconsistent set of 2026 figures on the same pages.
- URL
- https://www.formula1.com/
Official Formula 1/FOM source for teams, drivers, cars, schedules, results and official explainers.
Official F1 team websites
- Authority
- official
- Licence
- Team copyright.
- Updated
- Around a launch, then rarely.
- Cross-checked by
- Car names cross-check against the chassis register; nothing else here can contradict a team's own history page.
- URL
- https://www.formula1.com/en/teams
Official team facts, car names, power units, staff, bases and team history.
Official circuit/promoter sources
- Authority
- official
- Licence
- Promoter copyright.
- Updated
- Around an event.
- Cross-checked by
- Circuit length and turn counts are checked against the layout timelines, which must be complete and non-overlapping where present.
- URL
- https://www.formula1.com/en/racing/2026
Circuit/event facts; verify against FIA homologation where a technical or legal detail matters.
Official driver profiles
- Authority
- official
- Licence
- FOM copyright.
- Updated
- Per event.
- Cross-checked by
- Every career win, pole and fastest-lap total is recomputed from the race records and compared.
- URL
- https://www.formula1.com/en/drivers
Driver nationality, number, biography and career statistics.
F1 results archive
- Authority
- official
- Licence
- FOM copyright.
- Updated
- Per event.
- Cross-checked by
- The winner of every race is held independently from the Wikipedia harvest; the two must agree.
- URL
- https://www.formula1.com/en/results
Season-by-season classifications and race results.
Wikipedia season results tables
- Authority
- reference
- Licence
- CC BY-SA 4.0. Share-alike reaches any prose taken from it - see ATTRIBUTION.md.
- Updated
- Continuous, by anyone.
- Cross-checked by
- Race count per season, contiguous rounds, and every driver and constructor name resolving to the register. NOT sufficient on its own for standings grids: they left-pack their cells, a driver who missed a round shifts every later result a column, and the winner cross-check passes anyway because winners sit in the dense top rows. That route is closed.
- URL
- https://en.wikipedia.org/wiki/List_of_Formula_One_World_Championship_points_scoring_systems
Admitted as a REFERENCE source for race-by-race results only (see the 'reference' confidence tier). Its season tables are transcribed from FIA classifications and were cross-checked on load against independently held season data. Not admissible for narrative, attribution or contested claims, and never promoted to 'verified' without an FIA/F1 check.
Fan sites, Reddit, secondary media, unsourced databases
- Authority
- forbidden
- Licence
- Various and mostly unstated.
- Updated
- Various.
- Cross-checked by
- Nothing. That is the reason for the ban, not the size of the data.
FORBIDDEN as authority under this database's verification policy. May be used to locate an official source, never to establish a fact.
F1DB
- Authority
- reference
- Licence
- CC BY 4.0 - attribution only, no share-alike, and NO NON-COMMERCIAL CLAUSE. That last absence is not a footnote: it is the reason the full classification ships in the committed database when the same facts from Jolpica-F1 could only ever be loaded onto a local copy. The most permissive licence of any bulk source used here, and now the most consequential.
- Updated
- Re-released after every race, versioned, with a public commit history and a changelog. Better maintained than anything else at this scale.
- Cross-checked by
- Heavily, in four independent places, all of them held here before F1DB was read. (1) The winner of every one of the 1,161 races came from the Wikipedia harvest; a race whose winner disagreed is refused WHOLE, and none was. The comparison is on sets, because a shared drive puts two drivers on position 1 and both are winners. (2) The champion, the runner-up and both their point totals for 76 seasons were already in `seasons`; the final standings must reproduce all four and do. (3) Qualifying position 1 is checked against the pole-sitter already stored - 13 races differ, every one a grid penalty or a sprint weekend, each recorded rather than resolved. (4) Its (constructor, season) -> chassis mapping is checked against the 41 CAR_SEASONS assertions already proved against published win totals. It carries NO technical specifications at all, so nothing it says can be mistaken for one.
- URL
- https://github.com/f1db/f1db
Since v2.15 the primary source for RESULTS as well as registers: the full classification for all 1,161 races (27,555 entries, 1950-2026), qualifying (26,975), championship standings after every round (34,495) and pit stops (22,472) - plus the chassis, engine, constructor and per-season entrant register it already supplied. Loaded by tools/f1db_fetch.py into diffable text, then built offline.
Wikipedia per-car articles ({{Racing car}} infobox)
- Authority
- reference
- Licence
- CC BY-SA 4.0.
- Updated
- Continuous, by anyone; a historic car's article may not change for years, which for a fixed specification is a feature.
- Cross-checked by
- Three checks, all of which must pass before a page is read at all: the constructor the infobox names must be the one F1DB gives the chassis; the years it reports must fall inside the seasons F1DB records it entered; and the article title must be a form of the chassis's own name. Afterwards its published win total is reconciled against the wins derived from this database's race records.
- URL
- https://en.wikipedia.org/wiki/Category:Formula_One_cars
Chassis specifications: construction, suspension, engine, gearbox, brakes, weight, wheelbase, track, tyres, designers, predecessor and successor. There is no unified specification dataset for Formula One cars anywhere; this is where the data lives. Harvested by tools/wikispec_fetch.py.
Jolpica-F1 (Ergast's maintained successor)
- Authority
- reference
- Licence
- CC BY-NC-SA 4.0 on the Ergast data it continues: NON-COMMERCIAL. The most restrictive licence of any source here, and the reason these rows are loaded locally rather than committed. That restriction now costs nothing for results, because F1DB supplies the same facts under CC BY.
- Updated
- Per event, community-run, and explicitly a volunteer continuation after Ergast's shutdown - the least certain future of any source here.
- Cross-checked by
- Now cuts both ways. Its winner must still equal the one already stored or the race is refused whole. Beyond that it CHECKS rather than writes: on a full load it disagrees with F1DB on 118 of 26,082 finishing positions, 0.45 per cent, and the pattern is a real difference in reading rather than an error - F1DB leaves a disqualified driver's position vacant while Jolpica promotes everyone below, so the 1983 Brazilian Grand Prix has no second place in one and Lauda second in the other. Its reconciliation caught a hand-relayed fabrication in v2.7 and the loader's own resolver handing Wilson Fittipaldi's Brabham results to his brother Emerson. The dump path is checked against the API path race by race (--verify-dump), because a second fetch implementation is a second place to be wrong.
- URL
- https://api.jolpi.ca/ergast/f1/
A SECOND OPINION on the full classification, which F1DB now supplies under a licence that permits committing it. tools/ergast_load.py no longer overwrites: it compares, records every disagreement in `discrepancies`, and leaves the stored value alone. It remains the ONLY source here for 628,454 lap times back to 1996, which F1DB does not carry.
OpenF1
- Authority
- reference
- Licence
- MIT for the code; the underlying data is Formula One Management's.
- Updated
- Real-time during a session.
- Cross-checked by
- Its lap and stint data can be checked against FastF1's for the overlapping seasons, which is the only reason it would be worth adding. Nothing in this database constrains a telemetry sample.
- URL
- https://openf1.org
Car telemetry from 2023: speed, throttle, brake, RPM, gear and position at about 3.7 Hz, plus intervals, stints and radio. Free with no authentication for historical data; only real-time needs a subscription. NOT loaded: it covers 2023+ where FastF1 covers 2018+, and telemetry does not belong in this file at all.
Formula 1 live timing, via FastF1
- Authority
- reference
- Licence
- MIT for the library; the data is Formula One Management's and FastF1's guidance is personal, non-commercial use. Never committed here.
- Updated
- Live during a session; nothing exists before 2018 and nothing will.
- Cross-checked by
- Its finishing order is checked against the winner already stored, the same test the Jolpica loader applies.
- URL
- https://github.com/theOehrly/Fast-F1
Per-lap timing, tyre stints, pit stops, race control messages and the team radio index, 2018 onwards. Loaded by tools/fastf1_load.py.
Wikimedia Commons (via the MediaWiki API)
- Authority
- reference
- Licence
- Per file, and they differ: sixteen distinct licence strings across 602 rows - CC BY-SA at four versions, CC BY at four more, CC0, public domain and national variants. There is no blanket credit line, so each row carries its own and the build refuses a file that names no author.
- Updated
- Continuous, by anyone. The lead image of an article is whatever an editor last put there, which is why the Commons-only and licence checks run on every build rather than once at harvest.
- Cross-checked by
- Weak, and this is the one place in the database where that is true. The ARTICLE is constrained - it already passed the three checks in tools/wikispec_fetch.py for constructor, seasons and name - so the claim recorded is 'the article proved to describe this chassis leads with this file'. But nothing here constrains what a photograph SHOWS, and there is no second source to disagree. Testing whether the file name mentions the car finds only 265 of 602, because most correct images are filed under the driver, so the test is recorded as name_matches and enforced nowhere. The failure it half-detects is real: the ATS D5 article leads with a photograph of officials and police. These rows are 'unverified' because that is what they are.
- URL
- https://commons.wikimedia.org/
The lead photograph of each accepted car article, and the attribution needed to display it. Loaded by tools/wikimedia_images.py. NO IMAGE IS STORED - article_images holds a reference and its credit, and the pixels are fetched from upload.wikimedia.org by whatever renders the page.
OpenStreetMap (via api.openstreetmap.org)
- Authority
- reference
- Licence
- ODbL 1.0 - share-alike AND a database right. That is a different obligation from every other source here, and it is confined to one table on purpose; see ATTRIBUTION.md. Nothing else derives from it.
- Updated
- Continuous, by anyone, and it maps only what is on the ground NOW. There is no historic geometry to be had: Spa's 14.1 km road course and Monza's banking are unmapped and unmappable, and Wikidata's own layout entities carry length and dates but no coordinates.
- Cross-checked by
- Strong, and it fired immediately. A circuit relation is not an ordered ring - its members include the pit lane - so a naive sum puts Monaco at 3.745 km against a published 3.337, twelve per cent long, and nothing about that number looks wrong on its own. What rejects it is length_km, held here before OSM was consulted. Excluding the pit lane by member role gives 3.388 km, and anything outside two per cent is refused rather than stored with a caveat. The measurement is then re-run in build.py from the stored coordinates, with its own copy of the arithmetic, because sharing the tool's would check nothing.
- URL
- https://www.openstreetmap.org/
Circuit centrelines: the shape of each track as currently mapped, stored as GeoJSON on circuit_geometry. Loaded by tools/osm_geometry.py. Relation ids come from Wikidata (P402), which is CC0 and brokers the identifier without constraining anything.
Wikipedia per-circuit articles
- Authority
- reference
- Licence
- CC BY-SA 4.0. The change_reason prose follows the article and carries share-alike with it - see ATTRIBUTION.md.
- Updated
- Continuous, by anyone. A circuit that last changed shape in 1974 has an article that may not have been edited in years, which cuts both ways.
- Cross-checked by
- Real but partial. A circuit's layout rows must form a complete, non-overlapping timeline or the build fails, and where a layout is still current its length is checked against the OSM trace. Neither test reaches a historic layout's length, which nothing here can contradict.
- URL
- https://en.wikipedia.org/wiki/Category:Formula_One_circuits
Circuit configuration timelines: which layout was raced in which years, its length and turn count, and why it changed. Feeds circuit_layouts.
Written for this project from general knowledge
- Authority
- authored
- Licence
- Original to this repository, and the only content here under no external obligation at all.
- Updated
- Whenever somebody edits it. There is no upstream to track and no version to pin.
- Cross-checked by
- NOTHING, and that is the entire point of giving it a name. It has no external source to be compared against and no check in verify.py that constrains a value - `records` is not tested at all, and what constrains grands_prix, constructor_lineage and personnel is referential and temporal only: ids resolve, years run forwards. Those prove the shape and say nothing about the claim. So nothing here may sit above 'medium', which is what that tier means: correct in substance, confirm the figure before publishing. It sat at 'high' until v2.16, which promised more than anything could deliver.
The glossary, the era and engine-era periodisations, the governance and safety timelines, the technical-innovation notes, the constructor lineage chains, the points-system table, the tyre-supplier list, the grand prix register, the personnel notes, the engine-manufacturer notes and the headline records list. Thirteen tables.