GTFS Schedule Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 7.1.0 at 2026-01-23T17:13:21Z,
for the dataset file:///shared/metro.zip. No country code was provided.

Use this report alongside our documentation.

Summary

Agencies included


  • Metropolitan Transit Authority of Harris County

Feed Info


Publisher Name:
Metropolitan Transit Authority of Harris County
Publisher URL:
http://www.ridemetro.org
Feed Email:
N/A
Feed Language:
English
Feed Start Date:
2025-08-10
Feed End Date:
2026-01-24

Files included


  1. agency.txt
  2. calendar.txt
  3. calendar_dates.txt
  4. direction_names_exceptions.txt
  5. fare_attributes.txt
  6. fare_rules.txt
  7. feed_info.txt
  8. routes.txt
  9. shapes.txt
  10. stop_times.txt
  11. stops.txt
  12. trips.txt

Counts


  • Agencies: 1
  • Blocks: 2124
  • Routes: 116
  • Shapes: 347
  • Stops: 8859
  • Trips: 21920

Specification Compliance report

18580 notices reported (0 errors, 18578 warnings, 2 infos)

Notice Code Severity Total
equal_shape_distance_diff_coordinates_distance_below_threshold WARNING 205

equal_shape_distance_diff_coordinates_distance_below_threshold

Two consecutive points have equal shape_dist_traveled and different lat/lon coordinates in shapes.txt and the distance between the two points is greater than 0 but less than 1.11m.

When sorted by shape.shape_pt_sequence, the values for shape_dist_traveled must increase along a shape. Two consecutive points with equal values for shape_dist_traveled and small difference of coordinates (greater than 0 but less than 1.11 m distance) result in a warning.

You can see more about this notice here.

Only the first 50 of 205 affected records are displayed below.

shapeId (?) The id of the faulty shape. csvRowNumber (?) The row number from `shapes.txt`. shapeDistTraveled (?) The faulty record's `shape_dist_traveled` value. shapePtSequence (?) The faulty record's `shapes.shape_pt_sequence`. prevCsvRowNumber (?) The row number from `shapes.txt` of the previous shape point. prevShapeDistTraveled (?) The previous shape point's `shape_dist_traveled` value. prevShapePtSequence (?) The previous record's `shapes.shape_pt_sequence`. actualDistanceBetweenShapePoints (?) Actual distance traveled along the shape from the first shape point to the previous shape point.
"280099" 177280 2.5928 56 177279 2.5928 55 0.8688910665071186
"280099" 177493 13.3892 269 177492 13.3892 268 0.31037172525509554
"280099" 177495 13.4076 271 177494 13.4076 270 0.6671706068736016
"280097" 176455 38.9796 975 176454 38.9796 974 0.772182476847723
"280097" 176457 38.997 977 176456 38.997 976 0.4848672432962581
"280094" 174190 16.1526 486 174189 16.1526 485 0.772182476847723
"280094" 174192 16.1701 488 174191 16.1701 487 0.4848672432962581
"279893" 41393 12.5736 293 41392 12.5736 292 0.3472636394406292
"279893" 41395 12.5966 295 41394 12.5966 294 0.5642885826216202
"279885" 37566 9.0448 237 37565 9.0448 236 0.9906875844015517
"279885" 37568 9.1549 239 37567 9.1549 238 0.3651544085701401
"279886" 37852 4.3086 143 37851 4.3086 142 0.3651544085701401
"279886" 37854 4.4187 145 37853 4.4187 144 0.9906875844015517
"280194" 219128 1.5235 50 219127 1.5235 49 0.6741139718746043
"280194" 219130 1.5385 52 219129 1.5385 51 0.6741139532422422
"280192" 218662 5.1374 124 218661 5.1374 123 0.6741139532422422
"280192" 218664 5.1524 126 218663 5.1524 125 0.6741139718746043
"279999" 108520 3.6044 124 108519 3.6044 123 0.5559755066711003
"279999" 108522 3.7084 126 108521 3.7084 125 0.2943821242277364
"279995" 106721 7.8851 234 106720 7.8851 233 0.11119510161714974
"279995" 106723 7.9371 236 106722 7.9371 235 0.11119510090982554
"279996" 107623 14.8885 457 107622 14.8885 456 0.11119510161714974
"279996" 107625 14.9405 459 107624 14.9405 458 0.11119510090982554
"280312" 225656 2.0197 43 225655 2.0197 42 0.8753939060503719
"280312" 225658 2.0305 45 225657 2.0305 44 0.8753934708443644
"280312" 225691 2.9653 78 225690 2.9653 77 0.14728729719018513
"280312" 225695 3.0443 82 225694 3.0443 81 0.1472869339866202
"280312" 225715 3.3978 102 225714 3.3978 101 0.8753371047447466
"280312" 225717 3.4554 104 225716 3.4554 103 0.8753345283386489
"280312" 225751 5.2073 138 225750 5.2073 137 0.8752630989222883
"280312" 225753 5.2288 140 225752 5.2288 139 0.8752622048232646
"280312" 225771 5.8796 158 225770 5.8796 157 0.4849019710251534
"280312" 225806 7.5608 193 225805 7.5608 192 0.5559755059637761
"280312" 225809 7.6025 196 225808 7.6025 195 0.5642974000764662
"280310" 225221 2.0197 43 225220 2.0197 42 0.8753939060503719
"280310" 225223 2.0305 45 225222 2.0305 44 0.8753934708443644
"280310" 225256 2.9653 78 225255 2.9653 77 0.14728729719018513
"280310" 225260 3.0443 82 225259 3.0443 81 0.1472869339866202
"280310" 225280 3.3978 102 225279 3.3978 101 0.8753371047447466
"280310" 225282 3.4554 104 225281 3.4554 103 0.8753345283386489
"280310" 225316 5.2073 138 225315 5.2073 137 0.8752630989222883
"280310" 225318 5.2288 140 225317 5.2288 139 0.8752622048232646
"280310" 225336 5.8796 158 225335 5.8796 157 0.4849019710251534
"280310" 225371 7.5608 193 225370 7.5608 192 0.5559755059637761
"280310" 225374 7.6025 196 225373 7.6025 195 0.5642974000764662
"280309" 224991 12.569 241 224990 12.569 240 0.5642974000764662
"280309" 224994 12.6107 244 224993 12.6107 243 0.5559755059637761
"280309" 225016 14.1214 266 225015 14.1214 265 0.40194975377920356
"280309" 225019 14.1724 269 225018 14.1724 268 0.8752338942251184
"280309" 225022 14.2202 272 225021 14.2202 271 0.4849019710251534
feed_expiration_date7_days WARNING 1

