Sample dataset · CC0

Flight delays, with the cancellations left in.

Eleven columns of departure record across eight invented carriers and sixteen airports. Most flights are close to on time, a long tail runs hours late, and about two percent are cancelled and carry blanks where the actual departure would be.

11 columns · 100 or 1,000 rows as a file · up to 1,000,000 rows generated here · CSV, JSON, JSONL, Excel, Parquet

Take a file

The 1,000-row file covers eight months of departures. It is a good size for a delay distribution and a small one for anything per route.

Enough volume for a league table

A hundred thousand flights over the same eight months gives enough volume per route and per carrier for a league table to mean something, which is the analysis this dataset invites.

The first eight rows

The first eight rows of the 1,000-row file. Look at the timestamp format: local time, no zone, space separated.

flight_idflight_dateairlineorigindestinationscheduled_depactual_depdep_delay_minarr_delay_mindistance_kmstatus
BY27522026-01-01Blue YonderLAXATL2026-01-01 11:20:00466cancelled
TR21532026-01-01Tailspin RegionalPHXCMH2026-01-01 12:10:002026-01-01 12:21:001120504on time
AW30232026-01-01Adventure Works AirSANBOS2026-01-01 07:45:002026-01-01 07:52:00701391on time
NW47292026-01-02Northwind AirSEADEN2026-01-02 07:55:002026-01-02 10:37:001621461079delayed
TR39032026-01-02Tailspin RegionalCMHSEA2026-01-02 22:20:002026-01-02 22:13:00-771290on time
PR35822026-01-02Proseware AirlinesBOSRDU2026-01-02 16:00:002026-01-02 15:58:00-2-51181on time
BY8422026-01-02Blue YonderBOSPHX2026-01-02 14:20:002026-01-02 14:49:0029151394delayed
AW8702026-01-03Adventure Works AirATLLAX2026-01-03 13:35:002026-01-03 13:28:00-7-19411on time

Eleven columns, and what each one holds

Column Type What it holds Example
flight_id text Airline code plus number, for example NW1284. BY2752
flight_date date Date of the scheduled departure, ascending through the file. 2026-01-01
airline text One of eight invented carriers. Blue Yonder
origin text Three letter origin code. LAX
destination text Three letter destination code. Never the same as origin. ATL
scheduled_dep timestamp Scheduled departure, local time, no zone suffix. Deliberately different in shape from the UTC columns elsewhere in the catalogue. 2026-01-01 11:20:00
actual_dep timestamp Actual departure. Blank on cancelled flights.
dep_delay_min integer Minutes late, negative when early. Blank on cancelled flights.
arr_delay_min integer Arrival delay in minutes. Usually near the departure delay, sometimes recovered in the air.
distance_km integer Great circle distance for the pair, fixed per route. 466
status text on time, delayed, cancelled or diverted. cancelled

What it models

An on-time performance export: what was meant to leave when, what actually left when, how late it was at both ends, how far it went and what became of it. It is the shape of the public flight performance data that turns up in every data journalism course, without the licensing question that comes with the real thing.

Eight carriers and sixteen airports, with the origin and destination guaranteed different. Distance is fixed per airport pair rather than drawn per row, so a route has one distance and a distance-versus-delay analysis is not fighting noise it should not have.

The timestamp format is a deliberate problem

scheduled_dep and actual_dep are written as a date and a time separated by a space, in local time, with no zone and no offset. That is the format flight data actually arrives in, and it is a format with a genuine ambiguity in it: a departure at 09:15 in Seattle and a departure at 09:15 in Boston are three hours apart and the file does not say so.

Every other timestamp in this collection is UTC with a Z suffix, precisely so that this one stands out. Loading both into the same tool and watching how each is parsed is a fast way to find out whether the tool is guessing, and guessing about time zones is where a surprising share of production data bugs come from.

The practical consequence is that dep_delay_min is the trustworthy column and any duration you compute yourself from the two timestamps is only trustworthy within a single airport. The dataset gives you both so you can see the difference.

Delays, and the shape of them

About 62 percent of flights depart between twelve minutes early and nine minutes late, which is the tight cluster around the scheduled time that real on-time data shows. The rest run from ten minutes late to about four hours, with the distribution squared so long delays are rare and short ones common.

arr_delay_min is the departure delay give or take about a quarter of an hour, because time can be made up in the air or lost in a holding pattern. That relationship is what makes a scatter plot of the two columns informative: a tight diagonal with visible spread, rather than either a perfect line or a cloud.

Roughly two percent of flights are cancelled. Those rows have blanks in actual_dep, dep_delay_min and arr_delay_min, because a flight that did not leave has no departure time and no delay. Averaging delay without excluding them is fine if your tool ignores nulls and wrong if it treats them as zero, and finding out which is a two-minute experiment on this file.

What people use it for

  • Timestamp parsing, on local times with no zone alongside a collection of UTC files.
  • Delay distributions with a realistic tight cluster and a long tail.
  • Handling rows where three related columns are blank together.
  • Route and carrier league tables, once you generate enough volume.
  • Computing a duration from two timestamps and comparing it against the given delay.

License, and the people in it

This dataset is dedicated to the public domain under CC0 1.0. Put it in a course, a paid product, a test suite, a bug report, a screenshot, a conference talk or a book. There is nothing to ask for, nothing to sign and no attribution required. A link back is welcome and is not a condition.

No real airline, flight number, passenger or crew appears in this file. The eight carriers are invented, the airport codes are real three-letter codes used as labels only, and no departure here corresponds to a flight that existed.

Questions people ask about this file

Why do the timestamps have no time zone?

Because flight data is published in local time and usually without an offset, and pretending otherwise would make the file easier and less useful. Every other timestamp in this collection is UTC with a Z suffix, so loading the two side by side shows you exactly how your tool handles the difference, which is worth knowing before a production dataset teaches you.

What is blank on a cancelled flight?

Three columns together: actual_dep, dep_delay_min and arr_delay_min. A flight that did not leave has no departure time and no delay, so those cells are empty rather than zero. About two percent of rows are affected. If your average delay changes when you exclude them, your tool is treating the blanks as zero and you have found something worth fixing.

Is the arrival delay related to the departure delay?

Yes. It is the departure delay plus or minus about a quarter of an hour, because time can be recovered in the air or lost waiting for a gate. That gives a scatter plot of the two a tight diagonal with real spread, which is more informative than either a perfect correlation or an unrelated cloud.

Are the airlines real?

No. The eight carriers are invented names of the kind used in software documentation, with two-letter codes to match. The airport codes are real three-letter identifiers used purely as labels, because inventing airport codes would make the file harder to read without making it any safer.