Sources and licences

Where every figure on this site comes from, and what you may do with it if you take it. Sources are ranked on whether anything independent can check them, not on how much data they hold.

What a licence cost, or bought

Licences decided what is in this database and what is not. If you reuse anything from here, this is the column that applies to you.

What a licence cost, or bought
SourceLicenceConsequence
F1DBCC BY 4.0Attribution only, and no non-commercial clause — which is why the full classification of every race ships in the committed database rather than being loaded locally. This is the licence that closed the largest gap this project had.
WikipediaCC BY-SA 4.0Share-alike, and it reaches any prose taken from it. Registers, notes and the era descriptions are downstream of this.
Jolpica-F1 (Ergast)CC BY-NC-SAThe non-commercial clause means these rows are loaded locally as a cross-check and never committed. They are what produces the 118 recorded finishing-position disagreements, and they are why those disagreements are recorded rather than resolved.
WikidataCC0No obligation at all. Used to resolve circuit identity to an OpenStreetMap relation.
OpenStreetMapODbL 1.0Share-alike plus a database right, so it is quarantined into a file of its own: the centrelines ship as f1-geometry.db, f1.db contains no OpenStreetMap data at all, and two databases side by side are a Collective Database rather than a derivative one. Your browser merges them to read what each trace measures; the circuits are drawn from F1DB’s outlines.
Wikimedia Commonsper fileSixteen different licence strings across the photographs, so each row carries its own. No pixels are stored — only a reference, its licence, and its photographer, and the photographer is displayed with the picture because the licence requires it.

The source registry

