GTFS Schedule Validation Report

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

Use this report alongside our documentation.

Summary

Agencies included


Feed Info


Publisher Name:
CITYWAY
Publisher URL:
http://cityway.fr
Feed Email:
N/A
Feed Language:
French
Feed Start Date:
2025-12-17
Feed End Date:
2026-08-31

Files included


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

Counts


  • Agencies: 4
  • Blocks: 98
  • Routes: 111
  • Shapes: 356
  • Stops: 3990
  • Trips: 16391

Specification Compliance report

102644 notices reported (0 errors, 102644 warnings, 0 infos)

Notice Code Severity Total
fast_travel_between_consecutive_stops WARNING 26

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.

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.
7832 "TCAR:15704" "TCAR:530" 659.5688298303888 10.992813830506481 169612 27 "TCAR:JUABB1" "Abbaye de Jumièges" "10:47:00" 169613 28 "TCAR:SMROU" "Roumardière" "10:47:00"
7836 "TCAR:15708" "TCAR:530" 659.5688298303888 10.992813830506481 157166 27 "TCAR:JUABB1" "Abbaye de Jumièges" "10:47:00" 157167 28 "TCAR:SMROU" "Roumardière" "10:47:00"
7832 "TCAR:15704" "TCAR:530" 315.7591723559593 10.525305745198645 169613 28 "TCAR:SMROU" "Roumardière" "10:47:00" 169614 29 "TCAR:JUGUI1" "Guillaume Le Conquérant" "10:48:00"
7836 "TCAR:15708" "TCAR:530" 315.7591723559593 10.525305745198645 157167 28 "TCAR:SMROU" "Roumardière" "10:47:00" 157168 29 "TCAR:JUGUI1" "Guillaume Le Conquérant" "10:48:00"
7828 "TCAR:15700" "TCAR:530" 659.5688298303888 10.992813830506481 157220 27 "TCAR:JUABB1" "Abbaye de Jumièges" "10:47:00" 157221 28 "TCAR:SMROU" "Roumardière" "10:47:00"
7828 "TCAR:15700" "TCAR:530" 315.7591723559593 10.525305745198645 157221 28 "TCAR:SMROU" "Roumardière" "10:47:00" 157222 29 "TCAR:JUGUI1" "Guillaume Le Conquérant" "10:48:00"
7833 "TCAR:15705" "TCAR:530" 659.5688298303888 10.992813830506481 158113 27 "TCAR:JUABB1" "Abbaye de Jumièges" "13:47:00" 158114 28 "TCAR:SMROU" "Roumardière" "13:47:00"
7834 "TCAR:15706" "TCAR:530" 659.5688298303888 10.992813830506481 156041 27 "TCAR:JUABB1" "Abbaye de Jumièges" "13:47:00" 156042 28 "TCAR:SMROU" "Roumardière" "13:47:00"
7833 "TCAR:15705" "TCAR:530" 315.7591723559593 10.525305745198645 158114 28 "TCAR:SMROU" "Roumardière" "13:47:00" 158115 29 "TCAR:JUGUI1" "Guillaume Le Conquérant" "13:48:00"
7834 "TCAR:15706" "TCAR:530" 315.7591723559593 10.525305745198645 156042 28 "TCAR:SMROU" "Roumardière" "13:47:00" 156043 29 "TCAR:JUGUI1" "Guillaume Le Conquérant" "13:48:00"
7829 "TCAR:15701" "TCAR:530" 659.5688298303888 10.992813830506481 158032 27 "TCAR:JUABB1" "Abbaye de Jumièges" "14:47:00" 158033 28 "TCAR:SMROU" "Roumardière" "14:47:00"
7829 "TCAR:15701" "TCAR:530" 315.7591723559593 10.525305745198645 158033 28 "TCAR:SMROU" "Roumardière" "14:47:00" 158034 29 "TCAR:JUGUI1" "Guillaume Le Conquérant" "14:48:00"
7841 "TCAR:15712" "TCAR:530" 659.5688298303888 10.992813830506481 156937 27 "TCAR:JUABB1" "Abbaye de Jumièges" "16:47:00" 156938 28 "TCAR:SMROU" "Roumardière" "16:47:00"
7841 "TCAR:15712" "TCAR:530" 315.7591723559593 10.525305745198645 156938 28 "TCAR:SMROU" "Roumardière" "16:47:00" 156939 29 "TCAR:JUGUI1" "Guillaume Le Conquérant" "16:48:00"
7831 "TCAR:15703" "TCAR:530" 659.5688298303888 10.992813830506481 156362 27 "TCAR:JUABB1" "Abbaye de Jumièges" "08:57:00" 156363 28 "TCAR:SMROU" "Roumardière" "08:57:00"
7835 "TCAR:15707" "TCAR:530" 659.5688298303888 10.992813830506481 157291 27 "TCAR:JUABB1" "Abbaye de Jumièges" "08:57:00" 157292 28 "TCAR:SMROU" "Roumardière" "08:57:00"
7831 "TCAR:15703" "TCAR:530" 315.7591723559593 10.525305745198645 156363 28 "TCAR:SMROU" "Roumardière" "08:57:00" 156364 29 "TCAR:JUGUI1" "Guillaume Le Conquérant" "08:58:00"
7835 "TCAR:15707" "TCAR:530" 315.7591723559593 10.525305745198645 157292 28 "TCAR:SMROU" "Roumardière" "08:57:00" 157293 29 "TCAR:JUGUI1" "Guillaume Le Conquérant" "08:58:00"
7837 "TCAR:15709" "TCAR:530" 659.5688298303888 10.992813830506481 156214 27 "TCAR:JUABB1" "Abbaye de Jumièges" "12:02:00" 156215 28 "TCAR:SMROU" "Roumardière" "12:02:00"
7837 "TCAR:15709" "TCAR:530" 315.7591723559593 10.525305745198645 156215 28 "TCAR:SMROU" "Roumardière" "12:02:00" 156216 29 "TCAR:JUGUI1" "Guillaume Le Conquérant" "12:03:00"
7839 "TCAR:15710" "TCAR:530" 659.5688298303888 10.992813830506481 158076 27 "TCAR:JUABB1" "Abbaye de Jumièges" "14:12:00" 158077 28 "TCAR:SMROU" "Roumardière" "14:12:00"
7839 "TCAR:15710" "TCAR:530" 315.7591723559593 10.525305745198645 158077 28 "TCAR:SMROU" "Roumardière" "14:12:00" 158078 29 "TCAR:JUGUI1" "Guillaume Le Conquérant" "14:13:00"
7840 "TCAR:15711" "TCAR:530" 659.5688298303888 10.992813830506481 171460 27 "TCAR:JUABB1" "Abbaye de Jumièges" "20:37:00" 171461 28 "TCAR:SMROU" "Roumardière" "20:37:00"
7840 "TCAR:15711" "TCAR:530" 315.7591723559593 10.525305745198645 171461 28 "TCAR:SMROU" "Roumardière" "20:37:00" 171462 29 "TCAR:JUGUI1" "Guillaume Le Conquérant" "20:38:00"
7830 "TCAR:15702" "TCAR:530" 659.5688298303888 10.992813830506481 158439 27 "TCAR:JUABB1" "Abbaye de Jumièges" "18:47:00" 158440 28 "TCAR:SMROU" "Roumardière" "18:47:00"
7830 "TCAR:15702" "TCAR:530" 315.7591723559593 10.525305745198645 158440 28 "TCAR:SMROU" "Roumardière" "18:47:00" 158441 29 "TCAR:JUGUI1" "Guillaume Le Conquérant" "18:48:00"
fast_travel_between_far_stops WARNING 13

