Defining event in
45 cases
In the sequence of
102 cases
Fatal cases
20
NTSB code
210

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 Structural icing per year: 102 cases
20087
20097
20106
20117
20128
201311
20146
20153
20164
20172
20188
20194
20202
20215
20224
20237
20247
20252
20262
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\" = '210' 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\" = '210' 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 · 45

NTSB WPR26LA126Accident · Minor injuriesClass 4 · LimitedFinal reportCirrus Design SR20 · Redington, AZThe pilot’s improper decision to continue the flight into icing conditions, which resulted in the accumulation of airframe icing and a subsequent aerodynamic stall.Mar 10, 2026 · N619AV · Substantial damageNTSB ERA25LA111Accident · Serious injuriesClass 4 · LimitedFinal reportCirrus Design SR22 · New Lexington, OHThe pilot’s flight into previously forecasted freezing rain, which resulted in ice accretion, reduced forward visibility, and a subsequent landing undershoot.Feb 5, 2025 · N406SR · Substantial damageNTSB WPR25LA053Accident · No injuriesClass 3 · LimitedFinal reportGulfstream AM Corp Comm Div 690D · Spokane, WAA partial loss of engine(s) power due ice ingestion.Dec 2, 2024 · N29GA · Substantial damageNTSB CEN25LA053Accident · No injuriesClass 3 · LimitedFinal reportPiper PA-28R-200 · Boscobel, WIThe ice obstruction of the engine oil breather tube and alternate air outlet, which resulted in a failure of the crankcase oil seal and loss of engine oil. Contributing to the accident was the incorrect engine oil breather tube installed in the airplane by…Dec 2, 2024 · N41997 · Substantial damageNTSB WPR25LA029Accident · Serious injuriesClass 3 · LimitedFinal reportDaher TBM700 · Pinedale, WYThe pilot’s failure to ensure that the airplane was free of snow contamination before takeoff and to follow the manufacturer’s anti-icing procedure during continued snowfall, which resulted in an aerodynamic stall and loss of control shortly after liftoff.…Oct 29, 2024 · N885CA · Substantial damageNTSB WPR24FA124Accident · 1 fatalClass 3 · FieldFinal reportGulfstream 695A · San Bernardino, CAThe pilot’s continued use of the airplane’s autopilot after flight into moderate to severe icing conditions, which resulted in an exceedance of the airplane’s critical angle of attack and an aerodynamic stall.Apr 14, 2024 · N965BC · DestroyedNTSB ERA24FA176Accident · 1 fatalClass 3 · FieldFinal reportPiper PA-32R-301 · Knoxville, TNThe pilot’s decision to depart into an area of instrument meteorological and icing conditions, which resulted in loss of airplane control and a subsequent in-flight breakup.Apr 12, 2024 · N9236J · DestroyedNTSB ERA24LA094Incident · No injuriesClass 3 · LimitedFinal reportCessna 208 · Dulles, VAThe pilot-in-command’s approach to the critical angle of attack during initial climb, which resulted in a vibration the flight crew improperly identified as an engine issue and resulted in the subsequent off-airport landing. Contributing to the accident was…Jan 19, 2024 · N1983X · Minor damageNTSB CEN24FA046Accident · 2 fatalClass 3 · FieldFinal reportSocata TBM 700 · Ludington, MIThe pilot’s decision to take off with ice/snow contamination on the airplane’s wings, which resulted in an aerodynamic stall and impact with terrain.Nov 26, 2023 · N850JH · DestroyedNTSB ANC23LA065Accident · 2 fatalClass 3 · LimitedFinal reportBeech B36TC · Cape Yakataga, AKThe pilot’s continued flight into moderate to severe icing conditions, including supercooled large droplets, over mountainous terrain, which resulted in a loss of control and impact with terrain. Contributing to the accident was the National Weather Service…Aug 27, 2023 · N6709Q · Destroyed
See all 45 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\" = '210')
  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.