feed_expiration_date7_days

Dataset should be valid for at least the next 7 days.

The dataset expiration date defined in feed_info.txt is in seven days or less. At any time, the published GTFS dataset should be valid for at least the next 7 days.

You can see more about this notice here.

csvRowNumber (?) The row number of the faulty record. currentDate (?) Current date (YYYYMMDD format). feedEndDate (?) Feed end date (YYYYMMDD format). suggestedExpirationDate (?) Suggested expiration date (YYYYMMDD format).
2 "20260123" "20260124" "20260130"
missing_feed_contact_email_and_url WARNING 1

missing_feed_contact_email_and_url

Best Practices for feed_info.txt suggest providing at least one of feed_contact_email and feed_contact_url.

You can see more about this notice here.

csvRowNumber (?) The row number of the validated record.
2
mixed_case_recommended_field WARNING 18290

mixed_case_recommended_field

This field has customer-facing text and should use Mixed Case (should contain upper and lower case letters).

This field contains customer-facing text and should use Mixed Case (upper and lower case letters) to ensure good readability when displayed to riders. Avoid the use of abbreviations throughout the feed (e.g. St. for Street) unless a location is called by its abbreviated name (e.g. “JFK Airport”). Abbreviations may be problematic for accessibility by screen reader software and voice user interfaces.

Good examples:
Field Text Dataset
"Schwerin, Hauptbahnhof" Verkehrsverbund Berlin-Brandenburg
"Red Hook/Atlantic Basin" NYC Ferry
"Campo Grande Norte" Carris
Bad examples:
Field Text
"GALLERIA MALL"
"3427 GG 17"
"21 Clark Rd Est"

You can see more about this notice here.

Only the first 50 of 18290 affected records are displayed below.