fast_travel_between_far_stops

A transit vehicle moves too fast between two far stops.

Two stops are considered "far" if they are more than 10 km apart. This normally indicates a more serious problem than too fast travel between consecutive stops.

The speed threshold depends on route type and are the same as fast_travel_between_consecutive_stops.

You can see more about this notice here.

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.
7832 "TCAR:15704" "TCAR:530" 659.5688298303888 10.992813830506481 169612 27 "TCAR:JUABB1" "Abbaye de Jumièges" "10:47:00" 169613 28 "TCAR:SMROU" "Roumardière" "10:47:00"
7836 "TCAR:15708" "TCAR:530" 659.5688298303888 10.992813830506481 157166 27 "TCAR:JUABB1" "Abbaye de Jumièges" "10:47:00" 157167 28 "TCAR:SMROU" "Roumardière" "10:47:00"
7828 "TCAR:15700" "TCAR:530" 659.5688298303888 10.992813830506481 157220 27 "TCAR:JUABB1" "Abbaye de Jumièges" "10:47:00" 157221 28 "TCAR:SMROU" "Roumardière" "10:47:00"
7833 "TCAR:15705" "TCAR:530" 659.5688298303888 10.992813830506481 158113 27 "TCAR:JUABB1" "Abbaye de Jumièges" "13:47:00" 158114 28 "TCAR:SMROU" "Roumardière" "13:47:00"
7834 "TCAR:15706" "TCAR:530" 659.5688298303888 10.992813830506481 156041 27 "TCAR:JUABB1" "Abbaye de Jumièges" "13:47:00" 156042 28 "TCAR:SMROU" "Roumardière" "13:47:00"
7829 "TCAR:15701" "TCAR:530" 659.5688298303888 10.992813830506481 158032 27 "TCAR:JUABB1" "Abbaye de Jumièges" "14:47:00" 158033 28 "TCAR:SMROU" "Roumardière" "14:47:00"
7841 "TCAR:15712" "TCAR:530" 659.5688298303888 10.992813830506481 156937 27 "TCAR:JUABB1" "Abbaye de Jumièges" "16:47:00" 156938 28 "TCAR:SMROU" "Roumardière" "16:47:00"
7831 "TCAR:15703" "TCAR:530" 659.5688298303888 10.992813830506481 156362 27 "TCAR:JUABB1" "Abbaye de Jumièges" "08:57:00" 156363 28 "TCAR:SMROU" "Roumardière" "08:57:00"
7835 "TCAR:15707" "TCAR:530" 659.5688298303888 10.992813830506481 157291 27 "TCAR:JUABB1" "Abbaye de Jumièges" "08:57:00" 157292 28 "TCAR:SMROU" "Roumardière" "08:57:00"
7837 "TCAR:15709" "TCAR:530" 659.5688298303888 10.992813830506481 156214 27 "TCAR:JUABB1" "Abbaye de Jumièges" "12:02:00" 156215 28 "TCAR:SMROU" "Roumardière" "12:02:00"
7839 "TCAR:15710" "TCAR:530" 659.5688298303888 10.992813830506481 158076 27 "TCAR:JUABB1" "Abbaye de Jumièges" "14:12:00" 158077 28 "TCAR:SMROU" "Roumardière" "14:12:00"
7840 "TCAR:15711" "TCAR:530" 659.5688298303888 10.992813830506481 171460 27 "TCAR:JUABB1" "Abbaye de Jumièges" "20:37:00" 171461 28 "TCAR:SMROU" "Roumardière" "20:37:00"
7830 "TCAR:15702" "TCAR:530" 659.5688298303888 10.992813830506481 158439 27 "TCAR:JUABB1" "Abbaye de Jumièges" "18:47:00" 158440 28 "TCAR:SMROU" "Roumardière" "18:47:00"
missing_bike_allowance WARNING 122

