GTFS Schedule Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 7.1.0 at 2026-05-09T18:16:47Z,
for the dataset file:///shared/rubis-fra_9ce48ed3.zip. No country code was provided.

Use this report alongside our documentation.

A new version of the Canonical GTFS Schedule validator is available! Please update to get the latest/best validation results.

Summary

Agencies included


Feed Info


Publisher Name:
N/A
Publisher URL:
N/A
Feed Email:
N/A
Feed Language:
N/A

Files included


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

Counts


  • Agencies: 1
  • Blocks: 0
  • Routes: 120
  • Shapes: 659
  • Stops: 1214
  • Trips: 2047

Specification Compliance report

5766 notices reported (13 errors, 5753 warnings, 0 infos)

Notice Code Severity Total
duplicate_key ERROR 13

duplicate_key

Duplicated entity.

The values of the given key and rows are duplicates.

You can see more about this notice here.

filename (?) The name of the faulty file oldCsvRowNumber (?) The row of the first occurrence. newCsvRowNumber (?) The row of the other occurrence. fieldName1 (?) Composite key's first field name. fieldValue1 (?) Composite key's first value.
"trips.txt" 1270 1272 "trip_id" "72499"
"trips.txt" 1273 1274 "trip_id" "72500"
"trips.txt" 1354 1355 "trip_id" "61314"
"trips.txt" 1354 1356 "trip_id" "61314"
"trips.txt" 1365 1367 "trip_id" "61315"
"trips.txt" 1366 1369 "trip_id" "61318"
"trips.txt" 1368 1370 "trip_id" "61316"
"trips.txt" 1365 1371 "trip_id" "61315"
"trips.txt" 1366 1372 "trip_id" "61318"
"trips.txt" 1366 1374 "trip_id" "61318"
"trips.txt" 1373 1375 "trip_id" "61317"
"trips.txt" 1685 1687 "trip_id" "67828"
"trips.txt" 1952 1954 "trip_id" "61151"
equal_shape_distance_same_coordinates WARNING 4214

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 4214 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`.
"105-775" 62341 1450.98 30 62342 1450.98 29
"105-775" 62426 19863.6 108 62425 19863.6 107
"105-775" 62435 21283.1 115 62434 21283.1 114
"105-775" 62418 22537.5 122 62417 22537.5 121
"105-775" 62414 23353.6 129 62413 23353.6 128
"105-775" 62467 24854.2 155 62466 24854.2 154
"105-775" 62473 27001.6 161 62472 27001.6 160
"105-775" 62479 28418.7 167 62478 28418.7 166
"105-773" 61981 562.143 11 61980 562.143 10
"105-773" 61972 1979.89 20 61971 1979.89 19
"105-773" 61963 4127.84 29 61962 4127.84 28
"105-773" 61908 5633.79 55 61907 5633.79 54
"105-773" 61912 6453.39 63 61911 6453.39 62
"105-773" 61929 7717.91 70 61928 7717.91 69
"105-773" 61921 9137.08 77 61920 9137.08 76
"105-773" 61739 27688.6 140 61738 27688.6 139
"RJMFR-665" 19009 5766.84 53 19008 5766.84 52
"105-774" 62019 1450.98 30 62020 1450.98 29
"105-774" 62185 12743.1 103 62186 12743.1 102
"105-774" 62205 19395.3 145 62204 19395.3 144
"105-774" 62258 21548.8 166 62257 21548.8 165
"105-774" 62268 22968.3 173 62267 22968.3 172
"105-774" 62247 24222.7 180 62246 24222.7 179
"105-774" 62241 25038.8 187 62240 25038.8 186
"105-774" 62295 26539.4 213 62294 26539.4 212
"105-774" 62301 28686.8 219 62300 28686.8 218
"105-774" 62307 30103.9 225 62306 30103.9 224
"303-1022" 36580 2762.1 4 36579 2762.1 3
"303-1022" 36545 3380.67 20 36544 3380.67 19
"303-1022" 36516 3582.43 28 36515 3582.43 27
"303-1022" 36510 4327.18 33 36509 4327.18 32
"303-1022" 36461 4782.89 44 36460 4782.89 43
"303-1022" 36535 6544.64 72 36534 6544.64 71
"303-1022" 36529 8133.26 105 36528 8133.26 104
"303-1022" 36476 8635.82 110 36475 8635.82 109
"303-1022" 36572 10702.5 122 36571 10702.5 121
"303-1022" 36613 11902.7 138 36612 11902.7 137
"303-1022" 36658 13018.9 161 36657 13018.9 160
"303-1022" 36635 14537.6 179 36634 14537.6 178
"303-1022" 36561 15730.3 199 36560 15730.3 198
"303-1022" 36601 16521.8 218 36600 16521.8 217
"303-1022" 36647 17322.2 225 36646 17322.2 224
"HLP-HLP_DEP_BBCB" 30976 825.857 9 30975 825.857 8
"280-747" 34611 3307.08 15 34610 3307.08 14
"280-748" 34643 3895.56 19 34642 3895.56 18
"160-988" 20503 328.493 10 20502 328.493 9
"160-988" 20492 533.493 16 20491 533.493 15
"160-988" 20497 1556.53 34 20496 1556.53 33
"160-988" 20561 8169.5 81 20560 8169.5 80
"160-988" 20587 9239.03 91 20586 9239.03 90
missing_recommended_field WARNING 120

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.

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

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

missing_recommended_file

A recommended file is missing.

You can see more about this notice here.

filename (?) The name of the faulty file.
"feed_info.txt"
mixed_case_recommended_field WARNING 1039

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 1039 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.
"routes.txt" "route_long_name" "RJN NAVETTE JASSERON" 6
"routes.txt" "route_long_name" "RJN NAVETTE CFA" 9
"routes.txt" "route_long_name" "RJN NAVETTE EREA" 10
"routes.txt" "route_long_name" "RJN NAVETTE MFR" 11
"stops.txt" "stop_name" "etrez-BRESSE-VALLONS - LE ROUGET-BRE-LE ROUGET" 51
"stops.txt" "stop_name" "etrez-BRESSE-VALLONS - SPIRE-BRESSE-VALLONS - SPI" 52
"stops.txt" "stop_name" "etrez-BRESSE-VALLONS - VIEILLE RONGE-BRE-VIEILLE RO" 54
"stops.txt" "stop_name" "etrez-BRESSE-VALLONS - BOUQUERIEUX-BRE-BOUQUERIEU" 1111
"stops.txt" "stop_name" "etrez-BRESSE-VALLONS - CHAMONAL-BRE-CHAMONAL" 1115
"stops.txt" "stop_name" "etrez-BRESSE-VALLONS - ETREZ-BRE-ETREZ" 1119
"stops.txt" "stop_name" "etrez-BRESSE-VALLONS - FERME VILLAGE D'EN HAUT-BRE-FERME VILL" 1121
"stops.txt" "stop_name" "etrez-BRESSE-VALLONS - GUIGNEBOIS-BRE-GUIGNEBOIS" 1123
"stops.txt" "stop_name" "etrez-BRESSE-VALLONS - LES POIRIERS-BRE-LES POIRIE" 1132
"stops.txt" "stop_name" "etrez-BRESSE-VALLONS - LES COMBES-BRE-LES COMBES" 1197
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 2
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 3
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 4
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 5
"trips.txt" "trip_headsign" "BOUVENT PLAGE" 21
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 22
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 23
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 24
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 25
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 26
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 27
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 28
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 29
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 30
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 31
"trips.txt" "trip_headsign" "BOUVENT PLAGE" 32
"trips.txt" "trip_headsign" "BOUVENT PLAGE" 33
"trips.txt" "trip_headsign" "BOUVENT PLAGE" 34
"trips.txt" "trip_headsign" "BOUVENT PLAGE" 35
"trips.txt" "trip_headsign" "BOUVENT PLAGE" 36
"trips.txt" "trip_headsign" "BOUVENT PLAGE" 37
"trips.txt" "trip_headsign" "BOUVENT PLAGE" 38
"trips.txt" "trip_headsign" "BOUVENT PLAGE" 39
"trips.txt" "trip_headsign" "BOUVENT PLAGE" 40
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 41
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 42
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 43
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 44
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 45
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 46
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 47
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 48
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 49
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 50
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 51
"trips.txt" "trip_headsign" "HOPITAL FLEYRIAT" 52
route_long_name_contains_short_name WARNING 11

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`.
"4" 16 "4" "4"
"7" 17 "7" "7"
"3" 18 "3" "3"
"6" 19 "6" "6"
"2" 20 "2" "2"
"1" 21 "1" "1"
"115" 23 "115" "115 - Verjon <> Bourg-en-Bresse"
"10" 24 "10" "10"
"11" 35 "11" "11"
"12" 43 "12" "12"
"5" 107 "5" "5"
stop_without_stop_time WARNING 16

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.
135 "1684660" "Jayat-Jayat - Cezilles-Jayat - Cezilles"
244 "1685216" "Saint-Didier-d'Aussiat-Saint-Didier-d'Aussiat - Terres Blanches-SDIt - TERRES BLANCH"
245 "1685218" "Domsure-DOMSURE - LOTISSEMENT 2-DOMSURE - LOTISSEMEN"
346 "1684691" "Bourg-en-Bresse-Bourg-en-Bresse Revermont-Lyc Voisin"
347 "1684692" "Bourg-en-Bresse-Bourg-en-Bresse Revermont-Lycee G. Voisin"
359 "1684704" "Lescheroux-LESCHEROUX - VILLAGE-LES-VILLAGE"
846 "1684555" "Domsure-DOMSURE - LES COURS-DOS-LES COURS"
848 "1684557" "Domsure-DOMSURE - ECOLE PRIMAIRE-DOS-ECOLE PRIM"
852 "1684561" "Domsure-DOMSURE - GROSSET-DOS-GROSSET"
856 "1684565" "Domsure-DOMSURE - LOTISSEMENT-DOS-LOTISSEMEN"
859 "1684568" "Domsure-DOMSURE - MIROTON-DOS-MIROTON"
890 "1684599" "Bourg-en-Bresse-Edouard Herriot-Edouard Herriot"
891 "1684600" "Bourg-en-Bresse-Edouard Herriot-Edouard Herriot"
1041 "1684937" "Saint-Didier-d'Aussiat-SAINT-DIDIER-D'AUSSIAT - BeLOUZE-SDI-BeLOUZE"
1048 "1684944" "Saint-Didier-d'Aussiat-SAINT-DIDIER-D'AUSSIAT - COLLONGES-SDI-COLLONGES"
1189 "1684329" "Bourg-en-Bresse-BOURG-EN-BRESSE - ALIMENTEC-BOURG-EN-BRESSE - AL"
unused_shape WARNING 352

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.

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

