GTFS Schedule Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 7.1.0 at 2026-01-23T18:25:04Z,
for the dataset file:///shared/connecttransit.zip. No country code was provided.

Use this report alongside our documentation.

Summary

Agencies included


Feed Info


Publisher Name:
GMV Syncromatics
Feed Email:
support@gmvsync.com
Feed Language:
English
Feed Start Date:
2026-01-12
Feed End Date:
N/A

Files included


  1. agency.txt
  2. calendar.txt
  3. calendar_attributes.txt
  4. calendar_dates.txt
  5. directions.txt
  6. feed_info.txt
  7. realtime_routes.txt
  8. routes.txt
  9. shapes.txt
  10. stop_times.txt
  11. stops.txt
  12. trips.txt

Counts


  • Agencies: 1
  • Blocks: 69
  • Routes: 17
  • Shapes: 32
  • Stops: 452
  • Trips: 2059

Specification Compliance report

484 notices reported (0 errors, 481 warnings, 3 infos)

Notice Code Severity Total
equal_shape_distance_same_coordinates WARNING 62

equal_shape_distance_same_coordinates

Two consecutive points have equal shape_dist_traveled and the same lat/lon coordinates in shapes.txt.

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 the same coordinates indicate a duplicative shape point.

You can see more about this notice here.

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

shapeId (?) The id of the faulty shape. csvRowNumber (?) The row number from `shapes.txt`. shapeDistTraveled (?) Actual distance traveled along the shape from the first shape point to the faulty record. shapePtSequence (?) The faulty record's `shapes.shape_pt_sequence`. prevCsvRowNumber (?) The row number from `shapes.txt` of the previous shape point. prevShapeDistTraveled (?) Actual distance traveled along the shape from the first shape point to the previous shape point. prevShapePtSequence (?) The previous record's `shapes.shape_pt_sequence`.
"4030" 329 2200.023254489239 35 328 2200.023254489239 34
"4030" 338 3202.646179230609 44 337 3202.646179230609 43
"4030" 347 4203.5130524796805 53 346 4203.5130524796805 52
"4030" 351 5206.9800775242165 57 350 5206.9800775242165 56
"5780" 400 1369.7111718029257 30 399 1369.7111718029257 29
"5780" 407 2374.6557733702257 37 406 2374.6557733702257 36
"5780" 417 3377.2145503934453 47 416 3377.2145503934453 46
"5780" 453 5446.018955851592 83 452 5446.018955851592 82
"5780" 478 6439.1145861869 108 477 6439.1145861869 107
"5780" 485 7438.8600405081 115 484 7438.8600405081 114
"5780" 534 9639.696425580398 164 533 9639.696425580398 163
"5780" 542 10643.290401646795 172 541 10643.290401646795 171
"5780" 548 11647.786574117737 178 547 11647.786574117737 177
"6552" 653 2400.5908388842654 97 652 2400.5908388842654 96
"28878" 2633 5811.410644473168 33 2632 5811.410644473168 32
"28878" 2634 5811.410644473168 34 2633 5811.410644473168 33
"27043" 1968 1029.9893865965757 15 1967 1029.9893865965757 14
"27043" 2008 4030.047645457157 55 2007 4030.047645457157 54
"27043" 2022 5034.261563248426 69 2021 5034.261563248426 68
"27043" 2047 7024.006246848956 94 2046 7024.006246848956 93
"27043" 2085 10034.326050157546 132 2084 10034.326050157546 131
"27043" 2093 10720.781032939154 140 2092 10720.781032939154 139
"27043" 2094 10720.781032939154 141 2093 10720.781032939154 140
"27043" 2095 10720.781032939154 142 2094 10720.781032939154 141
"27043" 2098 11037.559687005418 145 2097 11037.559687005418 144
"27044" 2143 2076.1448032465196 33 2142 2076.1448032465196 32
"27044" 2151 3085.733132087959 41 2150 3085.733132087959 40
"27044" 2167 4092.3784729967565 57 2166 4092.3784729967565 56
"27044" 2181 5087.019562181015 71 2180 5087.019562181015 70
"27044" 2207 7103.206015099655 97 2206 7103.206015099655 96
"27044" 2284 11113.12246270874 174 2283 11113.12246270874 173
"4027" 240 1724.958567156377 31 239 1724.958567156377 30
"11401" 1096 2683.6616242010105 23 1095 2683.6616242010105 22
"14118" 1238 1079.84623870663 14 1237 1079.84623870663 13
"14118" 1250 2083.478242264152 26 1249 2083.478242264152 25
"14118" 1256 3120.449144943484 32 1255 3120.449144943484 31
"14118" 1268 4123.8537847554135 44 1267 4123.8537847554135 43
"14118" 1276 4710.373914004844 52 1275 4710.373914004844 51
"20687" 1545 4115.07236470006 41 1544 4115.07236470006 40
"20687" 1557 5104.969470545374 53 1556 5104.969470545374 52
"20687" 1569 5584.317186286685 65 1568 5584.317186286685 64
"20687" 1585 7034.848704125249 81 1584 7034.848704125249 80
"20687" 1602 7764.180521096092 98 1601 7764.180521096092 97
"20687" 1617 8553.203058091965 113 1616 8553.203058091965 112
"20687" 1626 9379.53946082511 122 1625 9379.53946082511 121
"20686" 1393 2253.89974887707 12 1392 2253.89974887707 11
"20686" 1400 2516.992845106643 19 1399 2516.992845106643 18
"20686" 1410 3785.0821529871096 29 1409 3785.0821529871096 28
"20686" 1420 4284.594173554754 39 1419 4284.594173554754 38
"20686" 1429 4787.162593724868 48 1428 4787.162593724868 47
leading_or_trailing_whitespaces WARNING 8

