{
  "attribution": "GTFS Scorecard (gtfsscorecard.org), scored on top of the MobilityData gtfs-validator",
  "distinct_problems": 118,
  "generated_at": "2026-07-09T05:27:54+00:00",
  "license": "CC-BY-4.0",
  "prevalence_by_code": {
    "bidirectional_exit_gate": {
      "agencies": 1,
      "instances": 1,
      "prevalence_pct": 0.1
    },
    "big_gap_in_service": {
      "agencies": 156,
      "instances": 841,
      "prevalence_pct": 10.8
    },
    "block_trips_with_overlapping_stop_times": {
      "agencies": 15,
      "instances": 45762,
      "prevalence_pct": 1.0
    },
    "decreasing_or_equal_stop_time_distance": {
      "agencies": 35,
      "instances": 8415,
      "prevalence_pct": 2.4
    },
    "duplicate_key": {
      "agencies": 16,
      "instances": 96,
      "prevalence_pct": 1.1
    },
    "duplicate_route_name": {
      "agencies": 10,
      "instances": 218,
      "prevalence_pct": 0.7
    },
    "empty_file": {
      "agencies": 2,
      "instances": 2,
      "prevalence_pct": 0.1
    },
    "equal_shape_distance_diff_coordinates": {
      "agencies": 24,
      "instances": 103807,
      "prevalence_pct": 1.7
    },
    "equal_shape_distance_diff_coordinates_distance_below_threshold": {
      "agencies": 84,
      "instances": 73239,
      "prevalence_pct": 5.8
    },
    "equal_shape_distance_same_coordinates": {
      "agencies": 134,
      "instances": 294994,
      "prevalence_pct": 9.2
    },
    "expired_calendar": {
      "agencies": 753,
      "instances": 6181,
      "prevalence_pct": 52.0
    },
    "fare_transfer_rule_with_forbidden_transfer_count": {
      "agencies": 4,
      "instances": 58,
      "prevalence_pct": 0.3
    },
    "fare_transfer_rule_without_transfer_count": {
      "agencies": 8,
      "instances": 124,
      "prevalence_pct": 0.6
    },
    "fast_travel_between_consecutive_stops": {
      "agencies": 230,
      "instances": 169376,
      "prevalence_pct": 15.9
    },
    "fast_travel_between_far_stops": {
      "agencies": 66,
      "instances": 499,
      "prevalence_pct": 4.6
    },
    "feed_expiration_date30_days": {
      "agencies": 31,
      "instances": 31,
      "prevalence_pct": 2.1
    },
    "feed_expiration_date7_days": {
      "agencies": 508,
      "instances": 508,
      "prevalence_pct": 35.1
    },
    "feed_valid_beyond_total_service_window": {
      "agencies": 62,
      "instances": 62,
      "prevalence_pct": 4.3
    },
    "foreign_key_violation": {
      "agencies": 16,
      "instances": 1645,
      "prevalence_pct": 1.1
    },
    "future_calendar": {
      "agencies": 25,
      "instances": 25,
      "prevalence_pct": 1.7
    },
    "future_feed": {
      "agencies": 26,
      "instances": 26,
      "prevalence_pct": 1.8
    },
    "inconsistent_route_type_for_block_id": {
      "agencies": 3,
      "instances": 8,
      "prevalence_pct": 0.2
    },
    "invalid_currency_amount": {
      "agencies": 20,
      "instances": 263,
      "prevalence_pct": 1.4
    },
    "invalid_date": {
      "agencies": 2,
      "instances": 7,
      "prevalence_pct": 0.1
    },
    "invalid_email": {
      "agencies": 2,
      "instances": 2,
      "prevalence_pct": 0.1
    },
    "invalid_geometry": {
      "agencies": 2,
      "instances": 11,
      "prevalence_pct": 0.1
    },
    "invalid_input_files_in_subfolder": {
      "agencies": 10,
      "instances": 10,
      "prevalence_pct": 0.7
    },
    "invalid_phone_number": {
      "agencies": 15,
      "instances": 17,
      "prevalence_pct": 1.0
    },
    "invalid_pickup_drop_off_window": {
      "agencies": 4,
      "instances": 68,
      "prevalence_pct": 0.3
    },
    "invalid_row_length": {
      "agencies": 1,
      "instances": 1,
      "prevalence_pct": 0.1
    },
    "invalid_url": {
      "agencies": 5,
      "instances": 8,
      "prevalence_pct": 0.3
    },
    "leading_or_trailing_whitespaces": {
      "agencies": 78,
      "instances": 176031,
      "prevalence_pct": 5.4
    },
    "location_with_unexpected_stop_time": {
      "agencies": 1,
      "instances": 1,
      "prevalence_pct": 0.1
    },
    "missing_bike_allowance": {
      "agencies": 48,
      "instances": 100806,
      "prevalence_pct": 3.3
    },
    "missing_calendar_and_calendar_date_files": {
      "agencies": 16,
      "instances": 16,
      "prevalence_pct": 1.1
    },
    "missing_feed_contact_email_and_url": {
      "agencies": 258,
      "instances": 261,
      "prevalence_pct": 17.8
    },
    "missing_feed_info_date": {
      "agencies": 16,
      "instances": 16,
      "prevalence_pct": 1.1
    },
    "missing_pickup_drop_off_booking_rule_id": {
      "agencies": 2,
      "instances": 2102,
      "prevalence_pct": 0.1
    },
    "missing_pickup_or_drop_off_window": {
      "agencies": 1,
      "instances": 17,
      "prevalence_pct": 0.1
    },
    "missing_prior_notice_last_time": {
      "agencies": 1,
      "instances": 1,
      "prevalence_pct": 0.1
    },
    "missing_recommended_field": {
      "agencies": 236,
      "instances": 5228,
      "prevalence_pct": 16.3
    },
    "missing_recommended_file": {
      "agencies": 150,
      "instances": 150,
      "prevalence_pct": 10.4
    },
    "missing_required_agency_id": {
      "agencies": 2,
      "instances": 6,
      "prevalence_pct": 0.1
    },
    "missing_required_column": {
      "agencies": 202,
      "instances": 376,
      "prevalence_pct": 13.9
    },
    "missing_required_field": {
      "agencies": 15,
      "instances": 212,
      "prevalence_pct": 1.0
    },
    "missing_required_file": {
      "agencies": 16,
      "instances": 80,
      "prevalence_pct": 1.1
    },
    "missing_timepoint_value": {
      "agencies": 54,
      "instances": 7424855,
      "prevalence_pct": 3.7
    },
    "missing_trip_edge": {
      "agencies": 3,
      "instances": 287,
      "prevalence_pct": 0.2
    },
    "mixed_case_recommended_field": {
      "agencies": 442,
      "instances": 773206,
      "prevalence_pct": 30.5
    },
    "more_than_one_entity": {
      "agencies": 1,
      "instances": 1,
      "prevalence_pct": 0.1
    },
    "new_line_in_value": {
      "agencies": 1,
      "instances": 29,
      "prevalence_pct": 0.1
    },
    "non_ascii_or_non_printable_char": {
      "agencies": 2,
      "instances": 143,
      "prevalence_pct": 0.1
    },
    "number_out_of_range": {
      "agencies": 3,
      "instances": 7,
      "prevalence_pct": 0.2
    },
    "pathway_dangling_generic_node": {
      "agencies": 1,
      "instances": 4,
      "prevalence_pct": 0.1
    },
    "pathway_unreachable_location": {
      "agencies": 1,
      "instances": 6,
      "prevalence_pct": 0.1
    },
    "platform_without_parent_station": {
      "agencies": 22,
      "instances": 339,
      "prevalence_pct": 1.5
    },
    "point_near_origin": {
      "agencies": 1,
      "instances": 1154,
      "prevalence_pct": 0.1
    },
    "route_color_contrast": {
      "agencies": 104,
      "instances": 372,
      "prevalence_pct": 7.2
    },
    "route_long_name_contains_short_name": {
      "agencies": 115,
      "instances": 1018,
      "prevalence_pct": 7.9
    },
    "route_short_name_too_long": {
      "agencies": 76,
      "instances": 647,
      "prevalence_pct": 5.2
    },
    "same_name_and_description_for_route": {
      "agencies": 37,
      "instances": 438,
      "prevalence_pct": 2.6
    },
    "same_name_and_description_for_stop": {
      "agencies": 27,
      "instances": 1058,
      "prevalence_pct": 1.9
    },
    "same_route_and_agency_url": {
      "agencies": 49,
      "instances": 365,
      "prevalence_pct": 3.4
    },
    "same_stop_and_agency_url": {
      "agencies": 10,
      "instances": 428,
      "prevalence_pct": 0.7
    },
    "same_stop_and_route_url": {
      "agencies": 12,
      "instances": 1047,
      "prevalence_pct": 0.8
    },
    "scorecard_bad_agency_url": {
      "agencies": 20,
      "instances": 20,
      "prevalence_pct": 1.4
    },
    "scorecard_fares_published_not_applied": {
      "agencies": 3,
      "instances": 47,
      "prevalence_pct": 0.2
    },
    "scorecard_feed_expired": {
      "agencies": 618,
      "instances": 618,
      "prevalence_pct": 42.7
    },
    "scorecard_feed_expiring_soon": {
      "agencies": 108,
      "instances": 108,
      "prevalence_pct": 7.5
    },
    "scorecard_flex_no_booking_rules": {
      "agencies": 531,
      "instances": 531,
      "prevalence_pct": 36.6
    },
    "scorecard_flex_service": {
      "agencies": 89,
      "instances": 89,
      "prevalence_pct": 6.1
    },
    "scorecard_missing_feed_info_dates": {
      "agencies": 180,
      "instances": 180,
      "prevalence_pct": 12.4
    },
    "scorecard_missing_headsigns": {
      "agencies": 722,
      "instances": 416835,
      "prevalence_pct": 49.8
    },
    "scorecard_no_expiry_date": {
      "agencies": 21,
      "instances": 21,
      "prevalence_pct": 1.4
    },
    "scorecard_no_fare_data": {
      "agencies": 538,
      "instances": 538,
      "prevalence_pct": 37.1
    },
    "scorecard_no_feed_contact": {
      "agencies": 414,
      "instances": 414,
      "prevalence_pct": 28.6
    },
    "scorecard_planned_service_boundary": {
      "agencies": 2,
      "instances": 2,
      "prevalence_pct": 0.1
    },
    "scorecard_rt_feed_lapsed": {
      "agencies": 2,
      "instances": 2,
      "prevalence_pct": 0.1
    },
    "scorecard_rt_no_timestamp": {
      "agencies": 16,
      "instances": 16,
      "prevalence_pct": 1.1
    },
    "scorecard_rt_predictions_implausible": {
      "agencies": 3,
      "instances": 2909,
      "prevalence_pct": 0.2
    },
    "scorecard_rt_service_alerts_unreachable": {
      "agencies": 32,
      "instances": 32,
      "prevalence_pct": 2.2
    },
    "scorecard_rt_stale": {
      "agencies": 1,
      "instances": 1,
      "prevalence_pct": 0.1
    },
    "scorecard_rt_trip_coverage": {
      "agencies": 53,
      "instances": 1719,
      "prevalence_pct": 3.7
    },
    "scorecard_rt_trip_updates_unreachable": {
      "agencies": 44,
      "instances": 44,
      "prevalence_pct": 3.0
    },
    "scorecard_rt_vehicle_positions_unreachable": {
      "agencies": 43,
      "instances": 43,
      "prevalence_pct": 3.0
    },
    "scorecard_rt_vehicles_off_route": {
      "agencies": 7,
      "instances": 175,
      "prevalence_pct": 0.5
    },
    "scorecard_station_no_pathways": {
      "agencies": 143,
      "instances": 143,
      "prevalence_pct": 9.9
    },
    "scorecard_station_pathways": {
      "agencies": 5,
      "instances": 13262,
      "prevalence_pct": 0.3
    },
    "scorecard_stop_names_all_caps": {
      "agencies": 131,
      "instances": 176029,
      "prevalence_pct": 9.0
    },
    "scorecard_wheelchair_accessible_unknown": {
      "agencies": 1238,
      "instances": 2119851,
      "prevalence_pct": 85.4
    },
    "scorecard_wheelchair_boarding_unknown": {
      "agencies": 1356,
      "instances": 644394,
      "prevalence_pct": 93.6
    },
    "service_extends_far_in_the_future": {
      "agencies": 53,
      "instances": 526,
      "prevalence_pct": 3.7
    },
    "service_has_no_active_day_of_the_week": {
      "agencies": 54,
      "instances": 842,
      "prevalence_pct": 3.7
    },
    "service_window_outside_feed_period": {
      "agencies": 724,
      "instances": 3078,
      "prevalence_pct": 50.0
    },
    "single_shape_point": {
      "agencies": 8,
      "instances": 162,
      "prevalence_pct": 0.6
    },
    "start_and_end_range_out_of_order": {
      "agencies": 7,
      "instances": 21,
      "prevalence_pct": 0.5
    },
    "stop_has_too_many_matches_for_shape": {
      "agencies": 8,
      "instances": 259,
      "prevalence_pct": 0.6
    },
    "stop_time_timepoint_without_times": {
      "agencies": 24,
      "instances": 23070,
      "prevalence_pct": 1.7
    },
    "stop_time_with_arrival_before_previous_departure_time": {
      "agencies": 5,
      "instances": 91,
      "prevalence_pct": 0.3
    },
    "stop_time_with_only_arrival_or_departure_time": {
      "agencies": 1,
      "instances": 285,
      "prevalence_pct": 0.1
    },
    "stop_too_far_from_shape": {
      "agencies": 132,
      "instances": 2576,
      "prevalence_pct": 9.1
    },
    "stop_too_far_from_shape_using_user_distance": {
      "agencies": 172,
      "instances": 64267,
      "prevalence_pct": 11.9
    },
    "stop_without_stop_time": {
      "agencies": 696,
      "instances": 36991,
      "prevalence_pct": 48.0
    },
    "stop_without_zone_id": {
      "agencies": 19,
      "instances": 141,
      "prevalence_pct": 1.3
    },
    "stops_match_shape_out_of_order": {
      "agencies": 99,
      "instances": 434,
      "prevalence_pct": 6.8
    },
    "trip_coverage_not_active_for_next7_days": {
      "agencies": 642,
      "instances": 642,
      "prevalence_pct": 44.3
    },
    "trip_distance_exceeds_shape_distance": {
      "agencies": 40,
      "instances": 7455,
      "prevalence_pct": 2.8
    },
    "trip_distance_exceeds_shape_distance_below_threshold": {
      "agencies": 128,
      "instances": 39572,
      "prevalence_pct": 8.8
    },
    "trip_headsign_matches_intermediate_stop": {
      "agencies": 81,
      "instances": 5549,
      "prevalence_pct": 5.6
    },
    "trip_with_shape_dist_traveled_but_no_shape_distances": {
      "agencies": 11,
      "instances": 98071,
      "prevalence_pct": 0.8
    },
    "unexpected_enum_value": {
      "agencies": 8,
      "instances": 265,
      "prevalence_pct": 0.6
    },
    "unknown_column": {
      "agencies": 899,
      "instances": 22925,
      "prevalence_pct": 62.0
    },
    "unknown_file": {
      "agencies": 804,
      "instances": 5724,
      "prevalence_pct": 55.5
    },
    "unsorted_stop_times": {
      "agencies": 39,
      "instances": 189361,
      "prevalence_pct": 2.7
    },
    "unusable_trip": {
      "agencies": 28,
      "instances": 457,
      "prevalence_pct": 1.9
    },
    "unused_shape": {
      "agencies": 85,
      "instances": 1875,
      "prevalence_pct": 5.9
    },
    "unused_station": {
      "agencies": 12,
      "instances": 80,
      "prevalence_pct": 0.8
    },
    "unused_trip": {
      "agencies": 9,
      "instances": 45,
      "prevalence_pct": 0.6
    }
  },
  "problems": [
    {
      "agencies": 1356,
      "code": "scorecard_wheelchair_boarding_unknown",
      "effort": "A column in stops.txt; your scheduling software likely has it.",
      "fix": "Set wheelchair_boarding to 1 (accessible) or 2 (not accessible) for every stop. A field survey can start with the busiest stops.",
      "instances": 644394,
      "prevalence_pct": 93.6,
      "severity": "WARNING",
      "source": "scorecard",
      "what": "146 of 163 stops don't say whether a wheelchair user can board there.",
      "why": "Riders who use wheelchairs can't plan a trip when accessibility is marked 'unknown'; apps show no information at all."
    },
    {
      "agencies": 1238,
      "code": "scorecard_wheelchair_accessible_unknown",
      "effort": "Often one default setting in your export.",
      "fix": "Set wheelchair_accessible on every trip (most small-agency fleets are 100% accessible, so this is often a single default).",
      "instances": 2119851,
      "prevalence_pct": 85.4,
      "severity": "WARNING",
      "source": "scorecard",
      "what": "71 of 71 trips don't say whether the vehicle is wheelchair accessible.",
      "why": "Even with accessible stops, riders need to know the bus itself can take them."
    },
    {
      "agencies": 899,
      "code": "unknown_column",
      "effort": "A quick look at the flagged files.",
      "fix": "Check the flagged column names for misspellings of standard GTFS fields; remove them if they are vendor extras.",
      "instances": 22925,
      "prevalence_pct": 62.0,
      "severity": "INFO",
      "source": "validator",
      "what": "Some files contain columns that are not part of the GTFS spec.",
      "why": "Harmless to riders, but apps ignore these columns and they can hide typos in real column names."
    },
    {
      "agencies": 804,
      "code": "unknown_file",
      "effort": "Varies.",
      "fix": "Review the rule documentation for 'unknown_file' at https://gtfs-validator.mobilitydata.org/rules.html and check the flagged rows in your feed.",
      "instances": 5724,
      "prevalence_pct": 55.5,
      "severity": "INFO",
      "source": "validator",
      "what": "Unknown file (flagged by the MobilityData validator).",
      "why": "See the linked rule for what this affects."
    },
    {
      "agencies": 753,
      "code": "expired_calendar",
      "effort": "One setting in most export tools.",
      "fix": "Remove past service periods the next time you export the feed.",
      "instances": 6181,
      "prevalence_pct": 52.0,
      "severity": "WARNING",
      "source": "validator",
      "what": "Some service calendars in the feed have already expired.",
      "why": "Expired calendars are dead weight and can hide real schedule problems from your staff and vendors."
    },
    {
      "agencies": 724,
      "code": "service_window_outside_feed_period",
      "effort": "Varies.",
      "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.",
      "instances": 3078,
      "prevalence_pct": 50.0,
      "severity": "INFO",
      "source": "validator",
      "what": "Service window outside feed period (flagged by the MobilityData validator).",
      "why": "See the linked rule for what this affects."
    },
    {
      "agencies": 722,
      "code": "scorecard_missing_headsigns",
      "effort": "Usually a bulk edit in your scheduling software.",
      "fix": "Populate trip_headsign to match what the bus displays.",
      "instances": 416835,
      "prevalence_pct": 49.8,
      "severity": "WARNING",
      "source": "scorecard",
      "what": "63 of 71 trips have no headsign.",
      "why": "Riders at the stop can't tell which direction a bus is going."
    },
    {
      "agencies": 696,
      "code": "stop_without_stop_time",
      "effort": "A review pass in your scheduling software.",
      "fix": "Remove retired stops from the export, or add them back to the trips that should serve them.",
      "instances": 36991,
      "prevalence_pct": 48.0,
      "severity": "WARNING",
      "source": "validator",
      "what": "Some stops exist in the feed but no trip ever stops at them.",
      "why": "Riders may walk to a stop where no bus is scheduled to arrive."
    },
    {
      "agencies": 642,
      "code": "trip_coverage_not_active_for_next7_days",
      "effort": "One setting in most export tools.",
      "fix": "Trim past service periods the next time you export.",
      "instances": 642,
      "prevalence_pct": 44.3,
      "severity": "WARNING",
      "source": "validator",
      "what": "Many of the feed's trips don't run at all in the next 7 days.",
      "why": "It usually means old service periods are still in the export, making the feed bigger and harder to check."
    },
    {
      "agencies": 618,
      "code": "scorecard_feed_expired",
      "effort": "Usually one export setting; export on a schedule so it never lapses again.",
      "fix": "Re-export the feed with a calendar that reaches further out, and set feed_info feed_end_date past your next service change.",
      "instances": 618,
      "prevalence_pct": 42.7,
      "severity": "ERROR",
      "source": "scorecard",
      "what": "Service data ended 2746 day(s) ago.",
      "why": "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."
    },
    {
      "agencies": 538,
      "code": "scorecard_no_fare_data",
      "effort": "A small file for most flat-fare systems.",
      "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.",
      "instances": 538,
      "prevalence_pct": 37.1,
      "severity": "WARNING",
      "source": "scorecard",
      "what": "The feed contains no fare information.",
      "why": "Riders see 'fare unknown' in trip planners and can't budget their trip; visitors are most affected."
    },
    {
      "agencies": 531,
      "code": "scorecard_flex_no_booking_rules",
      "effort": "A small file; one rule often covers the whole service.",
      "fix": "Add booking_rules.txt saying how far ahead and how to book (phone, app, or web).",
      "instances": 531,
      "prevalence_pct": 36.6,
      "severity": "WARNING",
      "source": "scorecard",
      "what": "This feed describes flexible (demand-responsive) service but has no booking_rules.txt.",
      "why": "Riders can see the service area but not how or when to reserve a trip, so they can't actually use the service."
    },
    {
      "agencies": 508,
      "code": "feed_expiration_date7_days",
      "effort": "Usually a re-export from your scheduling software.",
      "fix": "Export and publish an updated GTFS feed that covers at least the next 30 days of service.",
      "instances": 508,
      "prevalence_pct": 35.1,
      "severity": "WARNING",
      "source": "validator",
      "what": "This feed's service calendar runs out within the next 7 days.",
      "why": "When the calendar ends, Google Maps and other trip planners drop your agency entirely. Riders see no service at all."
    },
    {
      "agencies": 442,
      "code": "mixed_case_recommended_field",
      "effort": "Often a bulk fix in your scheduling software.",
      "fix": "Use mixed case for stop names and headsigns (e.g. 'Main St & 2nd Ave', not 'MAIN ST & 2ND AVE').",
      "instances": 773206,
      "prevalence_pct": 30.5,
      "severity": "WARNING",
      "source": "validator",
      "what": "Some rider-facing names are in ALL CAPS or all lowercase.",
      "why": "ALL-CAPS stop and headsign names are harder to read in apps and are read awkwardly by screen readers."
    },
    {
      "agencies": 414,
      "code": "scorecard_no_feed_contact",
      "effort": "One field.",
      "fix": "Add feed_contact_email to feed_info.txt.",
      "instances": 414,
      "prevalence_pct": 28.6,
      "severity": "INFO",
      "source": "scorecard",
      "what": "feed_info.txt has no technical contact (feed_contact_email or feed_contact_url).",
      "why": "App makers and state data programs have nobody to email when they spot a problem with your feed, so problems linger."
    },
    {
      "agencies": 258,
      "code": "missing_feed_contact_email_and_url",
      "effort": "Varies.",
      "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.",
      "instances": 261,
      "prevalence_pct": 17.8,
      "severity": "WARNING",
      "source": "validator",
      "what": "Missing feed contact email and url (flagged by the MobilityData validator).",
      "why": "See the linked rule for what this affects."
    },
    {
      "agencies": 236,
      "code": "missing_recommended_field",
      "effort": "A field at a time; not urgent.",
      "fix": "Review the flagged fields and fill in the ones your riders would use.",
      "instances": 5228,
      "prevalence_pct": 16.3,
      "severity": "WARNING",
      "source": "validator",
      "what": "Some files leave out fields that GTFS asks for but does not require.",
      "why": "Recommended fields like agency_phone or stop descriptions make the feed more useful to riders and trip planners."
    },
    {
      "agencies": 230,
      "code": "fast_travel_between_consecutive_stops",
      "effort": "A few minutes per flagged trip.",
      "fix": "Check the flagged stop times for transposed minutes.",
      "instances": 169376,
      "prevalence_pct": 15.9,
      "severity": "WARNING",
      "source": "validator",
      "what": "Some scheduled trips travel implausibly fast between stops.",
      "why": "Usually a typo'd stop time; riders get impossible arrival estimates."
    },
    {
      "agencies": 202,
      "code": "missing_required_column",
      "effort": "Varies.",
      "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.",
      "instances": 376,
      "prevalence_pct": 13.9,
      "severity": "ERROR",
      "source": "validator",
      "what": "Missing required column (flagged by the MobilityData validator).",
      "why": "See the linked rule for what this affects."
    },
    {
      "agencies": 180,
      "code": "scorecard_missing_feed_info_dates",
      "effort": "Two fields, set once in export settings.",
      "fix": "Add feed_info.txt with feed_start_date and feed_end_date to your export.",
      "instances": 180,
      "prevalence_pct": 12.4,
      "severity": "WARNING",
      "source": "scorecard",
      "what": "feed_info.txt is missing its start/end dates (the file itself is absent)",
      "why": "Apps and this scorecard can't warn anyone before the feed goes stale without stated validity dates."
    },
    {
      "agencies": 172,
      "code": "stop_too_far_from_shape_using_user_distance",
      "effort": "Varies.",
      "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.",
      "instances": 64267,
      "prevalence_pct": 11.9,
      "severity": "WARNING",
      "source": "validator",
      "what": "Stop too far from shape using user distance (flagged by the MobilityData validator).",
      "why": "See the linked rule for what this affects."
    },
    {
      "agencies": 156,
      "code": "big_gap_in_service",
      "effort": "Varies.",
      "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.",
      "instances": 841,
      "prevalence_pct": 10.8,
      "severity": "INFO",
      "source": "validator",
      "what": "Big gap in service (flagged by the MobilityData validator).",
      "why": "See the linked rule for what this affects."
    },
    {
      "agencies": 150,
      "code": "missing_recommended_file",
      "effort": "One small file, set once in export settings.",
      "fix": "Add feed_info.txt with publisher name, URL, language, and feed_start_date/feed_end_date.",
      "instances": 150,
      "prevalence_pct": 10.4,
      "severity": "WARNING",
      "source": "validator",
      "what": "A recommended GTFS file (usually feed_info.txt) is missing.",
      "why": "feed_info.txt tells apps who publishes the feed and when it expires; without it nobody is warned before data goes stale."
    },
    {
      "agencies": 143,
      "code": "scorecard_station_no_pathways",
      "effort": "Worth it for multi-level or large stations; flat stops don't need it.",
      "fix": "Add pathways.txt connecting entrances, platforms, and any elevators, with a level for each.",
      "instances": 143,
      "prevalence_pct": 9.9,
      "severity": "WARNING",
      "source": "scorecard",
      "what": "This feed models stations or entrances but has no pathways.txt.",
      "why": "Trip planners can't guide riders through the station, and there is no step-free route information for wheelchair users."
    },
    {
      "agencies": 134,
      "code": "equal_shape_distance_same_coordinates",
      "effort": "Varies.",
      "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.",
      "instances": 294994,
      "prevalence_pct": 9.2,
      "severity": "WARNING",
      "source": "validator",
      "what": "Equal shape distance same coordinates (flagged by the MobilityData validator).",
      "why": "See the linked rule for what this affects."
    }
  ],
  "total_agencies": 1449
}
