GTFS Schedule Validation Report

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

Use this report alongside our documentation.

Summary

Agencies included


Feed Info


Publisher Name:
Passio Technologies
Publisher URL:
https://passiotech.com
Feed Email:
support@passiotech.com
Feed Language:
English
Feed Start Date:
2026-01-21
Feed End Date:
2026-02-21

Files included


  1. agency.txt
  2. calendar.txt
  3. feed_info.txt
  4. routes.txt
  5. shapes.txt
  6. stop_times.txt
  7. stops.txt
  8. trips.txt

Counts


  • Agencies: 1
  • Blocks: 81
  • Routes: 5
  • Shapes: 6
  • Stops: 203
  • Trips: 1221

Specification Compliance report

1043 notices reported (912 errors, 131 warnings, 0 infos)

Notice Code Severity Total
block_trips_with_overlapping_stop_times ERROR 185

block_trips_with_overlapping_stop_times

Trips with the same block id have overlapping stop times.

You can see more about this notice here.

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

csvRowNumberA (?) The row number from `trips.txt` of the first faulty trip. tripIdA (?) The id of first faulty trip. serviceIdA (?) The service id of the first faulty trip. csvRowNumberB (?) The row number from `trips.txt` of the second faulty trip. tripIdB (?) The id of the other faulty trip. serviceIdB (?) The service id of the other faulty trip. blockId (?) The `trips.block_id` of the overlapping trip. intersection (?) The overlapping period.
646 "509932" "39435" 647 "509933" "39435" "17361" "20250101"
647 "509933" "39435" 648 "509934" "39435" "17361" "20250101"
648 "509934" "39435" 649 "509935" "39435" "17361" "20250101"
649 "509935" "39435" 650 "509936" "39435" "17361" "20250101"
650 "509936" "39435" 651 "509937" "39435" "17361" "20250101"
651 "509937" "39435" 652 "509938" "39435" "17361" "20250101"
652 "509938" "39435" 653 "509939" "39435" "17361" "20250101"
653 "509939" "39435" 654 "509940" "39435" "17361" "20250101"
654 "509940" "39435" 655 "509941" "39435" "17361" "20250101"
655 "509941" "39435" 656 "509942" "39435" "17361" "20250101"
656 "509942" "39435" 657 "509943" "39435" "17361" "20250101"
657 "509943" "39435" 658 "509944" "39435" "17361" "20250101"
658 "509944" "39435" 659 "509945" "39435" "17361" "20250101"
659 "509945" "39435" 660 "509946" "39435" "17361" "20250101"
660 "509946" "39435" 661 "509947" "39435" "17361" "20250101"
614 "509900" "39435" 615 "509901" "39435" "17360" "20250101"
616 "509902" "39435" 617 "509903" "39435" "17360" "20250101"
617 "509903" "39435" 618 "509904" "39435" "17360" "20250101"
618 "509904" "39435" 619 "509905" "39435" "17360" "20250101"
619 "509905" "39435" 620 "509906" "39435" "17360" "20250101"
620 "509906" "39435" 621 "509907" "39435" "17360" "20250101"
621 "509907" "39435" 622 "509908" "39435" "17360" "20250101"
622 "509908" "39435" 623 "509909" "39435" "17360" "20250101"
901 "510188" "39435.102121" 902 "510189" "39435.102121" "17408" "20250104"
902 "510189" "39435.102121" 903 "510190" "39435.102121" "17408" "20250104"
903 "510190" "39435.102121" 904 "510191" "39435.102121" "17408" "20250104"
904 "510191" "39435.102121" 905 "510192" "39435.102121" "17408" "20250104"
905 "510192" "39435.102121" 906 "510193" "39435.102121" "17408" "20250104"
922 "510214" "39435.102121" 923 "510215" "39435.102121" "17402" "20250104"
923 "510215" "39435.102121" 924 "510216" "39435.102121" "17402" "20250104"
924 "510216" "39435.102121" 925 "510217" "39435.102121" "17402" "20250104"
925 "510217" "39435.102121" 926 "510218" "39435.102121" "17402" "20250104"
926 "510218" "39435.102121" 927 "510219" "39435.102121" "17402" "20250104"
927 "510219" "39435.102121" 928 "510220" "39435.102121" "17402" "20250104"
928 "510220" "39435.102121" 929 "510221" "39435.102121" "17402" "20250104"
929 "510221" "39435.102121" 930 "510222" "39435.102121" "17402" "20250104"
930 "510222" "39435.102121" 931 "510223" "39435.102121" "17402" "20250104"
930 "510222" "39435.102121" 932 "510224" "39435.102121" "17402" "20250104"
931 "510223" "39435.102121" 932 "510224" "39435.102121" "17402" "20250104"
931 "510223" "39435.102121" 933 "510225" "39435.102121" "17402" "20250104"
932 "510224" "39435.102121" 933 "510225" "39435.102121" "17402" "20250104"
932 "510224" "39435.102121" 934 "510226" "39435.102121" "17402" "20250104"
933 "510225" "39435.102121" 934 "510226" "39435.102121" "17402" "20250104"
933 "510225" "39435.102121" 935 "510227" "39435.102121" "17402" "20250104"
934 "510226" "39435.102121" 935 "510227" "39435.102121" "17402" "20250104"
934 "510226" "39435.102121" 936 "510228" "39435.102121" "17402" "20250104"
935 "510227" "39435.102121" 936 "510228" "39435.102121" "17402" "20250104"
935 "510227" "39435.102121" 937 "510229" "39435.102121" "17402" "20250104"
936 "510228" "39435.102121" 937 "510229" "39435.102121" "17402" "20250104"
936 "510228" "39435.102121" 938 "510230" "39435.102121" "17402" "20250104"
start_and_end_range_out_of_order ERROR 708

