Defining event in
854 cases
In the sequence of
1,074 cases
Fatal cases
549
NTSB code
120

NTSB has coded findings and defining events since 2008. Earlier cases used its older occurrence and cause codes, so they aren’t counted here.

When and where

In green, cases where it was the defining event; in gray, cases where it came elsewhere in the sequence. The map shows the cases where it was the defining event. Events are coded with the final report, so the latest years are incomplete.

Cases per year

2008Defining eventElsewhere in the sequence2026
Cases with Controlled flight into terr/obj (CFIT) per year: 1,074 cases
200857
200970
201070
201199
201279
201391
201461
201575
201656
201768
201863
201940
202035
202138
202235
202338
202439
202533
202627
Query with SQL
duckdb -csv -c "SELECT year(c.\"eventDate\") AS year, count(DISTINCT e.case_mkey) AS cases,
    count(DISTINCT e.case_mkey) FILTER (WHERE e.\"isDefiningEvent\") AS defining
  FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' e JOIN 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c ON c.\"mKey\" = e.case_mkey
  WHERE e.\"tier2Number\" = '120' AND e.case_mkey IN (SELECT case_mkey FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' WHERE \"isDefiningEvent\")
  GROUP BY 1
  ORDER BY 1"

Prints the counts as CSV. It reads the release’s Parquet files over HTTPS, so there’s nothing to download first. Install DuckDB to run it.

In these cases

Query with SQL
duckdb -csv -c "WITH defining AS (SELECT * FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' WHERE \"tier2Number\" = '120' AND \"isDefiningEvent\")
  SELECT * FROM (
  SELECT 'Phase of flight' AS kind, e.\"tier1Number\" AS code, max(e.\"eventTier1Name\") AS name, count(DISTINCT e.case_mkey) AS cases
  FROM defining e
  GROUP BY ALL
  UNION ALL
  SELECT 'Finding in the probable cause', left(f.\"findingCode\", 8), max(f.\"tier4Name\"), count(DISTINCT f.case_mkey)
  FROM defining e JOIN 'https://openairdocs.org/data/latest/ntsb_findings.parquet' f ON f.case_mkey = e.case_mkey AND f.aircrafts_position = e.aircrafts_position AND f.\"inProbableCause\"
  WHERE f.\"findingCode\" GLOB '[0-9][0-9]*'
  GROUP BY ALL
  UNION ALL
  SELECT 'Aircraft model', a.aircraft_model_code, any_value(concat_ws(' ', m.manufacturer, m.model)), count(DISTINCT e.case_mkey)
  FROM defining e JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = e.case_mkey AND a.position = e.aircrafts_position
  LEFT JOIN 'https://openairdocs.org/data/latest/faa_aircraft_model.parquet' m ON m.code = a.aircraft_model_code
  WHERE a.aircraft_model_code IS NOT NULL
  GROUP BY ALL
  )
  QUALIFY row_number() OVER (PARTITION BY kind ORDER BY cases DESC) <= 10
  ORDER BY kind, cases DESC"

Prints the counts as CSV. It reads the release’s Parquet files over HTTPS, so there’s nothing to download first. Install DuckDB to run it.

Newest cases · 854

NTSB WPR27FA014Accident · 2 fatalClass 3 · FieldInvestigation openPiper PA-18-150 · Aeneas, WAOct 11, 2026 · N927JSNTSB CEN26LA324Accident · 2 fatalClass 3 · LimitedPreliminary reportMagni M16 · Annapolis, MOOn September 23, 2026, about 1755 central daylight time, an experimental Magni M16 gyroplane, N109MG, was substantially damaged when it was involved in an accident near Annapolis, Missouri. The pilot and passenger were both fatally injured. The gyroplane was…Sep 23, 2026 · N109MG · Substantial damageNTSB ERA26LA307Accident · No injuriesClass 4 · LimitedFinal reportPiper PA-28-181 · Altoona, PAThe pilot’s descent below the glidepath and collision with trees during a missed approach.Aug 14, 2026 · N586MA · Substantial damageNTSB ERA26LA300Accident · Serious injuriesClass 4 · LimitedFinal reportWaco Classic 2T-1A-2 · Clermont, FLThe pilot’s failure to maintain clearance from trees during the landing approach.Aug 14, 2026 · N621GL · DestroyedNTSB WPR26LA266Accident · No injuriesClass 4 · LimitedInvestigation openMaule M-4-180V · Sapinero, COJul 18, 2026 · N489LA · Substantial damageNTSB ERA26FA271Accident · 3 fatalClass 3 · FieldPreliminary reportSmith Aerostar 601 · Lake Clear, NYOn July 13, 2026, about 2236 eastern daylight time, a Smith Aerostar 601P, N800AA was destroyed when it was involved in an accident near Lake Clear, New York. The private pilot and two passengers were fatally injured. The airplane was operated as a Title 14…Jul 14, 2026 · N800AA · DestroyedNTSB ERA26FA266Accident · 1 fatalClass 3 · FieldPreliminary reportSikorsky S76 · Huntersville, WVOn July 10, 2026, about 0745 eastern daylight time, a Sikorsky S-76D helicopter, N93RT, was destroyed when it was involved in an accident near Huntersville, West Virginia. The commercial pilot was fatally injured. The helicopter was operated as a Title 14…Jul 10, 2026 · N93RT · DestroyedNTSB WPR26LA250Accident · No injuriesClass 4 · LimitedInvestigation openAeronca 7AC · Buffalo, WYJul 7, 2026 · N1097E · Substantial damageNTSB WPR26FA232Accident · 1 fatalClass 3 · FieldPreliminary reportCessna 172 · Willard, UTOn June 23, 2026, at about 2247 mountain daylight time, a Cessna 172S, N387AF, was destroyed when it was involved in an accident near Willard, Utah. The pilot was fatally injured. The airplane was operated as a Title 14 Code of Federal Regulations Part 91…Jun 24, 2026 · N387AF · DestroyedNTSB WPR26LA234Accident · No injuriesClass 4 · LimitedFinal reportPiper PA-12 · Dixie, IDThe pilot's delayed decision to initiate a go-around and subsequent failure to maintain clearance from rising terrain.Jun 23, 2026 · N3013M · Substantial damage
See all 854 cases
Query with SQL
duckdb -csv -c "SELECT c.\"ntsbNumber\", c.\"eventDate\", c.\"eventType\", c.\"eventCity\", c.\"eventStateOrRegion\", a.n_number, a.\"aircraftMake\", a.\"aircraftModel\", c.\"highestInjuryLevel\", c.\"totalFatal\", c.\"completionStatus\", c.report_url
  FROM 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c LEFT JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = c.\"mKey\" AND a.position = 1
  WHERE c.\"mKey\" IN (SELECT e.case_mkey FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' e WHERE e.\"isDefiningEvent\" AND e.\"tier2Number\" = '120')
  ORDER BY c.\"eventDate\" DESC, c.\"ntsbNumber\" DESC"

Prints the whole list as CSV. It reads the release’s Parquet files over HTTPS, so there’s nothing to download first. Install DuckDB to run it.