GTFS Schedule Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 7.1.0 at 2025-12-13T00:26:46Z,
for the dataset file:///shared/transilien-sncf.zip. No country code was provided.

Use this report alongside our documentation.

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. stop_times.txt
  6. stops.txt
  7. transfers.txt
  8. trips.txt

Counts


  • Agencies: 11
  • Blocks: 0
  • Routes: 28
  • Shapes: 0
  • Stops: 981
  • Trips: 27675

Specification Compliance report

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

Notice Code Severity Total
expired_calendar WARNING 1065

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.

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

csvRowNumber (?) The row of the faulty record. serviceId (?) The service id of the faulty record.
2 "104"
3 "106"
4 "125"
5 "126"
6 "162"
7 "164"
8 "165"
9 "166"
10 "168"
11 "171"
12 "172"
13 "176"
14 "179"
15 "180"
16 "182"
17 "183"
18 "184"
19 "185"
20 "186"
21 "191"
22 "192"
23 "193"
24 "194"
25 "195"
26 "197"
27 "198"
28 "199"
29 "200"
30 "201"
31 "203"
32 "206"
33 "209"
34 "212"
35 "214"
36 "215"
37 "226"
38 "228"
39 "230"
40 "231"
41 "232"
42 "238"
43 "239"
44 "240"
45 "241"
46 "242"
47 "243"
48 "244"
49 "247"
50 "248"
51 "250"
fast_travel_between_consecutive_stops WARNING 2

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.
27551 "DUASN344787R01001-1_75704" "DUA800851581" 223.52663719377014 40.979883485524525 345084 4 "StopPoint:DUA8768200" "MELUN" "07:10:00" 345085 5 "StopPoint:DUA8768600" "PARIS GARE DE LYON" "07:20:00"
27552 "DUASN355893R01001-1_75705" "DUA800851581" 223.52663719377014 40.979883485524525 345090 4 "StopPoint:DUA8768200" "MELUN" "07:10:00" 345091 5 "StopPoint:DUA8768600" "PARIS GARE DE LYON" "07:20:00"
fast_travel_between_far_stops WARNING 2

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.
27551 "DUASN344787R01001-1_75704" "DUA800851581" 223.52663719377014 40.979883485524525 345084 4 "StopPoint:DUA8768200" "MELUN" "07:10:00" 345085 5 "StopPoint:DUA8768600" "PARIS GARE DE LYON" "07:20:00"
27552 "DUASN355893R01001-1_75705" "DUA800851581" 223.52663719377014 40.979883485524525 345090 4 "StopPoint:DUA8768200" "MELUN" "07:10:00" 345091 5 "StopPoint:DUA8768600" "PARIS GARE DE LYON" "07:20:00"
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 676

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 676 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" "ERMONT EAUBONNE" 2
"stops.txt" "stop_name" "ERMONT HALTE" 3
"stops.txt" "stop_name" "GROS NOYER SAINT-PRIX" 4
"stops.txt" "stop_name" "SAINT-LEU LA FORET" 5
"stops.txt" "stop_name" "GARE DE MERY SUR OISE" 10
"stops.txt" "stop_name" "GARE DE L'ISLE ADAM PARMAIN" 13
"stops.txt" "stop_name" "CHAMPAGNE SUR OISE" 14
"stops.txt" "stop_name" "PERSAN BEAUMONT" 15
"stops.txt" "stop_name" "FRANCONVILLE LE PLESSIS BOUCHARD" 17
"stops.txt" "stop_name" "MONTIGNY BEAUCHAMP" 18
"stops.txt" "stop_name" "GARE DE ST OUEN L'AUMONE LIESSE" 20
"stops.txt" "stop_name" "GARE DE ST OUEN L'AUMONE" 21
"stops.txt" "stop_name" "GARE DE PARIS NORD" 23
"stops.txt" "stop_name" "SAINT-DENIS" 24
"stops.txt" "stop_name" "EPINAY VILLETANEUSE" 25
"stops.txt" "stop_name" "LA BARRE ORMESSON" 26
"stops.txt" "stop_name" "ENGHIEN LES BAINS" 27
"stops.txt" "stop_name" "GARE DE CHAMP DE COURSES D'ENGHIEN" 28
"stops.txt" "stop_name" "DEUIL MONTMAGNY" 29
"stops.txt" "stop_name" "SARCELLES SAINT-BRICE" 31
"stops.txt" "stop_name" "ECOUEN EZANVILLE" 32
"stops.txt" "stop_name" "BOUFFEMONT MOISSELLES" 34
"stops.txt" "stop_name" "MONTSOULT MAFFLIERS" 35
"stops.txt" "stop_name" "BELLOY SAINT-MARTIN" 37
"stops.txt" "stop_name" "PRESLES COURCELLES" 41
"stops.txt" "stop_name" "NOINTEL MOURS" 42
"stops.txt" "stop_name" "AUVERS SUR OISE" 43
"stops.txt" "stop_name" "BRUYERES SUR OISE" 44
"stops.txt" "stop_name" "BORAN SUR OISE" 45
"stops.txt" "stop_name" "PRECY SUR OISE" 46
"stops.txt" "stop_name" "SAINT-LEU D'ESSERENT" 47
"stops.txt" "stop_name" "PONT PETIT" 50
"stops.txt" "stop_name" "ROSNY BOIS PERRIER" 53
"stops.txt" "stop_name" "ROSNY SOUS BOIS" 54
"stops.txt" "stop_name" "VAL DE FONTENAY" 55
"stops.txt" "stop_name" "NOGENT LE PERREUX" 56
"stops.txt" "stop_name" "LES BOULLEREAUX CHAMPIGNY" 57
"stops.txt" "stop_name" "VILLIERS SUR MARNE PLESSIS TREVISE" 58
"stops.txt" "stop_name" "LES YVRIS NOISY LE GRAND" 59
"stops.txt" "stop_name" "EMERAINVILLE PONTAULT COMBAULT" 60
"stops.txt" "stop_name" "ROISSY EN BRIE" 61
"stops.txt" "stop_name" "OZOIR LA FERRIERE" 62
"stops.txt" "stop_name" "GRETZ ARMAINVILLIERS" 63
"stops.txt" "stop_name" "LE RAINCY VILLEMOMBLE MONTFERMEIL" 65
"stops.txt" "stop_name" "LE CHENAY GAGNY" 67
"stops.txt" "stop_name" "CHELLES GOURNAY" 68
"stops.txt" "stop_name" "NOISY LE SEC" 69
"stops.txt" "stop_name" "GARE DE ROSA PARKS" 71
"stops.txt" "stop_name" "GARE DE PARIS EST" 72
"stops.txt" "stop_name" "STADE DE FRANCE SAINT-DENIS" 73
route_color_contrast WARNING 5