filename (?) Name of the faulty file. fieldName (?) Name of the faulty field. fieldValue (?) Faulty value. csvRowNumber (?) The row number of the faulty record.
"trips.txt" "trip_headsign" "TMC TC" 2
"trips.txt" "trip_headsign" "TMC TC" 3
"trips.txt" "trip_headsign" "TMC TC" 4
"trips.txt" "trip_headsign" "TMC TC" 5
"trips.txt" "trip_headsign" "TMC TC" 6
"trips.txt" "trip_headsign" "TMC TC" 7
"trips.txt" "trip_headsign" "TMC TC" 8
"trips.txt" "trip_headsign" "TMC TC" 9
"trips.txt" "trip_headsign" "TMC TC" 10
"trips.txt" "trip_headsign" "TMC TC" 11
"trips.txt" "trip_headsign" "TMC TC" 12
"trips.txt" "trip_headsign" "TMC TC" 13
"trips.txt" "trip_headsign" "TMC TC" 14
"trips.txt" "trip_headsign" "TMC TC" 15
"trips.txt" "trip_headsign" "TMC TC" 16
"trips.txt" "trip_headsign" "TMC TC" 17
"trips.txt" "trip_headsign" "TMC TC" 18
"trips.txt" "trip_headsign" "TMC TC" 19
"trips.txt" "trip_headsign" "TMC TC" 20
"trips.txt" "trip_headsign" "TMC TC" 21
"trips.txt" "trip_headsign" "TMC TC" 22
"trips.txt" "trip_headsign" "TMC TC" 23
"trips.txt" "trip_headsign" "TMC TC" 24
"trips.txt" "trip_headsign" "TMC TC" 25
"trips.txt" "trip_headsign" "TMC TC" 26
"trips.txt" "trip_headsign" "TMC TC" 27
"trips.txt" "trip_headsign" "TMC TC" 28
"trips.txt" "trip_headsign" "TMC TC" 29
"trips.txt" "trip_headsign" "TMC TC" 30
"trips.txt" "trip_headsign" "TMC TC" 31
"trips.txt" "trip_headsign" "TMC TC" 32
"trips.txt" "trip_headsign" "TMC TC" 33
"trips.txt" "trip_headsign" "TMC TC" 34
"trips.txt" "trip_headsign" "TMC TC" 35
"trips.txt" "trip_headsign" "TMC TC" 36
"trips.txt" "trip_headsign" "TMC TC" 37
"trips.txt" "trip_headsign" "TMC TC" 38
"trips.txt" "trip_headsign" "TMC TC" 39
"trips.txt" "trip_headsign" "TMC TC" 40
"trips.txt" "trip_headsign" "TMC TC" 41
"trips.txt" "trip_headsign" "TMC TC" 42
"trips.txt" "trip_headsign" "TMC TC" 43
"trips.txt" "trip_headsign" "TMC TC" 44
"trips.txt" "trip_headsign" "TMC TC" 45
"trips.txt" "trip_headsign" "TMC TC" 46
"trips.txt" "trip_headsign" "TMC TC" 47
"trips.txt" "trip_headsign" "TMC TC" 48
"trips.txt" "trip_headsign" "TMC TC" 49
"trips.txt" "trip_headsign" "TMC TC" 50
"trips.txt" "trip_headsign" "TMC TC" 51
same_name_and_description_for_stop WARNING 58

same_name_and_description_for_stop

Same name and description for stop.

The GTFS spec defines stops.txt stop_description as:

Description of the location that provides useful, quality information. Do not simply duplicate the name of the location.

You can see more about this notice here.

Only the first 50 of 58 affected records are displayed below.

csvRowNumber (?) The row number of the faulty record. stopId (?) The id of the faulty record. stopDesc (?) The faulty record's `stop_desc`.
576 "929" "ALMEDA MALL"
1458 "2360" "HOUSTON NORTHWEST HOSPITAL"
1459 "2361" "HOUSTON NORTHWEST HOSPITAL"
4583 "6809" "LSC UNIVERSITY PARK 2"
7159 "10567" "HOBBY AIRPORT"
7231 "10694" "LSC NORTH HARRIS 1"
7392 "11030" "WHEELER STATION (BUS)"
7477 "25001" "FANNIN SOUTH STN NB"
7478 "25003" "STADIUM PARK / ASTRODOME NB"
7479 "25004" "STADIUM PARK / ASTRODOME SB"
7480 "25005" "SMITH LANDS STN NB"
7481 "25006" "SMITH LANDS STN SB"
7484 "25009" "DRYDEN/TMC STN NB"
7485 "25010" "DRYDEN/TMC STN SB"
7488 "25013" "HERMANN PARK/RICE U STN NB"
7489 "25014" "HERMANN PARK/RICE U STN SB"
7490 "25015" "MUSEUM DISTRICT STN NB"
7491 "25016" "MUSEUM DISTRICT STN SB"
7492 "25017" "WHEELER STN NB"
7493 "25018" "WHEELER STN SB"
7494 "25019" "ENSEMBLE/HCC STN NB"
7495 "25020" "ENSEMBLE/HCC STN SB"
7496 "25021" "MCGOWEN STN NB"
7497 "25022" "MCGOWEN STN SB"
7500 "25025" "BELL STN NB"
7501 "25026" "BELL STN SB"
7502 "25027" "MAIN STREET SQUARE STN NB"
7503 "25028" "MAIN STREET SQUARE STN SB"
7504 "25029" "PRESTON STN NB"
7505 "25030" "PRESTON STN SB"
7506 "25031" "UH-DOWNTOWN STN NB"
7507 "25032" "UH-DOWNTOWN STN SB"
7508 "11303" "MEMORIAL HERMANN SOUTHEAST"
7544 "11380" "ALMEDA MALL"
7690 "11608" "HCC SOUTH CAMPUS"
8014 "25002" "FANNIN SOUTH STN SB"
8086 "25039" "MOODY PARK NB"
8087 "25041" "CAVALCADE NB"
8088 "25043" "LINDALE PARK NB"
8094 "25044" "LINDALE PARK SB"
8095 "25040" "MOODY PARK SB"
8096 "25042" "CAVALCADE SB"
8101 "25049" "CENTRAL STN MAIN SB"
8102 "25050" "CENTRAL STN MAIN NB"
8105 "25058" "EADO STADIUM STN WB"
8117 "25072" "LEELAND THIRD WARD NB"
8118 "25071" "LEELAND THIRD WARD SB"
8119 "25075" "ELGIN THIRD WARD SB"
8120 "25076" "ELGIN THIRD WARD NB"
8121 "25077" "ROBERTSON STADIUM UH TSU SB"
stop_too_far_from_shape WARNING 1

