GTFS Schedule Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 7.1.0 at 2026-01-23T19:57:28Z,
for the dataset file:///shared/dnmy-appalcart.zip. No country code was provided.

Use this report alongside our documentation.

Summary

Agencies included


Feed Info


Publisher Name:
ETA Transit Systems
Publisher URL:
https://etatransit.com
Feed Email:
N/A
Feed Language:
English
Feed Start Date:
2023-07-05
Feed End Date:
2035-11-18

Files included


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

Counts


  • Agencies: 1
  • Blocks: 70
  • Routes: 25
  • Shapes: 55
  • Stops: 133
  • Trips: 1434

Specification Compliance report

298 notices reported (0 errors, 295 warnings, 3 infos)

Notice Code Severity Total
expired_calendar WARNING 3

expired_calendar

Dataset should not contain date ranges for services that have already expired.

This warning takes into account the calendar_dates.txt file as well as the calendar.txt file.

You can see more about this notice here.

csvRowNumber (?) The row of the faulty record. serviceId (?) The service id of the faulty record.
16 "111"
19 "73"
21 "59"
fast_travel_between_consecutive_stops WARNING 123

fast_travel_between_consecutive_stops

A transit vehicle moves too fast between two consecutive stops.

The speed threshold depends on route type:

Route type Description Threshold, km/h
0 Light rail 100
1 Subway 150
2 Rail 500
3 Bus 150
4 Ferry 80
5 Cable tram 30
6 Aerial lift 50
7 Funicular 50
11 Trolleybus 150
12 Monorail 150
- Unknown 200

You can see more about this notice here.

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