route_color_contrast

Insufficient route color contrast.

A route's color and route_text_color should be contrasting.

You can see more about this notice here.

routeId (?) The id of the faulty record. csvRowNumber (?) The row number of the faulty record. routeColor (?) The faulty record's HTML route color. routeTextColor (?) The faulty record's HTML route text color.
"DUA800803571" 9 "#FCD946" "#FFFFFF"
"DUA800850509" 11 "#FFBF00" "#FFFFFF"
"DUA800850009" 15 "#FFBF00" "#FFFFFF"
"DUA800851081" 16 "#E59FDB" "#FFFFFF"
"DUA800851581" 28 "#E4B4D1" "#FFFFFF"
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`.
"DUA800850012" 23 "T11" "T11"
trip_coverage_not_active_for_next7_days WARNING 1

trip_coverage_not_active_for_next7_days

Trips data should be valid for at least the next seven days.

This notice is triggered if the date range where a significant number of trips are running ends in less than 7 days.

You can see more about this notice here.

currentDate (?) Current date (YYYYMMDD format). serviceWindowStartDate (?) The start date of the majority service window. serviceWindowEndDate (?) The end date of the majority service window.
"20251213" "20190901" "20191104"
unusable_trip WARNING 8

unusable_trip

Trips must have more than one stop to be usable.

A trip must visit more than one stop in stop_times.txt to be usable by passengers for boarding and alighting.

You can see more about this notice here.

csvRowNumber (?) The row number of the faulty record. tripId (?) The faulty record's id.
12454 "DUASN116782F01001-1_141979"
12455 "DUASN116782F01002-1_141980"
12457 "DUASN116782F01004-1_141982"
12458 "DUASN116782F01005-1_141983"
12633 "DUASN116782F02001-1_142158"
16268 "DUASN135888F01002-1_138467"
16269 "DUASN135888F01003-1_138468"
16271 "DUASN135888F01005-1_138470"