The most common GTFS problems.
Across 1449 tracked feeds, these are the problems the most agencies share. Each one is common, which means each fix helps a lot of riders at once.
Most common problems
146 of 163 stops don't say whether a wheelchair user can board there. (93.6% of feeds, WARNING)
Riders who use wheelchairs can't plan a trip when accessibility is marked 'unknown'; apps show no information at all.
Fix: Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops. Effort: A column in stops.txt; your scheduling software likely has it.. Read the fix guide
71 of 71 trips don't say whether the vehicle is wheelchair accessible. (85.4% of feeds, WARNING)
Even with accessible stops, riders need to know the bus itself can take them.
Fix: Set wheelchair_accessible on every trip (most small-agency fleets are 100% accessible, so this is often a single default). Effort: Often one default setting in your export.. Read the fix guide
Some files contain columns that are not part of the GTFS spec. (62.0% of feeds, INFO)
Harmless to riders, but apps ignore these columns and they can hide typos in real column names.
Fix: Check the flagged column names for misspellings of standard GTFS fields; remove them if they are vendor extras. Effort: A quick look at the flagged files.. Read the fix guide
Unknown file (flagged by the MobilityData validator). (55.5% of feeds, INFO)
See the linked rule for what this affects.
Fix: Review the rule documentation for 'unknown_file' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed. Effort: Varies.. Read the fix guide
Some service calendars in the feed have already expired. (52.0% of feeds, WARNING)
Expired calendars are dead weight and can hide real schedule problems from your staff and vendors.
Fix: Remove past service periods the next time you export the feed. Effort: One setting in most export tools.. Read the fix guide
Service window outside feed period (flagged by the MobilityData validator). (50.0% of feeds, INFO)
See the linked rule for what this affects.
Fix: Review the rule documentation for 'service_window_outside_feed_period' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed. Effort: Varies.. Read the fix guide
63 of 71 trips have no headsign. (49.8% of feeds, WARNING)
Riders at the stop can't tell which direction a bus is going.
Fix: Populate trip_headsign to match what the bus displays. Effort: Usually a bulk edit in your scheduling software.. Read the fix guide
Some stops exist in the feed but no trip ever stops at them. (48.0% of feeds, WARNING)
Riders may walk to a stop where no bus is scheduled to arrive.
Fix: Remove retired stops from the export, or add them back to the trips that should serve them. Effort: A review pass in your scheduling software.. Read the fix guide
Many of the feed's trips don't run at all in the next 7 days. (44.3% of feeds, WARNING)
It usually means old service periods are still in the export, making the feed bigger and harder to check.
Fix: Trim past service periods the next time you export. Effort: One setting in most export tools.. Read the fix guide
Service data ended 2746 day(s) ago. (42.7% of feeds, ERROR)
When the calendar runs out, trip planners stop showing this agency even though the buses are still running. Riders are told the service does not exist.
Fix: Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change. Effort: Usually one export setting; export on a schedule so it never lapses again.. Read the fix guide
The feed contains no fare information. (37.1% of feeds, WARNING)
Riders see 'fare unknown' in trip planners and can't budget their trip; visitors are most affected.
Fix: Add fare_attributes.txt (or Fares v2 files) with your fare structure. If your service is fare-free, ask to have it marked fare-free instead. Effort: A small file for most flat-fare systems.. Read the fix guide
This feed describes flexible (demand-responsive) service but has no booking_rules.txt. (36.6% of feeds, WARNING)
Riders can see the service area but not how or when to reserve a trip, so they can't actually use the service.
Fix: Add booking_rules.txt saying how far ahead and how to book (phone, app, or web). Effort: A small file; one rule often covers the whole service.. Read the fix guide
This feed's service calendar runs out within the next 7 days. (35.1% of feeds, WARNING)
When the calendar ends, Google Maps and other trip planners drop your agency entirely. Riders see no service at all.
Fix: Export and publish an updated GTFS feed that covers at least the next 30 days of service. Effort: Usually a re-export from your scheduling software.. Read the fix guide
Some rider-facing names are in ALL CAPS or all lowercase. (30.5% of feeds, WARNING)
ALL-CAPS stop and headsign names are harder to read in apps and are read awkwardly by screen readers.
Fix: Use mixed case for stop names and headsigns (e.g. 'Main St & 2nd Ave', not 'MAIN ST & 2ND AVE'). Effort: Often a bulk fix in your scheduling software.. Read the fix guide
feed_info.txt has no technical contact (feed_contact_email or feed_contact_url). (28.6% of feeds, INFO)
App makers and state data programs have nobody to email when they spot a problem with your feed, so problems linger.
Fix: Add feed_contact_email to feed_info.txt. Effort: One field.. Read the fix guide
Missing feed contact email and url (flagged by the MobilityData validator). (17.8% of feeds, WARNING)
See the linked rule for what this affects.
Fix: Review the rule documentation for 'missing_feed_contact_email_and_url' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed. Effort: Varies.. Read the fix guide
Some files leave out fields that GTFS asks for but does not require. (16.3% of feeds, WARNING)
Recommended fields like agency_phone or stop descriptions make the feed more useful to riders and trip planners.
Fix: Review the flagged fields and fill in the ones your riders would use. Effort: A field at a time; not urgent.. Read the fix guide
Some scheduled trips travel implausibly fast between stops. (15.9% of feeds, WARNING)
Usually a typo'd stop time; riders get impossible arrival estimates.
Fix: Check the flagged stop times for transposed minutes. Effort: A few minutes per flagged trip.. Read the fix guide
Missing required column (flagged by the MobilityData validator). (13.9% of feeds, ERROR)
See the linked rule for what this affects.
Fix: Review the rule documentation for 'missing_required_column' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed. Effort: Varies.. Read the fix guide
feed_info.txt is missing its start/end dates (the file itself is absent) (12.4% of feeds, WARNING)
Apps and this scorecard can't warn anyone before the feed goes stale without stated validity dates.
Fix: Add feed_info.txt with feed_start_date and feed_end_date to your export. Effort: Two fields, set once in export settings.. Read the fix guide
Stop too far from shape using user distance (flagged by the MobilityData validator). (11.9% of feeds, WARNING)
See the linked rule for what this affects.
Fix: Review the rule documentation for 'stop_too_far_from_shape_using_user_distance' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed. Effort: Varies.. Read the fix guide
Big gap in service (flagged by the MobilityData validator). (10.8% of feeds, INFO)
See the linked rule for what this affects.
Fix: Review the rule documentation for 'big_gap_in_service' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed. Effort: Varies..
A recommended GTFS file (usually feed_info.txt) is missing. (10.4% of feeds, WARNING)
feed_info.txt tells apps who publishes the feed and when it expires; without it nobody is warned before data goes stale.
Fix: Add feed_info.txt with publisher name, URL, language, and feed_start_date/feed_end_date. Effort: One small file, set once in export settings.. Read the fix guide
This feed models stations or entrances but has no pathways.txt. (9.9% of feeds, WARNING)
Trip planners can't guide riders through the station, and there is no step-free route information for wheelchair users.
Fix: Add pathways.txt connecting entrances, platforms, and any elevators, with a level for each. Effort: Worth it for multi-level or large stations; flat stops don't need it.. Read the fix guide
Equal shape distance same coordinates (flagged by the MobilityData validator). (9.2% of feeds, WARNING)
See the linked rule for what this affects.
Fix: Review the rule documentation for 'equal_shape_distance_same_coordinates' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed. Effort: Varies..
Plain-language coverage
Of the 118 distinct problem codes seen nationally, 44 carry vetted plain-language text: 37.3% of codes and 33.7% of all finding instances. Codes without curated text fall back to a generic line that links to the validator's rule documentation.
Next up for curation, ranked by how often riders' data actually hits each problem:
| Notice code | Instances | Agencies |
|---|---|---|
| missing_timepoint_value | 7424855 | 54 |
| equal_shape_distance_same_coordinates | 294994 | 134 |
| unsorted_stop_times | 189361 | 39 |
| leading_or_trailing_whitespaces | 176031 | 78 |
| equal_shape_distance_diff_coordinates | 103807 | 24 |
| missing_bike_allowance | 100806 | 48 |
| trip_with_shape_dist_traveled_but_no_shape_distances | 98071 | 11 |
| equal_shape_distance_diff_coordinates_distance_below_threshold | 73239 | 84 |
| stop_too_far_from_shape_using_user_distance | 64267 | 172 |
| block_trips_with_overlapping_stop_times | 45762 | 15 |
In plain words: most feeds trip on the same handful of things, and most of those are one export setting. If you run an agency, scanning this list is a fast way to find a fix that probably applies to you too.
Prevalence is the share of tracked feeds carrying a finding, from the same checks each scorecard runs. It never changes a grade. The same data is at the problems API (problems.json).