stop_too_far_from_shape

Stop too far from trip shape.

Per GTFS Best Practices, route alignments (in shapes.txt) should be within 100 meters of stop locations which a trip serves. This potentially indicates a problem with the location of the stop or the path of the shape.

You can see more about this notice here.

tripCsvRowNumber (?) The row number of the faulty record from `trips.txt`. shapeId (?) The id of the shape that is referred to. tripId (?) The id of the trip that is referred to. stopTimeCsvRowNumber (?) The row number of the faulty record from `stop_times.txt`. stopId (?) The id of the stop that is referred to. stopName (?) The name of the stop that is referred to. match (?) Latitude and longitude pair of the location. geoDistanceToShape (?) Distance from stop to shape.
4984 "280006" "11432297" 390869 "83" "North Shepherd Park & Ride" [29.876984,-95.41425500000001] 108.70955057508498
stop_too_far_from_shape_using_user_distance WARNING 1

stop_too_far_from_shape_using_user_distance

Stop time too far from shape.

A stop time entry that is a large distance away from the location of the shape in shapes.txt as defined by shape_dist_traveled values.

You can see more about this notice here.

tripCsvRowNumber (?) The row number of the faulty record from `trips.txt`. shapeId (?) The id of the shape that is referred to. tripId (?) The id of the trip that is referred to. stopTimeCsvRowNumber (?) The row number of the faulty record from `stop_times.txt`. stopId (?) The id of the stop that is referred to. stopName (?) The name of the stop that is referred to. match (?) Latitude and longitude pair of the location. geoDistanceToShape (?) Distance from stop to shape.
5019 "280007" "11432332" 393471 "83" "North Shepherd Park & Ride" [29.876984,-95.41425500000001] 108.70955057508498
stop_without_stop_time WARNING 4

stop_without_stop_time

A stop in stops.txt is not referenced by any stop_times.stop_id.

Such stops are not used by any trip and normally do not provide user value. This notice may indicate a typo in stop_times.txt.

You can see more about this notice here.

csvRowNumber (?) The row number of the faulty record. stopId (?) The id of the faulty stop. stopName (?) The name of the faulty stop.
8756 "13108" "North Freeway @ West Rd"
8759 "13111" "SH 6 @ Wal Mart"
8796 "13164" "Shepherd Dr @ Mayfair Park Apt"
8797 "13165" "Ringold St @ Lawn St"
unused_shape WARNING 17

unused_shape

Shape is not used in GTFS file trips.txt.

All records defined by GTFS shapes.txt should be used in trips.txt.

You can see more about this notice here.

shapeId (?) The faulty record's id. csvRowNumber (?) The row number of the faulty record.
"280173" 215149
"280174" 215394
"280175" 215634
"280176" 215766
"280177" 215886
"280178" 216077
"280179" 216177
"280180" 216258
"280181" 216565
"280183" 216730
"280184" 216820
"280189" 217963
"280191" 218228
"280192" 218539
"280193" 218699
"280194" 219079
"280195" 219268
unknown_column INFO 1

unknown_column

A column name is unknown.

You can see more about this notice here.

filename (?) The name of the faulty file. fieldName (?) The name of the unknown column. index (?) The index of the faulty column.
"trips.txt" "ots_trip_short_name" 11
unknown_file INFO 1

unknown_file

A file is unknown.

You can see more about this notice here.

filename (?) The name of the unknown file.
"direction_names_exceptions.txt"