missing_bike_allowance

Ferry trips should include bike allowance information.

All ferry trips should have a valid value in the bikes_allowed field in trips.txt.

You can see more about this notice here.

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

csvRowNumber (?) The row number of the faulty record. routeId (?) The faulty record's route id. tripId (?) The faulty record's trip id.
12578 "TCAR:99" "TCAR:6850"
12579 "TCAR:99" "TCAR:6851"
12580 "TCAR:99" "TCAR:6852"
12581 "TCAR:99" "TCAR:6853"
12582 "TCAR:99" "TCAR:6854"
12583 "TCAR:99" "TCAR:6855"
12584 "TCAR:99" "TCAR:6856"
12585 "TCAR:99" "TCAR:6857"
12586 "TCAR:99" "TCAR:6858"
12587 "TCAR:99" "TCAR:6859"
12589 "TCAR:99" "TCAR:6860"
12590 "TCAR:99" "TCAR:6861"
12591 "TCAR:99" "TCAR:6862"
12592 "TCAR:99" "TCAR:6863"
12593 "TCAR:99" "TCAR:6864"
12594 "TCAR:99" "TCAR:6865"
12595 "TCAR:99" "TCAR:6866"
12596 "TCAR:99" "TCAR:6867"
12597 "TCAR:99" "TCAR:6868"
12598 "TCAR:99" "TCAR:6869"
12600 "TCAR:99" "TCAR:6870"
12601 "TCAR:99" "TCAR:6871"
12602 "TCAR:99" "TCAR:6872"
12603 "TCAR:99" "TCAR:6873"
12604 "TCAR:99" "TCAR:6874"
12605 "TCAR:99" "TCAR:6875"
12606 "TCAR:99" "TCAR:6876"
12607 "TCAR:99" "TCAR:6877"
12608 "TCAR:99" "TCAR:6878"
12609 "TCAR:99" "TCAR:6879"
12611 "TCAR:99" "TCAR:6880"
12612 "TCAR:99" "TCAR:6881"
12613 "TCAR:99" "TCAR:6882"
12614 "TCAR:99" "TCAR:6883"
12615 "TCAR:99" "TCAR:6884"
12616 "TCAR:99" "TCAR:6885"
12617 "TCAR:99" "TCAR:6886"
12618 "TCAR:99" "TCAR:6887"
12619 "TCAR:99" "TCAR:6888"
12620 "TCAR:99" "TCAR:6889"
12622 "TCAR:99" "TCAR:6890"
12623 "TCAR:99" "TCAR:6891"
12624 "TCAR:99" "TCAR:6892"
12625 "TCAR:99" "TCAR:6893"
12626 "TCAR:99" "TCAR:6894"
12627 "TCAR:99" "TCAR:6895"
12628 "TCAR:99" "TCAR:6896"
12629 "TCAR:99" "TCAR:6897"
12630 "TCAR:99" "TCAR:6898"
12631 "TCAR:99" "TCAR:6899"
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
missing_timepoint_value WARNING 100000