shapeId (?) The faulty record's id. csvRowNumber (?) The row number of the faulty record.
"HLP-HLP_CNLE1_DEP" 172
"HLP-HLP_CNPL1_DEP" 242
"HLP-HLP_JCEZ1_ATTDEPO1" 259
"HLP-HLP_JCEZ1_DEP" 261
"HLP-HLP_JCEZ1_ROMDEPO1" 263
"HLP-HLP_JREL1_DEP" 265
"HLP-HLP_LAGR1_CCJA4" 267
"HLP-HLP_LCHM1_DEP" 269
"HLP-HLP_LDON1_DEP" 271
"HLP-HLP_LECO1_DEP" 273
"HLP-HLP_LEGL1_DEP" 275
"HLP-HLP_LPON1_DEP" 277
"HLP-HLP_LSAL1_DEP" 279
"HLP-HLP_MAPI1_DEP" 281
"HLP-HLP_MCOL1_DEP" 283
"HLP-HLP_MECO1_DEP" 285
"HLP-HLP_MEGL1_DEP" 287
"HLP-HLP_MERA1_DEP" 289
"HLP-HLP_MMEC1_DEP" 291
"HLP-HLP_MOCG2_DEP" 293
"HLP-HLP_MOCO1_DEP" 295
"HLP-HLP_MOCU1_DEP" 297
"HLP-HLP_MRBE1_DEP" 299
"HLP-HLP_MRCO1_DEP" 301
"HLP-HLP_MRMA1_DEP" 303
"HLP-HLP_MRMR1_DEP" 305
"HLP-HLP_MRPR1_DEP" 307
"HLP-HLP_MRPU1_DEP" 309
"HLP-HLP_MSTR1_DEP" 311
"HLP-HLP_MTJA1_DEP" 313
"HLP-HLP_MVIL1_DEP" 315
"HLP-HLP_NCEC1_DEP" 317
"HLP-HLP_NCSU1_DEP" 319
"HLP-HLP_PCCO1_DEP" 321
"HLP-HLP_PCHN1_DEP" 323
"HLP-HLP_PECO1_DEP" 325
"HLP-HLP_PERZA2_BDOR1" 327
"HLP-HLP_PERZA2_PERZA1" 329
"HLP-HLP_PGYM1_DEP" 342
"HLP-HLP_PIMO1_DEP" 344
"HLP-HLP_CNST1_DEP" 1700
"HLP-HLP_COBS1_DEP" 4757
"HLP-HLP_COCO1_DEP" 5064
"HLP-HLP_COEC1_DEP" 5803
"HLP-HLP_PIVI1_DEP" 6180
"HLP-HLP_PMFR1_DEP" 6182
"HLP-HLP_POCA1_DEP" 6184
"HLP-HLP_POCH1_DEP" 6186
"HLP-HLP_POEC1_DEP" 6188
"HLP-HLP_POPO1_DEP" 6190