leading_or_trailing_whitespaces

The value in CSV file has leading or trailing whitespaces.

This notice is emitted for values protected with double quotes since whitespaces for non-protected values are trimmed automatically by CSV parser.

The validator strips whitespaces from protected values. We do not see any use case when such a whitespace may be needed. On the other hand, some real-world feeds use trailing whitespaces for some values and omit them for the others. This is causing the largest problem when a primary key and a foreign key differ just by a whitespace: it is clear that they are intended to be the same, that is why we always strip whitespaces.

You can see more about this notice here.

filename (?) The name of the faulty file. csvRowNumber (?) The row of the faulty record. fieldName (?) Faulty record's field name. fieldValue (?) Faulty value.
"stops.txt" 114 "stop_name" "Washington St & Oak St - N "
"stops.txt" 160 "stop_name" "Adelaide St & Heritage "
"stops.txt" 260 "stop_name" "Corn Crib - N "
"stops.txt" 382 "stop_name" "Cottage Ave & Ensign Dr "
"stops.txt" 406 "stop_name" "Linden St & Willow St "
"stops.txt" 449 "stop_name" "Virginia & Fell "
"routes.txt" 4 "route_short_name" "Orange Route "
"routes.txt" 4 "route_long_name" "Orange Route "
missing_feed_info_date WARNING 1

missing_feed_info_date

One of feed_start_date or feed_end_date is specified, but not both.

Even though feed_info.start_date and feed_info.end_date are optional, if one field is provided the second one should also be provided.

You can see more about this notice here.

csvRowNumber (?) The row number of the faulty record. fieldName (?) Either `feed_end_date` or `feed_start_date`.
2 "feed_end_date"
missing_recommended_field WARNING 1

missing_recommended_field

A recommended field is missing.

The given field has no value in some input row, even though values are recommended.

You can see more about this notice here.

filename (?) The name of the faulty file. csvRowNumber (?) The row of the faulty record. fieldName (?) The name of the missing field.
"feed_info.txt" 2 "feed_end_date"
mixed_case_recommended_field WARNING 195

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 195 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" "1600's only" 10
"trips.txt" "trip_headsign" "1600's only" 16
"trips.txt" "trip_headsign" "1600's only" 18
"trips.txt" "trip_headsign" "1600's only" 27
"trips.txt" "trip_headsign" "1600's only" 28
"trips.txt" "trip_headsign" "1600's only" 32
"trips.txt" "trip_headsign" "1600's only" 64
"trips.txt" "trip_headsign" "1600's only" 75
"trips.txt" "trip_headsign" "1600's only" 80
"trips.txt" "trip_headsign" "1600's only" 85
"trips.txt" "trip_headsign" "1600's only" 88
"trips.txt" "trip_headsign" "1600's only" 95
"trips.txt" "trip_headsign" "1600's only" 96
"trips.txt" "trip_headsign" "1600's only" 99
"trips.txt" "trip_headsign" "1600's only" 108
"trips.txt" "trip_headsign" "1600's only" 129
"trips.txt" "trip_headsign" "1600's only" 140
"trips.txt" "trip_headsign" "1600's only" 146
"trips.txt" "trip_headsign" "1600's only" 156
"trips.txt" "trip_headsign" "1600's only" 162
"trips.txt" "trip_headsign" "1600's only" 170
"trips.txt" "trip_headsign" "1600's only" 181
"trips.txt" "trip_headsign" "1600's only" 191
"trips.txt" "trip_headsign" "1600's only" 206
"trips.txt" "trip_headsign" "1600's only" 208
"trips.txt" "trip_headsign" "1600's only" 215
"trips.txt" "trip_headsign" "1600's only" 218
"trips.txt" "trip_headsign" "1600's only" 223
"trips.txt" "trip_headsign" "1600's only" 224
"trips.txt" "trip_headsign" "1600's only" 228
"trips.txt" "trip_headsign" "1600's only" 239
"trips.txt" "trip_headsign" "1600's only" 244
"trips.txt" "trip_headsign" "1600's only" 250
"trips.txt" "trip_headsign" "1600's only" 285
"trips.txt" "trip_headsign" "1600's only" 301
"trips.txt" "trip_headsign" "1600's only" 309
"trips.txt" "trip_headsign" "1600's only" 314
"trips.txt" "trip_headsign" "1600's only" 317
"trips.txt" "trip_headsign" "1600's only" 326
"trips.txt" "trip_headsign" "1600's only" 330
"trips.txt" "trip_headsign" "1600's only" 335
"trips.txt" "trip_headsign" "1600's only" 343
"trips.txt" "trip_headsign" "1600's only" 368
"trips.txt" "trip_headsign" "1600's only" 371
"trips.txt" "trip_headsign" "1600's only" 376
"trips.txt" "trip_headsign" "1600's only" 380
"trips.txt" "trip_headsign" "1600's only" 397
"trips.txt" "trip_headsign" "1600's only" 399
"trips.txt" "trip_headsign" "1600's only" 403
"trips.txt" "trip_headsign" "1600's only" 408
route_long_name_contains_short_name WARNING 14