missing_timepoint_value

stop_times.timepoint value is missing for a record.

When at least one of stop_times.arrival_time or stop_times.departure_time are provided, stop_times.timepoint should be defined

You can see more about this notice here.

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

csvRowNumber (?) The row number of the faulty record. tripId (?) The faulty record's `stop_times.trip_id`. stopSequence (?) The faulty record's `stop_times.stop_sequence`.
2 "TAE:3033" 1
3 "TAE:3033" 2
4 "TAE:3033" 3
5 "TAE:3033" 4
6 "TAE:3033" 5
7 "TAE:3033" 6
8 "TAE:3033" 7
9 "TAE:3033" 8
10 "TAE:3033" 9
11 "TAE:3033" 10
12 "TAE:3033" 11
13 "TAE:3033" 12
14 "TAE:3033" 13
15 "TAE:3033" 14
16 "TAE:3033" 15
17 "TAE:3033" 16
18 "TAE:3033" 17
19 "TAE:3033" 18
20 "TAE:3033" 19
21 "TAE:3033" 20
22 "TAE:3033" 21
23 "TAE:3033" 22
24 "TAE:3033" 23
25 "TAE:3033" 24
26 "TAE:3033" 25
27 "TAE:3033" 26
28 "TAE:3033" 27
29 "TAE:3033" 28
30 "TAE:3033" 29
31 "TAE:3033" 30
32 "TAE:3033" 31
33 "TAE:3033" 32
34 "TAE:3033" 33
35 "TAE:3033" 34
36 "TAE:3033" 35
37 "TAE:3033" 36
38 "TAE:3033" 37
39 "TAE:3033" 38
40 "TAE:3033" 39
41 "TAE:3033" 40
42 "TAE:3033" 41
43 "TAE:3033" 42
44 "TAE:3033" 43
45 "TAE:3033" 44
46 "TAE:3033" 45
47 "TAE:3033" 46
48 "TAE:3033" 47
49 "TAE:3033" 48
50 "TAE:3033" 49
51 "TAE:3033" 50
mixed_case_recommended_field WARNING 2475

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 2475 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.
"stops.txt" "stop_name" "CITE DES OISEAUX" 2
"stops.txt" "stop_name" "ECOLE CLAUDEL FERRY" 4
"stops.txt" "stop_name" "PLACE DE LA PAIX" 6
"stops.txt" "stop_name" "44 ROUTE DES ROCHES" 7
"stops.txt" "stop_name" "1180 ROUTE DES ROCHES" 8
"stops.txt" "stop_name" "PONT DE LA CHAPELLE" 9
"stops.txt" "stop_name" "CENTRE L HERMINIER" 10
"stops.txt" "stop_name" "VICTOR HUGO" 11
"stops.txt" "stop_name" "ESPACE CORTO MALTESE" 13
"stops.txt" "stop_name" "LA VILLETTE" 15
"stops.txt" "stop_name" "RIVE DE L OISON" 18
"stops.txt" "stop_name" "JULES VERNE" 19
"stops.txt" "stop_name" "ESPACE DES FOUDRIOTS" 20
"stops.txt" "stop_name" "MAIRIE ST AUBIN" 21
"stops.txt" "stop_name" "POINTE A JOJO" 25
"stops.txt" "stop_name" "DOC. PAIN" 26
"stops.txt" "stop_name" "EGLISE ST JEAN" 27
"stops.txt" "stop_name" "LA POSTE" 28
"stops.txt" "stop_name" "PONT PASTEUR" 29
"stops.txt" "stop_name" "CITE BLIN" 30
"stops.txt" "stop_name" "GARE DE ST AUBIN" 32
"stops.txt" "stop_name" "CHARLES MOUCHEL" 33
"stops.txt" "stop_name" "BOUT DU GARD" 35
"stops.txt" "stop_name" "LYCEE MAUROIS" 37
"stops.txt" "stop_name" "CHAMP DE FOIRE" 38
"stops.txt" "stop_name" "PARC ST CYR" 39
"stops.txt" "stop_name" "ST CYR" 40
"stops.txt" "stop_name" "FELIX FAURE" 43
"stops.txt" "stop_name" "MARIE SAMSON" 44
"stops.txt" "stop_name" "MAIRIE DE ST PIERRE" 45
"stops.txt" "stop_name" "VAL RENOUX" 46
"stops.txt" "stop_name" "LES DEVISES" 47
"stops.txt" "stop_name" "POLE MULTIMODAL DE OISSEL" 48
"stops.txt" "stop_name" "GUSTAVE PICARD" 49
"stops.txt" "stop_name" "LA RAQUETTE" 50
"stops.txt" "stop_name" "EDITH PIAF" 51
"stops.txt" "stop_name" "LE SAULE" 53
"stops.txt" "stop_name" "LE HAMEL" 55
"stops.txt" "stop_name" "JEAN LURCAT" 57
"stops.txt" "stop_name" "PETIT PRINCE" 58
"stops.txt" "stop_name" "SACHA GUITRY" 59
"stops.txt" "stop_name" "PLACE SAINT SEVER" 61
"stops.txt" "stop_name" "ROBERT LE DIABLE" 62
"stops.txt" "stop_name" "ROND POINT GUYNEMER" 63
"stops.txt" "stop_name" "JEAN MACE" 64
"stops.txt" "stop_name" "REPUBLIQUE QUAIS" 65
"stops.txt" "stop_name" "CHAMP DU BOIS" 66
"stops.txt" "stop_name" "CIMETIERE JEAN JAURES" 67
"stops.txt" "stop_name" "PLACE BEL AIR" 69
"stops.txt" "stop_name" "LE GRUCHET" 70
route_long_name_contains_short_name WARNING 1

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`.
"TCAR:60" 102 "Astuce Pro" "Astuce Pro"
route_short_name_too_long WARNING 6

route_short_name_too_long

Short name of a route is too long (more than 12 characters).

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`.
"TCAR:45" 94 "Filo'r Zone 2"
"TCAR:46" 95 "Filo'r Zone 2"
"TCAR:47" 96 "Filo'r Zone 3"
"TCAR:48" 97 "Filo'r Zone 3"
"TCAR:49" 98 "Filo'r Zone 4"
"TCAR:50" 99 "Filo'r Zone 5"