The most common GTFS problems.
Across 1577 comparable feed records, these are the problems most feeds share. Each one is common, which means each fix helps a lot of riders at once.
Most common problems
What each problem means and how to fix it
Stops missing wheelchair boarding information (93.8% of feeds, WARNING)
Typical finding: 146 of 163 stops don't say whether a wheelchair user can board there.
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
Trips missing wheelchair accessibility information (87.6% of feeds, WARNING)
Typical finding: 71 of 71 trips don't say whether the vehicle is wheelchair accessible.
Even with accessible stops, riders need to know the bus itself can take them.
Fix: Set wheelchair_accessible on every trip. If every vehicle is accessible, this may be one default; otherwise use the value for each trip. Effort: A default or per-trip field in your export.. Read the fix guide
No feed contact (58.3% of feeds, INFO)
Typical finding: feed_info.txt has no technical contact (feed_contact_email or feed_contact_url).
Trip-planning apps and regional data coordinators 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
Mixed case recommended field (54.6% of feeds, WARNING)
Typical finding: Some rider-facing names are in ALL CAPS or all lowercase.
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
No fare data (51.2% of feeds, WARNING)
Typical finding: The feed contains no fare information.
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
Non-standard columns (50.9% of feeds, INFO)
Typical finding: Some files contain columns that are not part of the GTFS spec.
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
Missing feed contact email and url (36.8% of feeds, WARNING)
Typical finding: feed_info.txt lists no contact email and no contact URL.
Without a contact, apps like Google Maps can't reach you when they find a problem in the feed.
Fix: Add feed_contact_email or feed_contact_url to feed_info.txt. Effort: One field, set once in export settings.. Read the fix guide
Missing recommended field (29.2% of feeds, WARNING)
Typical finding: Some files leave out fields that GTFS asks for but does not require.
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
Non-standard files (29.1% of feeds, INFO)
Typical finding: The feed includes a file that is not part of the GTFS spec.
Apps ignore files they don't know, and a stray file can hide a misspelled standard file name.
Fix: Check the flagged file name for a typo of a standard GTFS file. Remove it if it is a vendor extra. Effort: A quick look at the flagged file.. Read the fix guide
Big gap in service (28.7% of feeds, INFO)
Typical finding: The feed has a stretch of two weeks or more with no service running.
A long gap can mean dates were left out of the calendar. Apps then show no trips on those days.
Fix: Check whether the gap is real, like a seasonal break; if not, add the missing dates to the calendar. Effort: A review of your calendar dates.. Read the fix guide
Missing headsigns (27.8% of feeds, WARNING)
Typical finding: 63 of 71 trips lack rider-facing destination or direction text.
When a route has multiple directions or patterns, the route name alone may not tell riders which service is coming.
Fix: Add the destination, direction, or 'via' label riders actually see to trip_headsign. Do not copy the route name. If the label changes during the trip, use stop_headsign. Effort: Usually one value per route pattern in your scheduling source.. Read the fix guide
Stop without stop time (27.8% of feeds, WARNING)
Typical finding: Some stops exist in the feed but no trip ever stops at them.
Riders may walk to a stop where no transit vehicle 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
Non ascii or non printable char (25.3% of feeds, WARNING)
Typical finding: Some internal IDs use characters outside the basic text set.
These IDs are valid UTF-8 data. This warning is only about support in older apps. It does not mean that names in other languages are wrong.
Fix: Only change the flagged IDs if an app needs basic ASCII values. Update each place that uses the ID. Keep all names and headsigns in their original language. Effort: A planned ID change, not a quick text cleanup..
Missing feed info dates (25.2% of feeds, WARNING)
Typical finding: feed_info.txt is missing its start/end dates (the file itself is absent)
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
Service dates outside the feed period (22.7% of feeds, INFO)
Typical finding: Some service dates fall outside the date window set in feed_info.txt.
feed_info.txt should span every day your service runs, so apps know when the data applies.
Fix: Widen feed_start_date and feed_end_date to cover all service dates, or fix the dates that fall outside. Effort: Two fields in feed_info.txt, or one export setting.. Read the fix guide
Expired service calendars (21.5% of feeds, WARNING)
Typical finding: Some service calendars in the feed have already ended.
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
Missing recommended file (21.1% of feeds, WARNING)
Typical finding: A file GTFS asks for (usually feed_info.txt) is missing.
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
Station no pathways (18.3% of feeds, WARNING)
Typical finding: This feed models stations or entrances but has no pathways.txt.
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
Fast travel between consecutive stops (15.7% of feeds, WARNING)
Typical finding: Some scheduled trips move faster between stops than a transit vehicle can.
Usually a typo'd stop time; riders get arrival times no transit vehicle can meet.
Fix: Check the flagged stop times for transposed minutes. Effort: A few minutes per flagged trip.. Read the fix guide
Trip headsign matches intermediate stop (15.2% of feeds, INFO)
Typical finding: Some trip headsigns name a stop along the way, not the final destination.
The sign should tell riders where the transit vehicle ends up, so a midpoint name can send them the wrong way.
Fix: Set trip_headsign to the trip's last stop or its overall destination. Effort: Usually a bulk edit in your scheduling software..
Stop too far from shape (14.0% of feeds, WARNING)
Typical finding: Some stops sit far from the route line they belong to.
Trip planners may draw the transit vehicle route through the wrong path or point riders to the wrong boarding location.
Fix: Check the flagged stops' coordinates and the route shape in your scheduling software; re-snap whichever is misplaced. Effort: A few minutes per flagged stop.. Read the fix guide
Trip coverage not active for next7 days (13.6% of feeds, WARNING)
Typical finding: Many of the feed's trips don't run at all in the next 7 days.
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
Stop too far from shape using user distance (11.5% of feeds, WARNING)
Typical finding: Some stops sit far from the route line, going by the feed's own distance values.
Trip planners may draw the route down the wrong streets or point riders to the wrong corner.
Fix: Check the flagged stops' shape_dist_traveled against the route shape, and re-generate it on export if they disagree. Effort: Usually an export-tool fix, not hand editing.. Read the fix guide
Flex no booking rules (10.7% of feeds, WARNING)
Typical finding: This feed describes flexible (demand-responsive) service but has no booking_rules.txt.
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
Service has no active day of the week (10.4% of feeds, WARNING)
Typical finding: Some service calendars have no days of the week switched on.
Trips tied to these calendars never run; they are dead data that can mask real schedule problems.
Fix: Delete the empty calendars or set their service days. Effort: A few minutes in your scheduling software.. Read the fix guide
Plain-language coverage
Of the 119 distinct problem codes seen in the covered corpus, 51 carry vetted plain-language text: 42.9% of codes and 93.1% 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 | Feed records |
|---|---|---|
| equal_shape_distance_diff_coordinates | 555859 | 29 |
| unsorted_stop_times | 490449 | 82 |
| trip_with_shape_dist_traveled_but_no_shape_distances | 361665 | 52 |
| duplicate_key | 327582 | 17 |
| invalid_row_length | 301658 | 3 |
| equal_shape_distance_diff_coordinates_distance_below_threshold | 199340 | 149 |
| missing_bike_allowance | 159320 | 65 |
| trip_distance_exceeds_shape_distance | 135088 | 53 |
| block_trips_with_overlapping_stop_times | 34936 | 41 |
| platform_without_parent_station | 28771 | 115 |
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.
The directory contains 2009 published feed records. Prevalence uses 1577 canonical, non-duplicate records under rubric 1.3, scoring profile gtfs-scorecard-1.3, MobilityData gtfs-validator 8.0.1, reader archive profile raw-v1, and measured categories Correctness, Freshness, Rider experience. It never changes a grade. The same data is at the problems API (problems.json).