tripCsvRowNumber (?) The row number of the problematic trip. tripId (?) `trip_id` of the problematic trip. routeId (?) `route_id` of the problematic trip. speedKph (?) Travel speed (km/h). distanceKm (?) Distance between stops (km). csvRowNumber1 (?) The row number of the first stop time. stopSequence1 (?) `stop_sequence` of the first stop. stopId1 (?) `stop_id` of the first stop. stopName1 (?) `stop_name` of the first stop. departureTime1 (?) `departure_time` of the first stop. csvRowNumber2 (?) The row number of the second stop time. stopSequence2 (?) `stop_sequence` of the second stop. stopId2 (?) `stop_id` of the second stop. stopName2 (?) `stop_name` of the second stop. arrivalTime2 (?) `arrival_time` of the second stop.
932 "4925" "27_" 151.9569554106361 1.266307961755301 4206 10 "97" "George Wilson Rd / Vet Hospital 1" "07:13:00" 4207 11 "98" "Oak Grove Road" "07:13:30"
370 "49911753802468692" "10" 151.9569554106361 1.266307961755301 5006 10 "97" "George Wilson Rd / Vet Hospital 1" "13:53:00" 5007 11 "98" "Oak Grove Road" "13:53:30"
301 "3094" "10" 151.9569554106361 1.266307961755301 11356 10 "97" "George Wilson Rd / Vet Hospital 1" "18:43:00" 11357 11 "98" "Oak Grove Road" "18:43:30"
248 "3140" "10" 151.9569554106361 1.266307961755301 12474 10 "97" "George Wilson Rd / Vet Hospital 1" "17:53:00" 12475 11 "98" "Oak Grove Road" "17:53:30"
361 "50141753802468692" "10" 151.9569554106361 1.266307961755301 5381 10 "97" "George Wilson Rd / Vet Hospital 1" "08:08:00" 5382 11 "98" "Oak Grove Road" "08:08:30"
286 "3103" "10" 151.9569554106361 1.266307961755301 11590 10 "97" "George Wilson Rd / Vet Hospital 1" "14:13:00" 11591 11 "98" "Oak Grove Road" "14:13:30"
358 "50111753802468692" "10" 151.9569554106361 1.266307961755301 5306 10 "97" "George Wilson Rd / Vet Hospital 1" "17:23:00" 5307 11 "98" "Oak Grove Road" "17:23:30"
304 "3085" "10" 151.9569554106361 1.266307961755301 11122 10 "97" "George Wilson Rd / Vet Hospital 1" "11:13:00" 11123 11 "98" "Oak Grove Road" "11:13:30"
364 "50051753802468692" "10" 151.9569554106361 1.266307961755301 5156 10 "97" "George Wilson Rd / Vet Hospital 1" "08:53:00" 5157 11 "98" "Oak Grove Road" "08:53:30"
352 "50171753802468692" "10" 151.9569554106361 1.266307961755301 5456 10 "97" "George Wilson Rd / Vet Hospital 1" "14:08:00" 5457 11 "98" "Oak Grove Road" "14:08:30"
353 "50181753802468692" "10" 151.9569554106361 1.266307961755301 5481 10 "97" "George Wilson Rd / Vet Hospital 1" "16:08:00" 5482 11 "98" "Oak Grove Road" "16:08:30"
258 "3138" "10" 151.9569554106361 1.266307961755301 12422 10 "97" "George Wilson Rd / Vet Hospital 1" "18:53:00" 12423 11 "98" "Oak Grove Road" "18:53:30"
285 "3102" "10" 151.9569554106361 1.266307961755301 11564 10 "97" "George Wilson Rd / Vet Hospital 1" "14:43:00" 11565 11 "98" "Oak Grove Road" "14:43:30"
279 "3108" "10" 151.9569554106361 1.266307961755301 11720 10 "97" "George Wilson Rd / Vet Hospital 1" "08:53:00" 11721 11 "98" "Oak Grove Road" "08:53:30"
262 "3128" "10" 151.9569554106361 1.266307961755301 12214 10 "97" "George Wilson Rd / Vet Hospital 1" "20:53:00" 12215 11 "98" "Oak Grove Road" "20:53:30"
372 "49931753802468692" "10" 151.9569554106361 1.266307961755301 5056 10 "97" "George Wilson Rd / Vet Hospital 1" "16:53:00" 5057 11 "98" "Oak Grove Road" "16:53:30"
276 "3118" "10" 151.9569554106361 1.266307961755301 11954 10 "97" "George Wilson Rd / Vet Hospital 1" "16:23:00" 11955 11 "98" "Oak Grove Road" "16:23:30"
251 "3143" "10" 151.9569554106361 1.266307961755301 12552 10 "97" "George Wilson Rd / Vet Hospital 1" "16:23:00" 12553 11 "98" "Oak Grove Road" "16:23:30"
374 "49771753802468692" "10" 151.9569554106361 1.266307961755301 4806 10 "97" "George Wilson Rd / Vet Hospital 1" "10:53:00" 4807 11 "98" "Oak Grove Road" "10:53:30"
284 "3101" "10" 151.9569554106361 1.266307961755301 11538 10 "97" "George Wilson Rd / Vet Hospital 1" "15:13:00" 11539 11 "98" "Oak Grove Road" "15:13:30"
269 "3123" "10" 151.9569554106361 1.266307961755301 12084 10 "97" "George Wilson Rd / Vet Hospital 1" "13:53:00" 12085 11 "98" "Oak Grove Road" "13:53:30"
244 "3148" "10" 151.9569554106361 1.266307961755301 12682 10 "97" "George Wilson Rd / Vet Hospital 1" "13:53:00" 12683 11 "98" "Oak Grove Road" "13:53:30"
362 "49951753802468692" "10" 151.9569554106361 1.266307961755301 5106 10 "97" "George Wilson Rd / Vet Hospital 1" "20:23:00" 5107 11 "98" "Oak Grove Road" "20:23:30"
298 "3091" "10" 151.9569554106361 1.266307961755301 11278 10 "97" "George Wilson Rd / Vet Hospital 1" "08:13:00" 11279 11 "98" "Oak Grove Road" "08:13:30"
261 "3127" "10" 151.9569554106361 1.266307961755301 12188 10 "97" "George Wilson Rd / Vet Hospital 1" "21:23:00" 12189 11 "98" "Oak Grove Road" "21:23:30"
271 "3125" "10" 151.9569554106361 1.266307961755301 12136 10 "97" "George Wilson Rd / Vet Hospital 1" "12:53:00" 12137 11 "98" "Oak Grove Road" "12:53:30"
246 "3150" "10" 151.9569554106361 1.266307961755301 12734 10 "97" "George Wilson Rd / Vet Hospital 1" "12:53:00" 12735 11 "98" "Oak Grove Road" "12:53:30"
306 "3087" "10" 151.9569554106361 1.266307961755301 11174 10 "97" "George Wilson Rd / Vet Hospital 1" "10:13:00" 11175 11 "98" "Oak Grove Road" "10:13:30"
295 "3100" "10" 151.9569554106361 1.266307961755301 11512 10 "97" "George Wilson Rd / Vet Hospital 1" "15:43:00" 11513 11 "98" "Oak Grove Road" "15:43:30"
283 "3112" "10" 151.9569554106361 1.266307961755301 11824 10 "97" "George Wilson Rd / Vet Hospital 1" "10:53:00" 11825 11 "98" "Oak Grove Road" "10:53:30"
396 "49381753802468692" "10" 151.9569554106361 1.266307961755301 4456 10 "97" "George Wilson Rd / Vet Hospital 1" "14:38:00" 4457 11 "98" "Oak Grove Road" "14:38:30"
241 "3154" "10" 151.9569554106361 1.266307961755301 12838 10 "97" "George Wilson Rd / Vet Hospital 1" "07:43:00" 12839 11 "98" "Oak Grove Road" "07:43:30"
371 "49921753802468692" "10" 151.9569554106361 1.266307961755301 5031 10 "97" "George Wilson Rd / Vet Hospital 1" "15:23:00" 5032 11 "98" "Oak Grove Road" "15:23:30"
360 "50131753802468692" "10" 151.9569554106361 1.266307961755301 5356 10 "97" "George Wilson Rd / Vet Hospital 1" "20:53:00" 5357 11 "98" "Oak Grove Road" "20:53:30"
375 "49781753802468692" "10" 151.9569554106361 1.266307961755301 4831 10 "97" "George Wilson Rd / Vet Hospital 1" "12:23:00" 4832 11 "98" "Oak Grove Road" "12:23:30"
379 "49821753802468692" "10" 151.9569554106361 1.266307961755301 4931 10 "97" "George Wilson Rd / Vet Hospital 1" "09:38:00" 4932 11 "98" "Oak Grove Road" "09:38:30"
380 "49621753802468692" "10" 151.9569554106361 1.266307961755301 4656 10 "97" "George Wilson Rd / Vet Hospital 1" "13:08:00" 4657 11 "98" "Oak Grove Road" "13:08:30"
277 "3119" "10" 151.9569554106361 1.266307961755301 11980 10 "97" "George Wilson Rd / Vet Hospital 1" "15:53:00" 11981 11 "98" "Oak Grove Road" "15:53:30"
252 "3144" "10" 151.9569554106361 1.266307961755301 12578 10 "97" "George Wilson Rd / Vet Hospital 1" "15:53:00" 12579 11 "98" "Oak Grove Road" "15:53:30"
274 "3116" "10" 151.9569554106361 1.266307961755301 11902 10 "97" "George Wilson Rd / Vet Hospital 1" "17:23:00" 11903 11 "98" "Oak Grove Road" "17:23:30"
249 "3141" "10" 151.9569554106361 1.266307961755301 12500 10 "97" "George Wilson Rd / Vet Hospital 1" "17:23:00" 12501 11 "98" "Oak Grove Road" "17:23:30"
392 "49341753802468692" "10" 151.9569554106361 1.266307961755301 4356 10 "97" "George Wilson Rd / Vet Hospital 1" "11:53:00" 4357 11 "98" "Oak Grove Road" "11:53:30"
381 "49631753802468692" "10" 151.9569554106361 1.266307961755301 4681 10 "97" "George Wilson Rd / Vet Hospital 1" "11:08:00" 4682 11 "98" "Oak Grove Road" "11:08:30"
267 "3121" "10" 151.9569554106361 1.266307961755301 12032 10 "97" "George Wilson Rd / Vet Hospital 1" "14:53:00" 12033 11 "98" "Oak Grove Road" "14:53:30"
242 "3146" "10" 151.9569554106361 1.266307961755301 12630 10 "97" "George Wilson Rd / Vet Hospital 1" "14:53:00" 12631 11 "98" "Oak Grove Road" "14:53:30"
378 "49811753802468692" "10" 151.9569554106361 1.266307961755301 4906 10 "97" "George Wilson Rd / Vet Hospital 1" "11:38:00" 4907 11 "98" "Oak Grove Road" "11:38:30"
387 "49411753802468692" "10" 151.9569554106361 1.266307961755301 4531 10 "97" "George Wilson Rd / Vet Hospital 1" "08:38:00" 4532 11 "98" "Oak Grove Road" "08:38:30"
376 "49791753802468692" "10" 151.9569554106361 1.266307961755301 4856 10 "97" "George Wilson Rd / Vet Hospital 1" "15:38:00" 4857 11 "98" "Oak Grove Road" "15:38:30"
236 "49311753802468692" "10" 151.9569554106361 1.266307961755301 4281 10 "97" "George Wilson Rd / Vet Hospital 1" "16:23:00" 4282 11 "98" "Oak Grove Road" "16:23:30"
1012 "5042" "16" 151.9569554106361 1.266307961755301 16950 3 "97" "George Wilson Rd / Vet Hospital 1" "17:58:00" 16951 4 "98" "Oak Grove Road" "17:58:30"
leading_or_trailing_whitespaces WARNING 159

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.

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