route_long_name_contains_short_name

Long name should not contain short name for a single route.

In routes.txt, route_long_name should not contain the value for route_short_name, because when both are provided, they are often combined by transit applications. Note that only one of the two fields is required. If there is no short name used for a route, use route_long_name only.

Good examples:

route_short_name/route_long_name Dataset
"N"/"Judah" Muni San Fransisco
"6"/"ML King Jr Blvd" Trimet Portland Streetcar
"55"/"Boulevard Saint Laurent" STM Montreal
"1"/"Rangiora/Cashmere" Metro Christchurch

Bad examples:

route_short_name/route_long_name
"604"/"604"
"14"/"Route 14"
"2"/"Route 2: Bellows Falls In-Town"

You can see more about this notice here.

routeId (?) The id of the faulty record. csvRowNumber (?) The row number of the faulty record. routeShortName (?) The faulty record's `route_short_name`. routeLongName (?) The faulty record's `route_long_name`.
"1813" 2 "Blue Route" "Blue Route"
"1814" 3 "Red Route" "Red Route"
"1815" 4 "Orange Route" "Orange Route"
"1816" 5 "Gold Route" "Gold Route"
"1848" 7 "Purple Route" "Purple Route"
"1849" 8 "Aqua Route" "Aqua Route"
"1851" 9 "Yellow Route" "Yellow Route"
"1852" 10 "Tan Route" "Tan Route"
"1885" 11 "Green Route" "Green Route"
"1886" 12 "Brown Route" "Brown Route"
"1895" 13 "Lime Route" "Lime Route"
"1897" 14 "Pink Route" "Pink Route"
"2701" 15 "Silver Route" "Silver Route"
"6895" 18 "Mint" "Mint Route"
same_name_and_description_for_route WARNING 15

same_name_and_description_for_route

Same name and description for route.

The GTFS spec defines routes.txt route_desc as:

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

See the GTFS and GTFS Best Practices links below for more examples of how to populate the route_short_name, route_long_name, and route_desc fields.

You can see more about this notice here.

csvRowNumber (?) The row number of the faulty record. routeId (?) The id of the faulty record. routeDesc (?) The `routes.routes_desc` of the faulty record. specifiedField (?) Either `route_short_name` or `route_long_name`.
2 "1813" "Blue Route" "route_short_name"
3 "1814" "Red Route" "route_short_name"
4 "1815" "Orange Route" "route_short_name"
5 "1816" "Gold Route" "route_short_name"
6 "1847" "Redbird Express" "route_long_name"
7 "1848" "Purple Route" "route_short_name"
8 "1849" "Aqua Route" "route_short_name"
9 "1851" "Yellow Route" "route_short_name"
10 "1852" "Tan Route" "route_short_name"
11 "1885" "Green Route" "route_short_name"
12 "1886" "Brown Route" "route_short_name"
13 "1895" "Lime Route" "route_short_name"
14 "1897" "Pink Route" "route_short_name"
16 "5861" "Sapphire" "route_long_name"
18 "6895" "Mint" "route_short_name"
stop_too_far_from_shape_using_user_distance WARNING 2

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.
19 "27043" "1025" 316 "3443515" "Airport Departure" [40.48648712933853,-88.9108518685415] 106.43970258796719
20 "28987" "1026" 356 "1892293" "Susan Dr & Patriot Dr - E" [40.510635810998686,-88.94937122550355] 134.6938543025883
stop_without_stop_time WARNING 2

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.
102 "1892653" "Lincoln St & Four Seasons Rd"
103 "1892654" "Lincoln St & Myerling Home"
trip_distance_exceeds_shape_distance_below_threshold WARNING 181