start_and_end_range_out_of_order

Two date or time fields are out of order.

Date or time fields have been found out of order in calendar.txt, feed_info.txt and stop_times.txt.

You can see more about this notice here.

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

filename (?) The name of the faulty file. csvRowNumber (?) The row number of the faulty record. startFieldName (?) The start value's field name. startValue (?) The start value. endFieldName (?) The end value's field name. endValue (?) The end value.
"stop_times.txt" 12877 "arrival_time" "07:31:00" "departure_time" "07:30:00"
"stop_times.txt" 12891 "arrival_time" "07:52:00" "departure_time" "07:51:00"
"stop_times.txt" 12905 "arrival_time" "08:21:00" "departure_time" "08:19:00"
"stop_times.txt" 12919 "arrival_time" "08:42:00" "departure_time" "08:40:00"
"stop_times.txt" 12933 "arrival_time" "09:11:00" "departure_time" "09:08:00"
"stop_times.txt" 12947 "arrival_time" "09:33:00" "departure_time" "09:29:00"
"stop_times.txt" 12951 "arrival_time" "09:40:00" "departure_time" "09:39:00"
"stop_times.txt" 12961 "arrival_time" "09:59:00" "departure_time" "09:57:00"
"stop_times.txt" 12975 "arrival_time" "10:23:00" "departure_time" "10:18:00"
"stop_times.txt" 12979 "arrival_time" "10:30:00" "departure_time" "10:28:00"
"stop_times.txt" 12989 "arrival_time" "10:49:00" "departure_time" "10:46:00"
"stop_times.txt" 13003 "arrival_time" "11:13:00" "departure_time" "11:07:00"
"stop_times.txt" 13007 "arrival_time" "11:20:00" "departure_time" "11:17:00"
"stop_times.txt" 13017 "arrival_time" "11:39:00" "departure_time" "11:35:00"
"stop_times.txt" 13031 "arrival_time" "12:03:00" "departure_time" "11:56:00"
"stop_times.txt" 13035 "arrival_time" "12:10:00" "departure_time" "12:06:00"
"stop_times.txt" 13045 "arrival_time" "12:29:00" "departure_time" "12:24:00"
"stop_times.txt" 13059 "arrival_time" "12:53:00" "departure_time" "12:45:00"
"stop_times.txt" 13063 "arrival_time" "13:00:00" "departure_time" "12:55:00"
"stop_times.txt" 13073 "arrival_time" "13:15:00" "departure_time" "13:13:00"
"stop_times.txt" 13087 "arrival_time" "13:43:00" "departure_time" "13:34:00"
"stop_times.txt" 13091 "arrival_time" "13:50:00" "departure_time" "13:44:00"
"stop_times.txt" 13101 "arrival_time" "14:09:00" "departure_time" "14:02:00"
"stop_times.txt" 13115 "arrival_time" "14:33:00" "departure_time" "14:23:00"
"stop_times.txt" 13119 "arrival_time" "14:40:00" "departure_time" "14:33:00"
"stop_times.txt" 13122 "arrival_time" "14:45:00" "departure_time" "14:44:00"
"stop_times.txt" 13129 "arrival_time" "14:59:00" "departure_time" "14:51:00"
"stop_times.txt" 13143 "arrival_time" "15:23:00" "departure_time" "15:12:00"
"stop_times.txt" 13147 "arrival_time" "15:31:00" "departure_time" "15:22:00"
"stop_times.txt" 13150 "arrival_time" "15:36:00" "departure_time" "15:33:00"
"stop_times.txt" 13157 "arrival_time" "15:51:00" "departure_time" "15:40:00"
"stop_times.txt" 13171 "arrival_time" "16:13:00" "departure_time" "16:01:00"
"stop_times.txt" 13175 "arrival_time" "16:21:00" "departure_time" "16:11:00"
"stop_times.txt" 13178 "arrival_time" "16:26:00" "departure_time" "16:22:00"
"stop_times.txt" 13185 "arrival_time" "16:41:00" "departure_time" "16:29:00"
"stop_times.txt" 13199 "arrival_time" "17:03:00" "departure_time" "16:50:00"
"stop_times.txt" 13203 "arrival_time" "17:11:00" "departure_time" "17:00:00"
"stop_times.txt" 13206 "arrival_time" "17:16:00" "departure_time" "17:11:00"
"stop_times.txt" 13213 "arrival_time" "17:31:00" "departure_time" "17:18:00"
"stop_times.txt" 13227 "arrival_time" "17:53:00" "departure_time" "17:39:00"
"stop_times.txt" 13231 "arrival_time" "18:01:00" "departure_time" "17:49:00"
"stop_times.txt" 13234 "arrival_time" "18:06:00" "departure_time" "18:00:00"
"stop_times.txt" 13241 "arrival_time" "18:21:00" "departure_time" "18:07:00"
"stop_times.txt" 13255 "arrival_time" "18:42:00" "departure_time" "18:28:00"
"stop_times.txt" 13259 "arrival_time" "18:49:00" "departure_time" "18:38:00"
"stop_times.txt" 13262 "arrival_time" "18:54:00" "departure_time" "18:49:00"
"stop_times.txt" 13269 "arrival_time" "19:08:00" "departure_time" "18:56:00"
"stop_times.txt" 13283 "arrival_time" "19:32:00" "departure_time" "19:17:00"
"stop_times.txt" 13287 "arrival_time" "19:39:00" "departure_time" "19:27:00"
"stop_times.txt" 13290 "arrival_time" "19:44:00" "departure_time" "19:38:00"
stop_time_with_arrival_before_previous_departure_time ERROR 19

