NTSB phases of flight

When each accident or incident happened, for 177,594 cases since 1962. From 1962 to 1981 and from 2008 on, NTSB codes phases with the CICTT phases it uses now. From 1982 to 2007 it used its older phase codes, which are counted here under the CICTT main phase each maps to (in gray on the charts).

All phases

Cases since 1962 in each phase, with the fatal ones.

Query with SQL
duckdb -csv -c "WITH phase_names(main, name) AS (VALUES (100, 'Prior to flight'), (150, 'Standing'), (200, 'Pushback/towing'), (250, 'Taxi'), (300, 'Takeoff'), (350, 'Initial climb'), (400, 'Enroute'), (450, 'Maneuvering'), (500, 'Approach'), (550, 'Landing'), (600, 'Emergency descent'), (650, 'Uncontrolled descent'), (700, 'Post-impact'), (750, 'After landing'), (800, 'Other'), (990, 'Unknown')),
    crosswalk(code, main, name) AS (VALUES (500, 150, 'Standing'), (501, 150, 'Standing - pre-flight'), (502, 150, 'Standing - starting engine(s)'), (503, 150, 'Standing - engine(s) operating'), (504, 150, 'Standing - engine(s) not operating'), (505, 150, 'Standing - idling rotors'), (510, 250, 'Taxi'), (511, 200, 'Taxi - pushback/tow'), (512, 250, 'Taxi - to takeoff'), (513, 250, 'Taxi - from landing'), (514, 250, 'Taxi - aerial'), (520, 300, 'Takeoff'), (521, 300, 'Takeoff - roll/run'), (522, 350, 'Takeoff - initial climb'), (523, 300, 'Takeoff - aborted'), (530, 400, 'Climb'), (531, 400, 'Climb - to cruise'), (540, 400, 'Cruise'), (541, 400, 'Cruise - normal'), (542, 400, 'Maneuvering - holding (IFR)'), (550, 400, 'Descent'), (551, 400, 'Descent - normal'), (552, 600, 'Descent - emergency'), (553, 650, 'Descent - uncontrolled'), (560, 500, 'Approach'), (561, 500, 'Approach - VFR pattern - downwind'), (562, 500, 'Approach - VFR pattern - base turn'), (563, 500, 'Approach - VFR pattern - base leg/base to final'), (564, 500, 'Approach - VFR pattern - final approach'), (565, 500, 'Go-around (VFR)'), (566, 500, 'Approach - IAF to FAF/outer marker (IFR)'), (567, 500, 'Approach - FAF/outer marker to threshold (IFR)'), (568, 500, 'Circling (IFR)'), (569, 500, 'Missed approach (IFR)'), (570, 550, 'Landing'), (571, 550, 'Landing - flare/touchdown'), (572, 550, 'Landing - roll'), (573, 550, 'Landing - aborted'), (574, 550, 'Emergency landing'), (575, 550, 'Emergency landing after takeoff'), (576, 600, 'Emergency descent/landing'), (580, 450, 'Maneuvering'), (581, 450, 'Maneuvering - aerial application'), (582, 450, 'Maneuvering - turn to reverse direction'), (583, 450, 'Maneuvering - turn to landing area (emergency)'), (590, 450, 'Hover'), (591, 450, 'Hover - in ground effect'), (592, 450, 'Hover - out of ground effect'), (600, 800, 'Other'), (610, 990, 'Unknown')),
    current_codes AS (
      SELECT e.case_mkey, TRY_CAST(e.\"tier1Number\" AS INTEGER) AS code,
        row_number() OVER (PARTITION BY e.case_mkey ORDER BY coalesce(e.\"isDefiningEvent\", false) DESC, e.position) AS n
      FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' e
      WHERE e.aircrafts_position = 1 AND e.\"tier1Number\" GLOB '[1-9][0-9]*'
        AND (e.\"isDefiningEvent\" OR e.case_mkey IN (SELECT \"mKey\" FROM 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' WHERE \"isPre1982\"))
    ),
    phases AS (
      SELECT case_mkey, 'current' AS scheme, code, CASE WHEN code >= 990 THEN 990 ELSE code // 50 * 50 END AS main
      FROM current_codes WHERE n = 1
      UNION ALL
      SELECT o.case_mkey, 'older', o.\"phaseOfFlightCode\", w.main
      FROM 'https://openairdocs.org/data/latest/ntsb_occurrences.parquet' o JOIN crosswalk w ON w.code = o.\"phaseOfFlightCode\"
      WHERE o.aircrafts_position = 1 AND o.\"occurrenceNumber\" = 1 AND o.case_mkey NOT IN (SELECT case_mkey FROM current_codes)
    ),
    case_phases AS (
      SELECT p.*, c.\"eventDate\", c.\"highestInjuryLevel\" = 'Fatal' AS fatal, a.aircraft_model_code
      FROM phases p JOIN 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c ON c.\"mKey\" = p.case_mkey
      LEFT JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = p.case_mkey AND a.position = 1
      WHERE c.\"eventDate\" >= DATE '1962-01-01' AND p.main IN (SELECT main FROM phase_names)
    )
  SELECT p.main AS phase, n.name, count(*) AS cases, count(*) FILTER (WHERE p.fatal) AS fatal_cases,
    count(*) FILTER (WHERE p.scheme = 'older') AS older_codes
  FROM case_phases p JOIN phase_names n USING (main)
  GROUP BY ALL
  ORDER BY 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.

Over the years

In gray, cases in NTSB’s older codes, counted through the table below. Compare years within an era: the coding changed in 1982 and 2008, and so does the part of the record the phase comes from. A first occurrence (1982 to 2007) is often in flight, before the landing, so landings count lower then.

Landing
19622026
Cases in Landing, per year: 53,676 cases
196222
196319
19642,152
19652,293
19662,496
19672,731
19681,964
19691,749
19701,680
19711,626
19721,480
19731,368
19741,387
19751,285
19761,307
19771,222
19781,325
19791,135
19801,123
19811,048
1982939
1983885
1984853
1985739
1986661
1987699
1988605
1989584
1990556
1991503
1992534
1993524
1994516
1995481
1996529
1997508
1998545
1999563
2000517
2001497
2002516
2003515
2004522
2005543
2006470
2007536
2008539
2009474
2010511
2011519
2012500
2013420
2014412
2015422
2016527
2017490
2018518
2019463
2020420
2021455
2022494
2023477
2024477
2025451
2026355

53,676 cases · 764 fatal

Enroute
19622026
Cases in Enroute, per year: 35,864 cases
196218
196328
1964703
1965750
1966856
1967893
1968881
1969995
1970996
1971941
1972894
1973935
1974968
1975977
1976927
1977936
19781,018
1979968
1980873
1981881
1982786
1983734
1984747
1985704
1986693
1987616
1988656
1989590
1990548
1991574
1992542
1993533
1994498
1995506
1996511
1997466
1998467
1999452
2000451
2001396
2002407
2003415
2004380
2005390
2006325
2007353
2008255
2009309
2010270
2011287
2012309
2013280
2014258
2015295
2016324
2017275
2018340
2019348
2020248
2021323
2022311
2023322
2024368
2025347
2026217

35,864 cases · 9,802 fatal

Approach
19622026
Cases in Approach, per year: 20,989 cases
196214
196310
1964530
1965502
1966600
1967640
1968597
1969572
1970583
1971550
1972522
1973543
1974541
1975530
1976504
1977586
1978567
1979541
1980508
1981473
1982433
1983445
1984433
1985408
1986382
1987327
1988342
1989324
1990334
1991308
1992291
1993276
1994251
1995301
1996272
1997261
1998238
1999244
2000256
2001230
2002232
2003236
2004216
2005229
2006225
2007258
2008210
2009190
2010178
2011194
2012181
2013189
2014178
2015158
2016160
2017191
2018172
2019163
2020156
2021178
2022204
2023186
2024163
2025186
202687

20,989 cases · 4,386 fatal

Initial climb
19622026
Cases in Initial climb, per year: 20,554 cases
19623
19634
1964505
1965555
1966582
1967587
1968577
1969582
1970552
1971541
1972507
1973482
1974556
1975543
1976521
1977556
1978566
1979502
1980505
1981499
1982490
1983507
1984466
1985418
1986394
1987380
1988368
1989348
1990351
1991324
1992306
1993307
1994292
1995289
1996244
1997272
1998266
1999239
2000221
2001219
2002200
2003227
2004210
2005204
2006180
2007202
2008212
2009173
2010163
2011177
2012193
2013122
2014130
2015165
2016141
2017149
2018155
2019146
2020112
2021165
2022161
2023163
2024143
2025134
2026101

20,554 cases · 3,669 fatal

Maneuvering
19622026
Cases in Maneuvering, per year: 18,845 cases
1964415
1965419
1966366
1967410
1968394
1969360
1970330
1971384
1972359
1973407
1974410
1975407
1976480
1977443
1978433
1979384
1980377
1981374
1982416
1983476
1984462
1985402
1986357
1987357
1988349
1989313
1990307
1991350
1992309
1993315
1994322
1995320
1996279
1997262
1998259
1999267
2000281
2001257
2002241
2003263
2004224
2005212
2006203
2007222
2008235
2009208
2010218
2011250
2012236
2013216
2014199
2015217
2016177
2017201
2018187
2019197
2020165
2021186
2022186
2023191
2024166
2025145
202688

18,845 cases · 6,439 fatal

Takeoff
19622026
Cases in Takeoff, per year: 14,027 cases
19624
19635
1964352
1965314
1966410
1967449
1968327
1969364
1970345
1971383
1972265
1973299
1974343
1975315
1976281
1977333
1978344
1979321
1980251
1981289
1982254
1983247
1984238
1985192
1986182
1987187
1988168
1989162
1990185
1991191
1992146
1993140
1994175
1995197
1996145
1997154
1998153
1999175
2000162
2001148
2002153
2003162
2004129
2005143
2006127
2007150
2008170
2009205
2010196
2011188
2012184
2013153
2014188
2015184
2016191
2017195
2018172
2019197
2020193
2021180
2022176
2023204
2024216
2025204
2026172

14,027 cases · 836 fatal

Taxi
19622026
Cases in Taxi, per year: 6,396 cases
19626
19636
1964346
1965306
1966372
1967381
1968215
1969200
1970212
1971189
1972181
1973177
1974169
1975179
1976151
1977156
1978184
1979134
1980132
1981113
1982127
1983104
198496
198573
198670
198787
198883
198973
199074
199149
199255
199360
199451
199556
199659
199764
199865
199955
200057
200157
200262
200349
200448
200552
200651
200749
200864
200945
201041
201145
201241
201344
201433
201543
201638
201745
201850
201951
202025
202147
202252
202348
202445
202558
202646

6,396 cases · 72 fatal

Uncontrolled descent
19622026
Cases in Uncontrolled descent, per year: 2,195 cases
1964101
1965119
1966119
1967125
1968142
1969127
1970125
1971136
1972135
1973117
1974103
197599
197692
1977118
1978102
197993
198085
198197
19823
19835
19846
198514
19865
19879
19893
19906
19917
19929
19936
19942
19955
19972
19985
19994
20007
20015
20024
20033
20044
20053
20064
20071
20085
20091
20106
20114
20122
20132
20155
20161
20181
20192
20211
20221
20244
20252
20261

2,195 cases · 1,833 fatal

Standing
19622026
Cases in Standing, per year: 2,081 cases
19622
19633
1964113
196586
196663
196770
196836
196944
197052
197150
197254
197334
197456
197522
197632
197726
197837
197940
198029
198126
198231
198346
198435
198542
198640
198753
198841
198936
199025
199130
199224
199330
199435
199533
199623
199724
199828
199929
200027
200136
200225
200329
200424
200525
200638
200723
200821
200930
201026
201130
201227
201314
201422
201522
201633
201718
201816
201910
202012
20219
202216
202315
202418
202522
202613

2,081 cases · 204 fatal

Unknown
19622026
Cases in Unknown, per year: 1,970 cases
19621
19631
196429
196526
196636
196748
196859
196931
197033
197122
197230
197328
197427
197540
197615
197730
197838
197941
198030
198127
198251
198346
198447
198541
198618
198723
198824
198920
199025
199115
199222
199322
199412
199513
199619
199716
199820
199923
200013
200118
20029
200312
20046
200511
20067
200710
20087
200910
201019
201116
201219
201314
201425
201527
201635
201737
201845
201926
202039
202160
202272
202340
202460
202573
2026211

1,970 cases · 1,401 fatal

Emergency descent
19622026
Cases in Emergency descent, per year: 507 cases
19632
19645
19654
196610
19673
19686
19693
19706
19713
19722
19737
19744
19756
19763
19774
197810
19795
19804
19813
19821
19832
19848
198510
198611
19879
19884
19893
19904
19918
19924
19935
19945
19953
19963
19973
19988
19996
20005
20015
200211
20036
20045
200510
20067
20072
200814
200931
201017
201118
201218
201316
201417
201516
201615
201714
201811
20195
202010
202112
20229
202314
202415
202513
20264

507 cases · 86 fatal

Other
19622026
Cases in Other, per year: 211 cases
198211
19838
198410
19854
19868
19874
19881
19895
19907
19918
19927
19933
19953
19963
19973
19984
19993
20002
20015
20024
20032
20045
20051
20064
20071
20085
20094
20104
20115
20126
20134
20144
20156
20165
20172
20183
20191
20207
20219
20226
20236
20243
20256
20269

211 cases · 75 fatal

Prior to flight
19622026
Cases in Prior to flight, per year: 136 cases
20082
20094
201010
20113
20126
201310
20147
20156
20169
201713
201811
20198
20207
202111
20224
20237
20248
20256
20264

136 cases · 8 fatal

Pushback/towing
19622026
Cases in Pushback/towing, per year: 133 cases
19821
19831
19851
19871
19882
19894
19911
19925
19942
19955
19962
19973
19983
19995
20004
20013
20024
20039
20043
20053
20063
20072
20088
20091
20104
20119
20121
20131
20144
20153
20163
20174
20185
20196
20211
20221
20232
20246
20253
20264

133 cases · 4 fatal

Query with SQL
duckdb -csv -c "WITH phase_names(main, name) AS (VALUES (100, 'Prior to flight'), (150, 'Standing'), (200, 'Pushback/towing'), (250, 'Taxi'), (300, 'Takeoff'), (350, 'Initial climb'), (400, 'Enroute'), (450, 'Maneuvering'), (500, 'Approach'), (550, 'Landing'), (600, 'Emergency descent'), (650, 'Uncontrolled descent'), (700, 'Post-impact'), (750, 'After landing'), (800, 'Other'), (990, 'Unknown')),
    crosswalk(code, main, name) AS (VALUES (500, 150, 'Standing'), (501, 150, 'Standing - pre-flight'), (502, 150, 'Standing - starting engine(s)'), (503, 150, 'Standing - engine(s) operating'), (504, 150, 'Standing - engine(s) not operating'), (505, 150, 'Standing - idling rotors'), (510, 250, 'Taxi'), (511, 200, 'Taxi - pushback/tow'), (512, 250, 'Taxi - to takeoff'), (513, 250, 'Taxi - from landing'), (514, 250, 'Taxi - aerial'), (520, 300, 'Takeoff'), (521, 300, 'Takeoff - roll/run'), (522, 350, 'Takeoff - initial climb'), (523, 300, 'Takeoff - aborted'), (530, 400, 'Climb'), (531, 400, 'Climb - to cruise'), (540, 400, 'Cruise'), (541, 400, 'Cruise - normal'), (542, 400, 'Maneuvering - holding (IFR)'), (550, 400, 'Descent'), (551, 400, 'Descent - normal'), (552, 600, 'Descent - emergency'), (553, 650, 'Descent - uncontrolled'), (560, 500, 'Approach'), (561, 500, 'Approach - VFR pattern - downwind'), (562, 500, 'Approach - VFR pattern - base turn'), (563, 500, 'Approach - VFR pattern - base leg/base to final'), (564, 500, 'Approach - VFR pattern - final approach'), (565, 500, 'Go-around (VFR)'), (566, 500, 'Approach - IAF to FAF/outer marker (IFR)'), (567, 500, 'Approach - FAF/outer marker to threshold (IFR)'), (568, 500, 'Circling (IFR)'), (569, 500, 'Missed approach (IFR)'), (570, 550, 'Landing'), (571, 550, 'Landing - flare/touchdown'), (572, 550, 'Landing - roll'), (573, 550, 'Landing - aborted'), (574, 550, 'Emergency landing'), (575, 550, 'Emergency landing after takeoff'), (576, 600, 'Emergency descent/landing'), (580, 450, 'Maneuvering'), (581, 450, 'Maneuvering - aerial application'), (582, 450, 'Maneuvering - turn to reverse direction'), (583, 450, 'Maneuvering - turn to landing area (emergency)'), (590, 450, 'Hover'), (591, 450, 'Hover - in ground effect'), (592, 450, 'Hover - out of ground effect'), (600, 800, 'Other'), (610, 990, 'Unknown')),
    current_codes AS (
      SELECT e.case_mkey, TRY_CAST(e.\"tier1Number\" AS INTEGER) AS code,
        row_number() OVER (PARTITION BY e.case_mkey ORDER BY coalesce(e.\"isDefiningEvent\", false) DESC, e.position) AS n
      FROM 'https://openairdocs.org/data/latest/ntsb_events.parquet' e
      WHERE e.aircrafts_position = 1 AND e.\"tier1Number\" GLOB '[1-9][0-9]*'
        AND (e.\"isDefiningEvent\" OR e.case_mkey IN (SELECT \"mKey\" FROM 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' WHERE \"isPre1982\"))
    ),
    phases AS (
      SELECT case_mkey, 'current' AS scheme, code, CASE WHEN code >= 990 THEN 990 ELSE code // 50 * 50 END AS main
      FROM current_codes WHERE n = 1
      UNION ALL
      SELECT o.case_mkey, 'older', o.\"phaseOfFlightCode\", w.main
      FROM 'https://openairdocs.org/data/latest/ntsb_occurrences.parquet' o JOIN crosswalk w ON w.code = o.\"phaseOfFlightCode\"
      WHERE o.aircrafts_position = 1 AND o.\"occurrenceNumber\" = 1 AND o.case_mkey NOT IN (SELECT case_mkey FROM current_codes)
    ),
    case_phases AS (
      SELECT p.*, c.\"eventDate\", c.\"highestInjuryLevel\" = 'Fatal' AS fatal, a.aircraft_model_code
      FROM phases p JOIN 'https://openairdocs.org/data/latest/ntsb_case_detail.parquet' c ON c.\"mKey\" = p.case_mkey
      LEFT JOIN 'https://openairdocs.org/data/latest/ntsb_aircrafts.parquet' a ON a.case_mkey = p.case_mkey AND a.position = 1
      WHERE c.\"eventDate\" >= DATE '1962-01-01' AND p.main IN (SELECT main FROM phase_names)
    )
  SELECT n.name AS phase, year(p.\"eventDate\") AS year, count(*) AS cases,
    count(*) FILTER (WHERE p.scheme = 'older') AS older_codes
  FROM case_phases p JOIN phase_names n USING (main)
  GROUP BY ALL
  ORDER BY ALL"

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.

How the older codes are counted

Each case counts once, on its first aircraft: by the phase of its defining event from 2008, of its first event before 1982, and of its first occurrence from 1982 to 2007. Most older codes name the same phase as a CICTT one; those marked closest straddle two, and are counted under the one listed.

The 50 older codes and where each is counted
Older codeNTSB’s nameCounted asNote
500StandingStanding
501Standing - pre-flightStanding
502Standing - starting engine(s)Standing
503Standing - engine(s) operatingStanding
504Standing - engine(s) not operatingStanding
505Standing - idling rotorsStanding
510TaxiTaxi
511Taxi - pushback/towPushback/towing
512Taxi - to takeoffTaxi
513Taxi - from landingTaxi
514Taxi - aerialTaxi (closest)A helicopter's hover taxi; CICTT counts it as taxi.
520TakeoffTakeoff
521Takeoff - roll/runTakeoff
522Takeoff - initial climbInitial climb
523Takeoff - abortedTakeoff
530ClimbEnroute (closest)The climb after the initial climb, which CICTT puts in enroute (401, climb to cruise).
531Climb - to cruiseEnroute
540CruiseEnroute
541Cruise - normalEnroute
542Maneuvering - holding (IFR)EnrouteCICTT 405, enroute holding.
550DescentEnroute (closest)A normal descent, which CICTT puts in enroute (404).
551Descent - normalEnroute
552Descent - emergencyEmergency descent
553Descent - uncontrolledUncontrolled descent
560ApproachApproach
561Approach - VFR pattern - downwindApproach
562Approach - VFR pattern - base turnApproach
563Approach - VFR pattern - base leg/base to finalApproach
564Approach - VFR pattern - final approachApproach
565Go-around (VFR)ApproachCICTT 509, VFR go-around.
566Approach - IAF to FAF/outer marker (IFR)Approach
567Approach - FAF/outer marker to threshold (IFR)Approach
568Circling (IFR)Approach
569Missed approach (IFR)Approach
570LandingLanding
571Landing - flare/touchdownLanding
572Landing - rollLanding
573Landing - abortedLanding
574Emergency landingLanding (closest)CICTT has no emergency landing phase; it is a landing.
575Emergency landing after takeoffLanding (closest)As 574.
576Emergency descent/landingEmergency descent (closest)Names both; counted as the emergency descent that led to the landing.
580ManeuveringManeuvering
581Maneuvering - aerial applicationManeuvering
582Maneuvering - turn to reverse directionManeuvering
583Maneuvering - turn to landing area (emergency)Maneuvering
590HoverManeuveringCICTT 453, maneuvering hover.
591Hover - in ground effectManeuvering
592Hover - out of ground effectManeuvering
600OtherOther
610UnknownUnknown