filename (?) The name of the faulty file. csvRowNumber (?) The row of the faulty record. fieldName (?) Faulty record's field name. fieldValue (?) Faulty value.
"trips.txt" 2 "shape_id" "Teal Break - Last Trip "
"trips.txt" 10 "shape_id" "Teal Weekend First Trip "
"trips.txt" 11 "shape_id" "Teal Weekend First Trip "
"trips.txt" 64 "shape_id" "Teal First Trip "
"trips.txt" 65 "shape_id" "Teal First Trip "
"trips.txt" 234 "shape_id" "POP 105 FULL "
"trips.txt" 235 "shape_id" "POP 105 FULL "
"trips.txt" 236 "shape_id" "POP 105 FULL "
"trips.txt" 237 "shape_id" "POP 105 FULL "
"trips.txt" 238 "shape_id" "POP 105 FULL "
"trips.txt" 350 "shape_id" "POP 105 FULL "
"trips.txt" 351 "shape_id" "POP 105 FULL "
"trips.txt" 352 "shape_id" "POP 105 FULL "
"trips.txt" 353 "shape_id" "POP 105 FULL "
"trips.txt" 354 "shape_id" "POP 105 FULL "
"trips.txt" 356 "shape_id" "POP 105 FULL "
"trips.txt" 357 "shape_id" "POP 105 FULL "
"trips.txt" 358 "shape_id" "POP 105 FULL "
"trips.txt" 359 "shape_id" "POP 105 FULL "
"trips.txt" 360 "shape_id" "POP 105 FULL "
"trips.txt" 361 "shape_id" "POP 105 FULL "
"trips.txt" 362 "shape_id" "POP 105 FULL "
"trips.txt" 363 "shape_id" "POP 105 FULL "
"trips.txt" 364 "shape_id" "POP 105 FULL "
"trips.txt" 365 "shape_id" "POP 105 FULL "
"trips.txt" 366 "shape_id" "POP 105 FULL "
"trips.txt" 367 "shape_id" "POP 105 FULL "
"trips.txt" 368 "shape_id" "POP 105 FULL "
"trips.txt" 369 "shape_id" "POP 105 FULL "
"trips.txt" 370 "shape_id" "POP 105 FULL "
"trips.txt" 371 "shape_id" "POP 105 FULL "
"trips.txt" 372 "shape_id" "POP 105 FULL "
"trips.txt" 373 "shape_id" "POP 105 FULL "
"trips.txt" 374 "shape_id" "POP 105 FULL "
"trips.txt" 375 "shape_id" "POP 105 FULL "
"trips.txt" 376 "shape_id" "POP 105 FULL "
"trips.txt" 377 "shape_id" "POP 105 FULL "
"trips.txt" 378 "shape_id" "POP 105 FULL "
"trips.txt" 379 "shape_id" "POP 105 FULL "
"trips.txt" 380 "shape_id" "POP 105 FULL "
"trips.txt" 381 "shape_id" "POP 105 FULL "
"trips.txt" 382 "shape_id" "POP 105 FULL "
"trips.txt" 383 "shape_id" "POP 105 FULL "
"trips.txt" 384 "shape_id" "POP 105 FULL "
"trips.txt" 385 "shape_id" "POP 105 FULL "
"trips.txt" 386 "shape_id" "POP 105 FULL "
"trips.txt" 387 "shape_id" "POP 105 FULL "
"trips.txt" 388 "shape_id" "POP 105 FULL "
"trips.txt" 389 "shape_id" "POP 105 FULL "
"trips.txt" 390 "shape_id" "POP 105 FULL "
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 2

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.