stop_time_with_arrival_before_previous_departure_time

Backwards time travel between stops in stop_times.txt

For a given trip_id, the arrival_time of (n+1)-th stoptime in sequence must not precede the departure_time of n-th stoptime in sequence in stop_times.txt.

You can see more about this notice here.

csvRowNumber (?) The row number of the faulty record. prevCsvRowNumber (?) The row of the previous stop time. tripId (?) The trip_id associated to the faulty record. arrivalTime (?) Arrival time at the faulty record. departureTime (?) Departure time at the previous stop time.
16474 16465 "510043" "22:31:00" "22:51:00"
16502 16493 "510044" "23:21:00" "23:40:00"
17534 17525 "510081" "23:42:00" "23:50:00"
15498 15491 "510007" "07:10:00" "31:02:00"
14639 14630 "509976" "12:06:00" "23:54:00"
12702 12701 "509904" "15:33:00" "15:35:00"
12723 12715 "509905" "16:01:00" "16:02:00"
12730 12729 "509905" "16:22:00" "16:25:00"
12751 12743 "509906" "16:50:00" "16:52:00"
12758 12757 "509906" "17:11:00" "17:15:00"
12779 12771 "509907" "17:39:00" "17:42:00"
12786 12785 "509907" "18:00:00" "18:05:00"
12807 12799 "509908" "18:28:00" "18:32:00"
12814 12813 "509908" "18:49:00" "18:53:00"
12835 12827 "509909" "19:17:00" "19:22:00"
12842 12841 "509909" "19:38:00" "19:43:00"
20278 20275 "510182" "10:32:00" "10:33:00"
20250 20247 "510181" "09:42:00" "09:44:00"
18961 18957 "510133" "23:57:00" "23:59:00"
equal_shape_distance_same_coordinates WARNING 52

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 52 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`.
"49071" 2052 939.42 27 2051 939.42 26
"49071" 2065 1288.35 40 2064 1288.35 39
"49071" 2074 1527.02 49 2073 1527.02 48
"49071" 2079 1603.95 54 2078 1603.95 53
"49071" 2114 1881.28 89 2113 1881.28 88
"49071" 2178 2915.05 153 2177 2915.05 152
"49071" 2191 3231.71 166 2190 3231.71 165
"49071" 2198 3597.25 173 2197 3597.25 172
"49071" 2208 3994.12 183 2207 3994.12 182
"49071" 2213 4322.96 188 2212 4322.96 187
"49071" 2229 4939.3 204 2228 4939.3 203
"49071" 2238 5172.26 213 2237 5172.26 212
"49071" 2244 5281.78 219 2243 5281.78 218
"49071" 2246 5296.46 221 2245 5296.46 220
"49071" 2266 7554.23 241 2265 7554.23 240
"49071" 2277 7954.33 252 2276 7954.33 251
"49071" 2286 8342.23 261 2285 8342.23 260
"49071" 2304 8780.33 279 2303 8780.33 278
"49071" 2307 8790.41 282 2306 8790.41 281
"49071" 2323 9092.65 298 2322 9092.65 297
"49071" 2326 9175.14 301 2325 9175.14 300
"49071" 2332 9351.26 307 2331 9351.26 306
"49071" 2344 9697.96 319 2343 9697.96 318
"49071" 2354 9915.4 329 2353 9915.4 328
"49071" 2359 9978.14 334 2358 9978.14 333
"49071" 2383 10205.4 358 2382 10205.4 357
"49071" 2391 10350.42 366 2390 10350.42 365
"49071" 2404 10665.14 379 2403 10665.14 378
"49071" 2408 10738.0 383 2407 10738.0 382
"49071" 2420 11044.9 395 2419 11044.9 394
"39435" 74 1725.58 73 73 1725.58 72
"39435" 80 1826.43 79 79 1826.43 78
"39435" 90 2021.9 89 89 2021.9 88
"39435" 103 2226.26 102 102 2226.26 101
"39435" 118 2583.79 117 117 2583.79 116
"39435" 127 2917.47 126 126 2917.47 125
"39435" 182 4414.21 181 181 4414.21 180
"39435" 203 5024.14 202 202 5024.14 201
"39435" 218 5254.29 217 217 5254.29 216
"39435" 219 5254.29 218 218 5254.29 217
"39435" 231 5444.39 230 230 5444.39 229
"39435" 292 7411.1 291 291 7411.1 290
"39435" 302 7612.51 301 301 7612.51 300
"39435" 311 7895.92 310 310 7895.92 309
"39435" 313 7979.56 312 312 7979.56 311
"39435" 315 8011.52 314 314 8011.52 313
"39435" 326 8318.81 325 325 8318.81 324
"39437" 1828 6310.36 265 1827 6310.36 264
"39437" 1843 6508.53 280 1842 6508.53 279
"39437" 1844 6508.53 281 1843 6508.53 280
feed_expiration_date30_days WARNING 1

feed_expiration_date30_days

Dataset should cover at least the next 30 days of service.

At any time, the GTFS dataset should cover at least the next 30 days of service, and ideally for as long as the operator is confident that the schedule will continue to be operated.

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" "20260221" "20260222"
mixed_case_recommended_field WARNING 1

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" "UMMC SB (EB)" 192
stop_without_stop_time WARNING 69

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.

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

csvRowNumber (?) The row number of the faulty record. stopId (?) The id of the faulty stop. stopName (?) The name of the faulty stop.
8 "142083" "29th St. (SB)"
10 "142103" "32nd St - MedStar Union Memorial Hospital"
12 "162750" "33rd & Calvert"
19 "189001" "Baltimore Juvenile Justice Center"
28 "188695" "Broadway & Ashland"
29 "188694" "Broadway & Chase"
30 "188663" "Broadway & Eager"
31 "188664" "Broadway & Ellsworth"
32 "188693" "Broadway & Ellsworth SB"
34 "188665" "Broadway & Federal"
35 "188692" "Broadway & Federal SB"
36 "188666" "Broadway & Harford Heights"
37 "188662" "Broadway & Madison"
38 "188691" "Broadway & North"
39 "142036" "Broadway Market (WB)"
41 "142025" "Caroline St. (EB)"
55 "141996" "Conway Street"
67 "142017" "Fallsway (EB)"
70 "142029" "Fayette St. NB (EB)"
71 "142034" "Fayette St. SB (WB)"
75 "142027" "Fleet St. (EB)"
76 "142037" "Fleet St. (WB)"
84 "171363" "Fuel Site"
85 "211623" "Gay & Exeter"
86 "188657" "Gay & Front St."
88 "142019" "Gay St. (EB)"
89 "142038" "Gay St. (WB)"
90 "142035" "Gough St. (WB)"
92 "162749" "Greenmount & 30th Street"
98 "188689" "Harford & Curtain"
102 "142016" "High St. (WB)"
103 "162702" "High Street"
106 "188655" "Hillen & High St."
111 "142068" "Inner Harbor (NB)"
114 "142030" "Johns Hopkins NB (EB)"
115 "142033" "Johns Hopkins SB (WB)"
121 "162756" "Light & Henrietta St. (SB)"
125 "142028" "Lombard St. NB (EB)"
126 "142021" "Lombard St. SB (EB)"
127 "169536" "Lombard Street"
128 "142031" "Madison St. (EB)"
131 "142024" "Maritime Park (WB)"
133 "142039" "Market Place NB (WB)"
134 "142020" "Market Place SB (EB)"
145 "156760" "N. Greene St. and Lombard"
150 "188690" "North Ave & Harford Road"
154 "188659" "Orleans & Central"
155 "188698" "Orleans & Central WB"
156 "188658" "Orleans & Forrest"
157 "188699" "Orleans & Forrest WB"
stops_match_shape_out_of_order WARNING 8

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.
608 "39437" "509894" 12418 "142023" "Harbor East (EB)" [39.28424801039625,-76.60055878088438] 12417 "142026" "Maritime Park (EB)" [39.27977583816538,-76.59628061358964]
719 "39437" "510006" 15482 "142023" "Harbor East (EB)" [39.28424801039625,-76.60055878088438] 15481 "142026" "Maritime Park (EB)" [39.27977583816538,-76.59628061358964]
736 "39437" "510023" 15935 "142023" "Harbor East (EB)" [39.28424801039625,-76.60055878088438] 15934 "142026" "Maritime Park (EB)" [39.27977583816538,-76.59628061358964]
773 "39437" "510060" 16953 "142023" "Harbor East (EB)" [39.28424801039625,-76.60055878088438] 16952 "142026" "Maritime Park (EB)" [39.27977583816538,-76.59628061358964]
794 "39437" "510081" 17537 "142023" "Harbor East (EB)" [39.28424801039625,-76.60055878088438] 17536 "142026" "Maritime Park (EB)" [39.27977583816538,-76.59628061358964]
827 "39437" "510114" 18441 "142023" "Harbor East (EB)" [39.28424801039625,-76.60055878088438] 18440 "142026" "Maritime Park (EB)" [39.27977583816538,-76.59628061358964]
860 "39437" "510147" 19325 "142023" "Harbor East (EB)" [39.28424801039625,-76.60055878088438] 19324 "142026" "Maritime Park (EB)" [39.27977583816538,-76.59628061358964]
892 "39437" "510179" 20209 "142023" "Harbor East (EB)" [39.28424801039625,-76.60055878088438] 20208 "142026" "Maritime Park (EB)" [39.27977583816538,-76.59628061358964]