Tailstrike

NTSB defining event · CICTT: Abnormal Runway Contact

Defining event in
108 cases
In the sequence of
124 cases
Fatal cases
0
NTSB code
091

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 Tailstrike per year: 124 cases
20082
20092
20105
20117
20123
201310
20146
20156
20169
20179
20189
20193
20202
20218
20228
202311
20249
20258
20267
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\" = '091' 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\" = '091' 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 · 108

NTSB ERA27LA017Accident · Minor injuriesClass 4 · LimitedInvestigation openRobinson Helicopter R44 · Kinnelon, NJOct 20, 2026 · N744CJNTSB DCA26LA282Accident · No injuriesClass 4 · LimitedFinal reportAirbus A321-211 · New York, NYThe first officer’s excessive aft sidestick input following a bounced landing, and the line check pilot’s delayed remedial action, which resulted in an increase in the airplane’s pitch attitude and a subsequent tailstrike.Jul 14, 2026 · N382DN · Substantial damageNTSB WPR26LA172Accident · No injuriesClass 4 · LimitedFinal reportBell 407 · Young, AZThe pilot’s failure to maintain clearance from a tree stump during landing in mountainous terrain.Apr 29, 2026 · N407BB · Substantial damageNTSB DCA26LA142Accident · No injuriesClass 4 · LimitedFinal reportBoeing 787 · Houston, TXThe captain’s inadvertent activation of the takeoff/go around switch at touchdown that caused an increase in the airplane pitch attitude that was not corrected before the lower fuselage contacted the runway.Feb 27, 2026 · JA873A · Substantial damageNTSB DCA26LA115Accident · No injuriesClass 4 · LimitedFinal reportAirbus A321-271NX · San Francisco, CAThe first officer’s excessive aft sidestick input combined with decaying airspeed during initiation of a go-around, resulting in an increase in the airplane pitch attitude and subsequent lower fuselage contacting the runway.Feb 9, 2026 · N2188J · Substantial damageNTSB DCA26WA051Incident · No injuriesClass 5 · ForeignBAE BAE146 · Región de Magallanes y de la Antártica Chilena, ChileDec 3, 2025 · CC-ARNNTSB ANC25LA092Accident · No injuriesClass 4 · LimitedFinal reportEurocopter AS 350 B2 · Juneau, AKThe pilot’s failure to maintain adequate obstacle clearance during takeoff from uneven, snow-covered terrain in flat light conditions.Aug 22, 2025 · N149TH · Substantial damageNTSB DCA25LA286Accident · No injuriesClass 4 · LimitedFinal reportEmbraer-Empresa Brasileira De ERJ 170-200 LR · Boston, MAThe captain’s decision to continue the landing after the bounce and the subsequent misapplication of pitch controls. Contributing to the accident was the ongoing “land and hold short” operations that may have created an urgency to land.Jul 14, 2025 · N224JQ · Substantial damageNTSB DCA25LA266Accident · No injuriesClass 3 · LimitedInvestigation openAirbus A320-251N · Denver, COJul 12, 2025 · N384FRNTSB DCA25LA251Accident · No injuriesClass 4 · LimitedFinal reportBoeing 737-924ER · Las Vegas, NVThe first officer’s failure to maintain proper pitch attitude during flare which resulted in a bounced landing and a tailstrike.Jul 2, 2025 · N66831 · Substantial damage
See all 108 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\" = '091')
  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.