filename (?) Name of the faulty file. fieldName (?) Name of the faulty field. fieldValue (?) Faulty value. csvRowNumber (?) The row number of the faulty record.
"stops.txt" "stop_name" "ASU SRC" 17
"stops.txt" "stop_name" "CCC&TI" 118
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.
1400 "State Farm Parking Lot Shuttle Sunday" "604" 27256 "5" "ASU State Farm Lot / Greenway" [36.20490000000001,-81.6571] 183.51891263552858
stop_without_stop_time WARNING 5

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.
19 "19" "Top of Bodenheimer (Up)"
71 "70" "ASU NC 105 Lot 3"
72 "69" "ASU NC 105 Lot 2"
73 "68" "ASU NC 105 Lot 1"
124 "134" "Poplar Grove Connector Parking Lot"
stops_match_shape_out_of_order WARNING 1

stops_match_shape_out_of_order

Two stop entries are different than their arrival-departure order defined by shapes.txt.

This could indicate a problem with the location of the stops, the path of the shape, or the sequence of the stops for their trip.

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. stopTimeCsvRowNumber1 (?) The row number of the first faulty record from `stop_times.txt`. stopId1 (?) The id of the first stop that is referred to. stopName1 (?) The name of the first stop that is referred to. match1 (?) Latitude and longitude pair of the first matching location. stopTimeCsvRowNumber2 (?) The row number of the second faulty record from `stop_times.txt`. stopId2 (?) The id of the second stop that is referred to. stopName2 (?) The name of the second stop that is referred to. match2 (?) Latitude and longitude pair of the second matching location.
1400 "State Farm Parking Lot Shuttle Sunday" "604" 27256 "5" "ASU State Farm Lot / Greenway" [36.20601724706991,-81.65553039991975] 27255 "40" "ASU Trivette Hall" [36.21292333965522,-81.68369138819929]
unknown_column INFO 3

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.
"calendar.txt" "service_name" 11
"trips.txt" "block_service_id" 11
"trips.txt" "block_name" 12