The source registry
RankSourceAuthorityUsed forLicenceUpdatedWhat can check it
1FIA Formula 1 regulationsofficialPrimary authority for sporting, technical, financial and operational rules.FIA copyright; published for reference, not redistribution.Reissued per season, amended in-season by WMSC decision.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.
2FIA 2026 Formula One Championship archiveofficialPrimary authority for FIA championship calendar, classifications and event status.FIA copyright.Per event, during the season.The 2026 calendar it gives is checked against the stored race register on every build.
3Formula1.comofficialOfficial Formula 1/FOM source for teams, drivers, cars, schedules, results and official explainers.FOM copyright; no reuse licence.Continuous during the season.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.
4Official F1 team websitesofficialOfficial team facts, car names, power units, staff, bases and team history.Team copyright.Around a launch, then rarely.Car names cross-check against the chassis register; nothing else here can contradict a team's own history page.
5Official circuit/promoter sourcesofficialCircuit/event facts; verify against FIA homologation where a technical or legal detail matters.Promoter copyright.Around an event.Circuit length and turn counts are checked against the layout timelines, which must be complete and non-overlapping where present.
6Official driver profilesofficialDriver nationality, number, biography and career statistics.FOM copyright.Per event.Every career win, pole and fastest-lap total is recomputed from the race records and compared.
7F1 results archiveofficialSeason-by-season classifications and race results.FOM copyright.Per event.Every race winner taken from it - the seasons after the Wikipedia race-winner harvest ends - is compared on load with the winner the Wikipedia pole and venue harvests give for the same race, and with F1DB's; any disagreement stops the build. A round run since its pages were last read has F1DB's winner alone, cited to F1DB, and nothing to compare it with.
8Wikipedia season results tablesreferenceAdmitted as a REFERENCE source for race-by-race results (see the 'reference' confidence tier). Its season tables are transcribed from FIA classifications, and a race winner harvested from them is compared on load with F1DB's. Its per-race articles are cited for two things beyond that, both admitted on the record: the team radio quotations, which are narrative and a declared deviation, and the race entry notes saying why a finisher inside the paid places scored nothing, which are classification facts as the race's article states them. Otherwise not admissible for narrative, attribution or contested claims, and never promoted to 'verified' without an FIA/F1 check.CC BY-SA 4.0. Share-alike reaches any prose taken from it - see ATTRIBUTION.md.Continuous, by anyone.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.
9Fan sites, Reddit, secondary media, unsourced databasesforbiddenFORBIDDEN as authority under this database's verification policy. May be used to locate an official source, never to establish a fact.Various and mostly unstated.Various.Nothing. That is the reason for the ban, not the size of the data.
10F1DBreferenceSince v2.15 the primary source for RESULTS as well as registers: the full classification for all 1,167 races (27,592 entries, 1950-2026), qualifying (27,105), championship standings after every round (34,700) and pit stops (22,655) - plus the chassis, engine, constructor and per-season entrant register it already supplied, and since the outline of every one of its 160 circuit layouts (SVG assets drawn by Jules Roy) with the layout each race ran. Loaded by tools/f1db_fetch.py into diffable text, then built offline.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.Re-released after every race, versioned, with a public commit history and a changelog. Better maintained than anything else at this scale.Heavily, in four independent places, all of them held here before F1DB was read. (1) The winner of 1,161 of the 1,167 races was established here before F1DB was read - from the Wikipedia race-winner harvest, and from formula1.com for the seasons after it; a race whose winner disagreed is refused WHOLE, and none was. A round run since formula1.com was last read has F1DB's winner and nothing to compare it with. 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.
11Wikipedia per-car articles ({{Racing car}} infobox)referenceChassis 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.CC BY-SA 4.0.Continuous, by anyone; a historic car's article may not change for years, which for a fixed specification is a feature.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.
12Jolpica-F1 (Ergast's maintained successor)referenceA 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.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.Per event, community-run, and explicitly a volunteer continuation after Ergast's shutdown - the least certain future of any source here.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.
13OpenF1referenceCar 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.MIT for the code; the underlying data is Formula One Management's.Real-time during a session.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.
14Formula 1 live timing, via FastF1referencePer-lap timing, tyre stints, pit stops, race control messages and the team radio index, 2018 onwards. Loaded by tools/fastf1_load.py.MIT for the library; the data is Formula One Management's and FastF1's guidance is personal, non-commercial use. Never committed here.Live during a session; nothing exists before 2018 and nothing will.Its finishing order is checked against the winner already stored, the same test the Jolpica loader applies.
15Wikimedia Commons (via the MediaWiki API)referenceThe lead photograph of each accepted car article, and the attribution needed to display it; for a chassis with no article, a photograph filed under the Commons category named for it (AF-42); for a circuit, an aerial photograph in the body of the article mapped to it (VD-61); for a race, photographs filed under the Commons category named for it (PD-64): 4,680 references across the four. 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.Per file, and they differ: sixteen distinct licence strings across the 623 car-article rows alone - 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.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.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 280 of 623, 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. For a chassis with no article, a photograph filed under a Commons category named for it is taken instead and held one rung lower, at 'catalogued' (AF-42). For a circuit (VD-61) the file name test is the condition of taking the file, not a signal: an aerial photograph in the mapped article whose name names the circuit by a venue name, re-checked on every build. What it shows is no better established, and those rows are 'unverified' too. For a race (PD-64) the claim is a Commons editor's filing under the race's category, narrowed by what the file's name says - a trophy, a museum, another season - and held at 'catalogued' with no name test claimed (name_matches 0): that a photograph was taken at the race is checked by nothing.
16OpenStreetMap (via api.openstreetmap.org)referenceCircuit 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.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.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.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.
17Wikipedia per-circuit articlesreferenceCircuit configuration timelines: which layout was raced in which years, its length and turn count, and why it changed. Feeds circuit_layouts. Also, from the List of Formula One circuits, which article describes each circuit (harvest/circuit_articles.txt), matched on country, seasons and races held and checked by verify.py; build.py loads it into circuits.article and circuits.article_section, each value a claim citing the list's revision (VD-61).CC BY-SA 4.0. The change_reason prose follows the article and carries share-alike with it - see ATTRIBUTION.md.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.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.
18Written for this project from general knowledgeauthoredThe 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 and the engine-manufacturer notes. Twelve tables; the records list left it in v2.23, derived from the race records instead of written.Original to this repository, with no upstream to owe anything to. The prose of ten of its twelve tables is offered under CC BY 4.0 (meta.project_prose_columns, PM-49). The glossary and technical_innovations stay under the release's CC BY-SA 4.0: one technical_innovations description follows a Wikipedia article's wording, and the glossary's grant is an open question.Whenever somebody edits it. There is no upstream to track and no version to pin.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 - what constrains grands_prix, constructor_lineage and personnel is referential and temporal only: ids resolve, years run forwards, and a lineage period holds its constructor's race entries. Those prove the shape and say nothing about the claim - that Toleman and Alpine are one team. 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.
Ranked by authority, not by volume. The last column is the one that decides where a source sits.

Photograph licences

Commons files do not share one licence, so each photograph carries its own — which is why the credit always travels with the picture.

Photograph licences
LicencePhotographsTerms
CC BY-SA 2.0159creativecommons.org
CC BY-SA 4.0137creativecommons.org
CC BY-SA 3.0133creativecommons.org
CC BY 2.0117creativecommons.org
Public domain15—
CC BY-SA 2.0 de13creativecommons.org
CC BY 3.010creativecommons.org
CC BY 4.010creativecommons.org
CC010creativecommons.org
CC BY-SA 3.0 nl5creativecommons.org
CC BY-SA 3.0 de4creativecommons.org
CC BY 2.53creativecommons.org
CC BY-SA 2.53creativecommons.org
Attribution2—
CC BY 2.0 de1creativecommons.org
CC BY-SA 1.01creativecommons.org

Using this data

You are welcome to. Carry the licence with whatever you take: attribute F1DB for the race records, keep share-alike on anything derived from Wikipedia prose, and treat a traced centreline as OpenStreetMap under ODbL — that obligation travels with it.

Circuit outlines from F1DB (CC BY 4.0), drawn by Jules Roy. Carry that credit with any outline you take. Shown here in the site’s own ink at a constant stroke, otherwise as drawn. The outline is F1DB’s, for every layout; the trace is OpenStreetMap’s, where it exists.

This site is unaffiliated with Formula One, the FIA, or any team. Formula One, F1 and Grand Prix are trademarks of their respective owners and are used here descriptively.