trip_distance_exceeds_shape_distance_below_threshold

The distance between the last shape point and last stop point is greater than 0 but less than the 11.1m threshold.

You can see more about this notice here.

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

tripId (?) The faulty record's trip id. shapeId (?) The faulty record's shape id. maxTripDistanceTraveled (?) The faulty record's trip max distance traveled. maxShapeDistanceTraveled (?) The faulty record's shape max distance traveled. geoDistanceToShape (?) The distance in meters between the shape and the stop.
"1039" "25023" 4198.69654291773 4193.742882277156 0.0
"1049" "25023" 4198.69654291773 4193.742882277156 0.0
"1107" "25023" 4198.69654291773 4193.742882277156 0.0
"1116" "25023" 4198.69654291773 4193.742882277156 0.0
"1138" "25023" 4198.69654291773 4193.742882277156 0.0
"1170" "11401" 6023.660568742042 5996.093835391717 0.0
"1207" "25023" 4198.69654291773 4193.742882277156 0.0
"121" "25023" 4198.69654291773 4193.742882277156 0.0
"1211" "25023" 4198.69654291773 4193.742882277156 0.0
"1224" "11401" 6023.660568742042 5996.093835391717 0.0
"1233" "11401" 6023.660568742042 5996.093835391717 0.0
"1237" "25023" 4198.69654291773 4193.742882277156 0.0
"124" "11401" 6023.660568742042 5996.093835391717 0.0
"1246" "25023" 4198.69654291773 4193.742882277156 0.0
"1283" "11401" 6023.660568742042 5996.093835391717 0.0
"129" "25023" 4198.69654291773 4193.742882277156 0.0
"1303" "25023" 4198.69654291773 4193.742882277156 0.0
"1324" "11401" 6023.660568742042 5996.093835391717 0.0
"1376" "25023" 4198.69654291773 4193.742882277156 0.0
"1391" "25023" 4198.69654291773 4193.742882277156 0.0
"1396" "11401" 6023.660568742042 5996.093835391717 0.0
"1401" "25023" 4198.69654291773 4193.742882277156 0.0
"1428" "25023" 4198.69654291773 4193.742882277156 0.0
"1429" "25023" 4198.69654291773 4193.742882277156 0.0
"1530" "11401" 6023.660568742042 5996.093835391717 0.0
"1539" "25023" 4198.69654291773 4193.742882277156 0.0
"1540" "11401" 6023.660568742042 5996.093835391717 0.0
"1544" "25023" 4198.69654291773 4193.742882277156 0.0
"1564" "25023" 4198.69654291773 4193.742882277156 0.0
"1570" "25023" 4198.69654291773 4193.742882277156 0.0
"158" "25023" 4198.69654291773 4193.742882277156 0.0
"1631" "25023" 4198.69654291773 4193.742882277156 0.0
"1677" "25023" 4198.69654291773 4193.742882277156 0.0
"1702" "25023" 4198.69654291773 4193.742882277156 0.0
"1706" "25023" 4198.69654291773 4193.742882277156 0.0
"1729" "25023" 4198.69654291773 4193.742882277156 0.0
"174" "25023" 4198.69654291773 4193.742882277156 0.0
"1749" "25023" 4198.69654291773 4193.742882277156 0.0
"175" "25023" 4198.69654291773 4193.742882277156 0.0
"1767" "25023" 4198.69654291773 4193.742882277156 0.0
"1782" "25023" 4198.69654291773 4193.742882277156 0.0
"1828" "25023" 4198.69654291773 4193.742882277156 0.0
"185" "25023" 4198.69654291773 4193.742882277156 0.0
"1865" "25023" 4198.69654291773 4193.742882277156 0.0
"1870" "25023" 4198.69654291773 4193.742882277156 0.0
"1889" "25023" 4198.69654291773 4193.742882277156 0.0
"189" "11401" 6023.660568742042 5996.093835391717 0.0
"1898" "11401" 6023.660568742042 5996.093835391717 0.0
"1907" "25023" 4198.69654291773 4193.742882277156 0.0
"1913" "25023" 4198.69654291773 4193.742882277156 0.0
unknown_file INFO 3

unknown_file

A file is unknown.

You can see more about this notice here.

filename (?) The name of the unknown file.
"calendar_attributes.txt"
"realtime_routes.txt"
"directions.txt"