GTFS Schedule Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 7.1.0 at 2025-12-12T17:59:58Z,
for the dataset file:///shared/wiener-linien-original.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. shapes.txt
  6. stop_times.txt
  7. stops.txt
  8. trips.txt

Counts


  • Agencies: 2
  • Blocks: 776
  • Routes: 1138
  • Shapes: 7704
  • Stops: 4684
  • Trips: 562609

Specification Compliance report

4658 notices reported (1525 errors, 3133 warnings, 0 infos)

Notice Code Severity Total
decreasing_or_equal_stop_time_distance ERROR 1497

decreasing_or_equal_stop_time_distance

Decreasing or equal shape_dist_traveled in stop_times.txt.

When sorted by stop_times.stop_sequence, two consecutive entries in stop_times.txt should have increasing distance, based on the field shape_dist_traveled. If the values are equal, this is considered as an error.

You can see more about this notice here.

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

tripId (?) The id of the faulty trip. stopId (?) The id of the faulty stop. csvRowNumber (?) The row number from `stop_times.txt`. shapeDistTraveled (?) Actual distance traveled along the shape from the first shape point to the faulty record. stopSequence (?) The faulty record's `stop_times.stop_sequence`. prevCsvRowNumber (?) The row number from `stop_times.txt` of the previous stop time. prevShapeDistTraveled (?) Actual distance traveled along the shape from the first shape point to the previous stop time. prevStopSequence (?) The previous record's `stop_times.stop_sequence`.
"257.UX.22-D-j25-31.24.R" "at:49:195:0:6" 2376032 5800.68 18 2376031 5800.68 17
"257.UX.22-D-j25-31.24.R" "at:49:195:0:2" 2376033 5800.68 19 2376032 5800.68 18
"108.T2.22-5-j25-3.3.H" "at:49:1468:0:14" 149151 7372.62 23 149150 7372.62 22
"108.T2.22-5-j25-3.3.H" "at:49:1468:0:10" 149152 7372.62 24 149151 7372.62 23
"140.T8.22-5-j25-3.3.H" "at:49:1468:0:14" 686828 7372.62 23 686827 7372.62 22
"140.T8.22-5-j25-3.3.H" "at:49:1468:0:10" 686829 7372.62 24 686828 7372.62 23
"80.T8.22-5-j25-3.3.H" "at:49:1468:0:14" 3919022 7372.62 23 3919021 7372.62 22
"80.T8.22-5-j25-3.3.H" "at:49:1468:0:10" 3919023 7372.62 24 3919022 7372.62 23
"38.T3.22-5-j25-3.3.H" "at:49:1468:0:14" 3099233 7372.62 23 3099232 7372.62 22
"38.T3.22-5-j25-3.3.H" "at:49:1468:0:10" 3099234 7372.62 24 3099233 7372.62 23
"53.T3.22-5-j25-3.3.H" "at:49:1468:0:14" 3425066 7372.62 23 3425065 7372.62 22
"53.T3.22-5-j25-3.3.H" "at:49:1468:0:10" 3425067 7372.62 24 3425066 7372.62 23
"48.T2.22-5-j25-3.3.H" "at:49:1468:0:14" 3322633 7372.62 23 3322632 7372.62 22
"48.T2.22-5-j25-3.3.H" "at:49:1468:0:10" 3322634 7372.62 24 3322633 7372.62 23
"63.T2.22-5-j25-3.3.H" "at:49:1468:0:14" 3605668 7372.62 23 3605667 7372.62 22
"63.T2.22-5-j25-3.3.H" "at:49:1468:0:10" 3605669 7372.62 24 3605668 7372.62 23
"328.T0.22-2-j25-11.12.R" "at:49:657:0:16" 2901204 6676.0 20 2901203 6676.0 19
"34.T8.22-5-j25-3.3.H" "at:49:1468:0:14" 2968436 7372.62 23 2968435 7372.62 22
"34.T8.22-5-j25-3.3.H" "at:49:1468:0:10" 2968437 7372.62 24 2968436 7372.62 23
"261.UX.22-D-j25-31.24.R" "at:49:195:0:6" 2421358 5800.68 18 2421357 5800.68 17
"261.UX.22-D-j25-31.24.R" "at:49:195:0:2" 2421359 5800.68 19 2421358 5800.68 18
"24.T9.22-5-j25-3.3.H" "at:49:1468:0:14" 2211012 7372.62 23 2211011 7372.62 22
"24.T9.22-5-j25-3.3.H" "at:49:1468:0:10" 2211013 7372.62 24 2211012 7372.62 23
"70.T9.22-5-j25-3.3.H" "at:49:1468:0:14" 3746249 7372.62 23 3746248 7372.62 22
"70.T9.22-5-j25-3.3.H" "at:49:1468:0:10" 3746250 7372.62 24 3746249 7372.62 23
"6.T3.22-5-j25-2.7.H" "at:49:1468:0:14" 3543733 7372.62 23 3543732 7372.62 22
"6.T3.22-5-j25-2.7.H" "at:49:1468:0:10" 3543734 7372.62 24 3543733 7372.62 23
"43.T3.22-5-j25-2.7.H" "at:49:1468:0:14" 3230761 7372.62 23 3230760 7372.62 22
"43.T3.22-5-j25-2.7.H" "at:49:1468:0:10" 3230762 7372.62 24 3230761 7372.62 23
"115.T9.22-5-j25-3.3.H" "at:49:1468:0:14" 274931 7372.62 23 274930 7372.62 22
"115.T9.22-5-j25-3.3.H" "at:49:1468:0:10" 274932 7372.62 24 274931 7372.62 23
"125.T8.22-5-j25-3.3.H" "at:49:1468:0:14" 434319 7372.62 23 434318 7372.62 22
"125.T8.22-5-j25-3.3.H" "at:49:1468:0:10" 434320 7372.62 24 434319 7372.62 23
"86.T9.22-5-j25-3.3.H" "at:49:1468:0:14" 4016763 7372.62 23 4016762 7372.62 22
"86.T9.22-5-j25-3.3.H" "at:49:1468:0:10" 4016764 7372.62 24 4016763 7372.62 23
"96.T8.22-5-j25-3.3.H" "at:49:1468:0:14" 4186761 7372.62 23 4186760 7372.62 22
"96.T8.22-5-j25-3.3.H" "at:49:1468:0:10" 4186762 7372.62 24 4186761 7372.62 23
"221.T0.22-2-j25-11.12.R" "at:49:657:0:16" 1993997 6676.0 20 1993996 6676.0 19
"84.T3.22-5-j25-3.3.H" "at:49:1468:0:14" 3978868 7372.62 23 3978867 7372.62 22
"84.T3.22-5-j25-3.3.H" "at:49:1468:0:10" 3978869 7372.62 24 3978868 7372.62 23
"69.T3.22-5-j25-3.3.H" "at:49:1468:0:14" 3709960 7372.62 23 3709959 7372.62 22
"69.T3.22-5-j25-3.3.H" "at:49:1468:0:10" 3709961 7372.62 24 3709960 7372.62 23
"79.T2.22-5-j25-3.3.H" "at:49:1468:0:14" 3881194 7372.62 23 3881193 7372.62 22
"79.T2.22-5-j25-3.3.H" "at:49:1468:0:10" 3881195 7372.62 24 3881194 7372.62 23
"320.T0.22-2-j25-2.24.R" "at:49:994:0:3" 2869433 6451.84 19 2869432 6451.84 18
"320.T0.22-2-j25-2.24.R" "at:49:1072:0:2" 2869434 6451.84 20 2869433 6451.84 19
"59.T3.22-5-j25-2.7.H" "at:49:1468:0:14" 3527661 7372.62 23 3527660 7372.62 22
"59.T3.22-5-j25-2.7.H" "at:49:1468:0:10" 3527662 7372.62 24 3527661 7372.62 23
"234.T0.22-2-j25-11.12.R" "at:49:657:0:16" 2143773 6676.0 20 2143772 6676.0 19
"94.T2.22-5-j25-3.3.H" "at:49:1468:0:14" 4147627 7372.62 23 4147626 7372.62 22
equal_shape_distance_diff_coordinates ERROR 28

equal_shape_distance_diff_coordinates

Two consecutive points have equal shape_dist_traveled and different lat/lon coordinates in shapes.txt and the distance between the two points is greater than the 1.11m.

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 different coordinates indicate an error.

You can see more about this notice here.

shapeId (?) The id of the faulty shape. csvRowNumber (?) The row number from `shapes.txt`. shapeDistTraveled (?) The faulty record's `shape_dist_traveled` value. shapePtSequence (?) The faulty record's `shapes.shape_pt_sequence`. prevCsvRowNumber (?) The row number from `shapes.txt` of the previous shape point. prevShapeDistTraveled (?) The previous shape point's `shape_dist_traveled` value. prevShapePtSequence (?) The previous record's `shapes.shape_pt_sequence`. actualDistanceBetweenShapePoints (?) Actual distance traveled along the shape from the first shape point to the previous shape point.
"22-2-j25-2.24.R" 516551 6451.84 172 516550 6451.84 171 343.22778802061515
"24-N71-j25-3.10.H" 1410048 5556.98 191 1410047 5556.98 190 6.57251530132172
"21-U6-j25-31.4.H" 297025 9749.19 315 297024 9749.19 314 5.024066821555055
"21-U6-j25-31.4.H" 297036 10375.92 326 297035 10375.92 325 3.948410504445989
"21-U6-j25-31.4.H" 297051 10909.46 341 297050 10909.46 340 9.625287951194693
"21-U6-j25-9.14.H" 319640 5231.28 153 319639 5231.28 152 7.282238673421831
"21-U6-j25-9.14.H" 319654 6047.92 167 319653 6047.92 166 5.376742739017682
"25-N30-j25-92.1.H" 1426348 2742.62 78 1426347 2742.62 77 10.046493218317549
"24-N71-j25-3.4.H" 1411423 9549.43 300 1411422 9549.43 299 6.57251530132172
"21-U6-j25-24.7.H" 292011 9749.19 315 292010 9749.19 314 5.024066821555055
"21-U6-j25-24.7.H" 292022 10375.92 326 292021 10375.92 325 3.948410504445989
"21-U6-j25-24.7.H" 292037 10909.46 341 292036 10909.46 340 9.625287951194693
"21-U6-j25-9.16.H" 320622 5231.28 153 320621 5231.28 152 7.282238673421831
"21-U6-j25-9.16.H" 320636 6047.92 167 320635 6047.92 166 5.376742739017682
"22-1-j25-7.9.R" 432023 2548.08 101 432022 2548.08 100 362.00310485364525
"24-N71-j25-3.2.H" 1410653 5556.98 191 1410652 5556.98 190 6.57251530132172
"21-U6-j25-31.5.H" 297601 9749.19 315 297600 9749.19 314 5.024066821555055
"21-U6-j25-31.5.H" 297612 10375.92 326 297611 10375.92 325 3.948410504445989
"24-N71-j25-3.3.H" 1411038 9549.43 300 1411037 9549.43 299 6.57251530132172
"22-D-j25-31.26.R" 835105 5800.68 162 835104 5800.68 161 135.9132484700851
"21-U6-j25-10.2.H" 278440 902.72 9 278439 902.72 8 7.710149560897397
"24-N71-j25-2.4.H" 1408687 9885.32 306 1408686 9885.32 305 6.57251530132172
"24-N71-j25-2.5.H" 1408899 5556.98 191 1408898 5556.98 190 6.57251530132172
"24-N71-j25-2.2.H" 1407905 5556.98 191 1407904 5556.98 190 6.57251530132172
"25-N30-j25-2.1.H" 1424334 3602.13 91 1424333 3602.13 90 10.046493218317549
"24-N71-j25-2.3.H" 1408296 9885.32 306 1408295 9885.32 305 6.57251530132172
"22-D-j25-31.24.R" 834622 5800.68 162 834621 5800.68 161 135.9132484700851
"25-N84-j25-1.4.R" 1433034 786.35 55 1433033 786.35 54 18.350806564073004
duplicate_route_name WARNING 833

duplicate_route_name

Two distinct routes have either the same route_short_name, the same route_long_name, or the same combination of route_short_name and route_long_name.

All routes of the same route_type with the same agency_id should have unique combinations of route_short_name and route_long_name.

Note that there may be valid cases where routes have the same short and long name, e.g., if they serve different areas. However, different directions must be modeled as the same route.

Example of bad data:

route_id route_short_name route_long_name
route1 U1 Southern
route2 U1 Southern

You can see more about this notice here.

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

csvRowNumber1 (?) The row number of the first occurrence. routeId1 (?) The id of the the first occurrence. csvRowNumber2 (?) The row number of the other occurrence. routeId2 (?) The id of the the other occurrence. routeShortName (?) Common `routes.route_short_name`. routeLongName (?) Common `routes.route_long_name`. routeTypeValue (?) Common `routes.route_type`. agencyId (?) Common `routes.agency_id`.
4 "11-SEV-2-j25-2" 5 "11-SEV-3-j25-2" "SEV BB" "SEV am 11.5.2025" 3 "03"
9 "11-WLB-j25-2" 10 "11-WLB-j25-24" "BB" "Oper/Karlsplatz U - Aßmayergasse - Inzersdorf Lokalbahn - Landesklinikum - Bahnhof - Josefsplatz" 0 "03"
9 "11-WLB-j25-2" 12 "11-WLB-j25-31" "BB" "Oper/Karlsplatz U - Aßmayergasse - Inzersdorf Lokalbahn - Landesklinikum - Bahnhof - Josefsplatz" 0 "03"
9 "11-WLB-j25-2" 14 "11-WLB-j25-6" "BB" "Oper/Karlsplatz U - Aßmayergasse - Inzersdorf Lokalbahn - Landesklinikum - Bahnhof - Josefsplatz" 0 "03"
8 "11-WLB-j25-11" 19 "11-WLB-j26-3" "BB" "Oper/Karlsplatz U - Aßmayergasse - Inzersdorf Lokalbahn - Baden Landesklinikum - Baden Josefsplatz" 0 "03"
8 "11-WLB-j25-11" 20 "11-WLB-j26-4" "BB" "Oper/Karlsplatz U - Aßmayergasse - Inzersdorf Lokalbahn - Baden Landesklinikum - Baden Josefsplatz" 0 "03"
21 "21-U1-j25-1" 22 "21-U1-j25-10" "U1" "Oberlaa - Leopoldau" 1 "04"
21 "21-U1-j25-1" 23 "21-U1-j25-2" "U1" "Oberlaa - Leopoldau" 1 "04"
21 "21-U1-j25-1" 24 "21-U1-j25-24" "U1" "Oberlaa - Leopoldau" 1 "04"
21 "21-U1-j25-1" 26 "21-U1-j25-31" "U1" "Oberlaa - Leopoldau" 1 "04"
25 "21-U1-j25-3" 27 "21-U1-j25-4" "U1" "Oberlaa - Leopoldau Baustellenfahrplan" 1 "04"
21 "21-U1-j25-1" 28 "21-U1-j25-5" "U1" "Oberlaa - Leopoldau" 1 "04"
21 "21-U1-j25-1" 29 "21-U1-j25-7" "U1" "Oberlaa - Leopoldau" 1 "04"
21 "21-U1-j25-1" 30 "21-U1-j25-8" "U1" "Oberlaa - Leopoldau" 1 "04"
21 "21-U1-j25-1" 31 "21-U1-j25-9" "U1" "Oberlaa - Leopoldau" 1 "04"
21 "21-U1-j25-1" 32 "21-U1-j26-1" "U1" "Oberlaa - Leopoldau" 1 "04"
21 "21-U1-j25-1" 33 "21-U1-j26-2" "U1" "Oberlaa - Leopoldau" 1 "04"
34 "21-U2-j25-2" 35 "21-U2-j25-24" "U2" "Seestadt - Schottentor" 1 "04"
34 "21-U2-j25-2" 36 "21-U2-j25-3" "U2" "Seestadt - Schottentor" 1 "04"
34 "21-U2-j25-2" 37 "21-U2-j25-31" "U2" "Seestadt - Schottentor" 1 "04"
34 "21-U2-j25-2" 38 "21-U2-j25-4" "U2" "Seestadt - Schottentor" 1 "04"
34 "21-U2-j25-2" 39 "21-U2-j25-5" "U2" "Seestadt - Schottentor" 1 "04"
34 "21-U2-j25-2" 40 "21-U2-j25-90" "U2" "Seestadt - Schottentor" 1 "04"
34 "21-U2-j25-2" 41 "21-U2-j26-1" "U2" "Seestadt - Schottentor" 1 "04"
34 "21-U2-j25-2" 42 "21-U2-j26-2" "U2" "Seestadt - Schottentor" 1 "04"
43 "21-U3-j25-1" 44 "21-U3-j25-2" "U3" "Ottakring - Simmering" 1 "04"
43 "21-U3-j25-1" 45 "21-U3-j25-24" "U3" "Ottakring - Simmering" 1 "04"
43 "21-U3-j25-1" 46 "21-U3-j25-25" "U3" "Ottakring - Simmering" 1 "04"
43 "21-U3-j25-1" 47 "21-U3-j25-3" "U3" "Ottakring - Simmering" 1 "04"
43 "21-U3-j25-1" 48 "21-U3-j25-4" "U3" "Ottakring - Simmering" 1 "04"
43 "21-U3-j25-1" 49 "21-U3-j25-5" "U3" "Ottakring - Simmering" 1 "04"
43 "21-U3-j25-1" 50 "21-U3-j25-6" "U3" "Ottakring - Simmering" 1 "04"
43 "21-U3-j25-1" 51 "21-U3-j26-1" "U3" "Ottakring - Simmering" 1 "04"
43 "21-U3-j25-1" 52 "21-U3-j26-2" "U3" "Ottakring - Simmering" 1 "04"
53 "21-U4-j25-1" 54 "21-U4-j25-10" "U4" "Hütteldorf - Heiligenstadt" 1 "04"
53 "21-U4-j25-1" 55 "21-U4-j25-2" "U4" "Hütteldorf - Heiligenstadt" 1 "04"
53 "21-U4-j25-1" 56 "21-U4-j25-24" "U4" "Hütteldorf - Heiligenstadt" 1 "04"
53 "21-U4-j25-1" 57 "21-U4-j25-3" "U4" "Hütteldorf - Heiligenstadt" 1 "04"
53 "21-U4-j25-1" 58 "21-U4-j25-31" "U4" "Hütteldorf - Heiligenstadt" 1 "04"
53 "21-U4-j25-1" 59 "21-U4-j25-4" "U4" "Hütteldorf - Heiligenstadt" 1 "04"
53 "21-U4-j25-1" 60 "21-U4-j25-5" "U4" "Hütteldorf - Heiligenstadt" 1 "04"
53 "21-U4-j25-1" 61 "21-U4-j25-6" "U4" "Hütteldorf - Heiligenstadt" 1 "04"
53 "21-U4-j25-1" 62 "21-U4-j25-7" "U4" "Hütteldorf - Heiligenstadt" 1 "04"
53 "21-U4-j25-1" 63 "21-U4-j25-8" "U4" "Hütteldorf - Heiligenstadt" 1 "04"
53 "21-U4-j25-1" 64 "21-U4-j25-9" "U4" "Hütteldorf - Heiligenstadt" 1 "04"
53 "21-U4-j25-1" 65 "21-U4-j25-90" "U4" "Hütteldorf - Heiligenstadt" 1 "04"
53 "21-U4-j25-1" 66 "21-U4-j25-91" "U4" "Hütteldorf - Heiligenstadt" 1 "04"
53 "21-U4-j25-1" 67 "21-U4-j25-92" "U4" "Hütteldorf - Heiligenstadt" 1 "04"
53 "21-U4-j25-1" 68 "21-U4-j26-1" "U4" "Hütteldorf - Heiligenstadt" 1 "04"
53 "21-U4-j25-1" 69 "21-U4-j26-2" "U4" "Hütteldorf - Heiligenstadt" 1 "04"
equal_shape_distance_diff_coordinates_distance_below_threshold WARNING 696

equal_shape_distance_diff_coordinates_distance_below_threshold

Two consecutive points have equal shape_dist_traveled and different lat/lon coordinates in shapes.txt and the distance between the two points is greater than 0 but less than 1.11m.

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 small difference of coordinates (greater than 0 but less than 1.11 m distance) result in a warning.

You can see more about this notice here.

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

shapeId (?) The id of the faulty shape. csvRowNumber (?) The row number from `shapes.txt`. shapeDistTraveled (?) The faulty record's `shape_dist_traveled` value. shapePtSequence (?) The faulty record's `shapes.shape_pt_sequence`. prevCsvRowNumber (?) The row number from `shapes.txt` of the previous shape point. prevShapeDistTraveled (?) The previous shape point's `shape_dist_traveled` value. prevShapePtSequence (?) The previous record's `shapes.shape_pt_sequence`. actualDistanceBetweenShapePoints (?) Actual distance traveled along the shape from the first shape point to the previous shape point.
"22-71-j25-10.10.H" 732518 308.62 13 732517 308.62 12 0.0013365402266944605
"22-31-j25-5.8.H" 566204 219.71 10 566203 219.71 9 0.0011119511293433693
"23-67B-j25-24.8.R" 1205444 2906.82 63 1205443 2906.82 62 7.419612866090186E-4
"22-71-j25-5.31.R" 753696 1677.27 79 753695 1677.27 78 0.0011119511293433693
"23-97A-j25-1.13.H" 1313434 2585.85 49 1313433 2585.85 48 7.405918035805845E-4
"23-97A-j25-1.13.H" 1313471 4118.95 86 1313470 4118.95 85 0.0011119511293433693
"23-97A-j25-1.13.H" 1313550 5931.09 165 1313549 5931.09 164 0.0011119511293433693
"23-76B-j25-2.4.H" 1232532 1090.39 35 1232531 1090.39 34 7.414527495176355E-4
"23-11A-j25-2.4.R" 912414 6146.51 108 912413 6146.51 107 0.0011119511293433693
"24-N26-j25-1.3.H" 1346398 1778.11 30 1346397 1778.11 29 0.0011119511293433693
"24-N26-j25-1.3.H" 1346455 4082.84 87 1346454 4082.84 86 0.0013361447033935693
"24-N26-j25-1.3.H" 1346481 4610.16 113 1346480 4610.16 112 0.001336160167965805
"21-U1-j25-5.5.R" 178140 3469.64 110 178139 3469.64 109 7.404214608473687E-4
"21-U1-j25-5.5.R" 178189 5443.49 159 178188 5443.49 158 0.0011119511293433693
"22-2-j25-2.24.R" 516519 4630.19 140 516518 4630.19 139 0.001336206075056667
"22-37-j25-1.2.H" 588386 403.22 31 588385 403.22 30 0.0011119511293433693
"23-89A-j25-1.5.H" 1276245 1317.09 73 1276244 1317.09 72 7.407018551474551E-4
"23-76B-j25-24.4.H" 1233954 1090.39 35 1233953 1090.39 34 7.414527495176355E-4
"22-2-j25-5.10.R" 527222 301.18 9 527221 301.18 8 7.406276067798506E-4
"22-1-j25-11.10.R" 403417 5622.06 150 403416 5622.06 149 0.0011119511293433693
"23-95A-j25-90.20.R" 1306381 1292.0 22 1306380 1292.0 21 0.0011119511293433693
"23-95A-j25-90.20.R" 1306488 4004.93 129 1306487 4004.93 128 0.0011119511293433693
"23-95A-j25-90.20.R" 1306502 4474.86 143 1306501 4474.86 142 0.0013360374790738032
"22-2-j25-3.8.H" 522110 3438.59 80 522109 3438.59 79 7.40990262766488E-4
"23-97A-j25-24.1.H" 1315711 1121.59 43 1315710 1121.59 42 0.0011119511293433693
"23-97A-j25-24.1.H" 1315739 2517.02 71 1315738 2517.02 70 0.0011119511293433693
"23-54B-j25-1.4.R" 1130383 147.0 7 1130382 147.0 6 0.0013364718302346552
"24-N49-j25-3.16.R" 1368958 7624.37 225 1368957 7624.37 224 0.0011119511293433693
"23-85A-j25-1.2.H" 1266785 1574.2 39 1266784 1574.2 38 0.0011119511293433693
"24-N71-j25-3.8.R" 1412240 8787.42 126 1412239 8787.42 125 0.0011119511293433693
"24-N71-j25-3.8.R" 1412282 10458.37 168 1412281 10458.37 167 0.0011119511293433693
"24-N71-j25-3.8.R" 1412311 11848.68 197 1412310 11848.68 196 0.0011119511293433693
"23-71E-j25-2.3.H" 1217674 314.72 13 1217673 314.72 12 0.0011119511293433693
"23-71E-j25-2.3.H" 1217822 4402.11 161 1217821 4402.11 160 0.00111195042201917
"23-71E-j25-2.3.H" 1217827 4579.55 166 1217826 4579.55 165 0.0011119511293433693
"22-52-j25-2.24.H" 648783 2114.25 97 648782 2114.25 96 0.0011119511293433693
"22-52-j25-2.24.H" 648812 2832.96 126 648811 2832.96 125 0.0011119511293433693
"23-20A-j25-1.12.R" 973391 1314.36 56 973390 1314.36 55 7.405057290857997E-4
"23-20A-j25-1.12.R" 973408 1874.76 73 973407 1874.76 72 0.0011119511293433693
"23-99A-j25-31.1.H" 1322220 1884.42 67 1322219 1884.42 66 0.0011119511293433693
"22-18-j25-3.18.R" 388852 199.78 15 388851 199.78 14 0.0011119511293433693
"23-16A-j25-31.2.H" 950660 1631.61 39 950659 1631.61 38 0.0013366257239476745
"22-37-j25-1.1.H" 588272 403.22 31 588271 403.22 30 0.0011119511293433693
"23-76B-j25-24.3.H" 1233682 1090.39 35 1233681 1090.39 34 7.414527495176355E-4
"22-1-j25-3.12.H" 412570 4475.29 160 412569 4475.29 159 0.0011119511293433693
"22-1-j25-10.15.H" 402424 4353.38 151 402423 4353.38 150 0.0011119511293433693
"23-97A-j25-1.12.H" 1313370 2585.85 49 1313369 2585.85 48 7.405918035805845E-4
"24-N26-j25-1.4.R" 1346639 4729.91 83 1346638 4729.91 82 0.001336160167965805
"23-54B-j25-24.3.H" 1131159 4555.38 164 1131158 4555.38 163 0.0013364824183767483
"22-31-j25-5.9.H" 566423 219.71 10 566422 219.71 9 0.0011119511293433693
equal_shape_distance_same_coordinates WARNING 617

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 617 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`.
"23-11B-j25-4.1.H" 920755 258.82 6 920754 258.82 5
"23-46A-j25-1.3.R" 1097772 3232.82 134 1097771 3232.82 133
"23-27A-j25-31.3.H" 1008865 835.42 18 1008864 835.42 17
"23-27A-j25-31.3.H" 1008881 1469.99 34 1008880 1469.99 33
"22-1-j25-6.12.H" 426017 9548.74 293 426016 9548.74 292
"23-35A-j25-90.9.R" 1049128 4946.78 132 1049127 4946.78 131
"23-67B-j25-24.8.R" 1205451 3588.89 70 1205450 3588.89 69
"23-97A-j25-1.13.H" 1313457 3193.6 72 1313456 3193.6 71
"23-76B-j25-2.4.H" 1232504 244.57 7 1232503 244.57 6
"23-11A-j25-2.4.R" 912384 4376.07 78 912383 4376.07 77
"24-N26-j25-1.3.H" 1346375 257.46 7 1346374 257.46 6
"24-N26-j25-1.3.H" 1346490 5782.45 122 1346489 5782.45 121
"22-2-j25-2.24.R" 516496 4231.77 117 516495 4231.77 116
"23-89A-j25-1.5.H" 1276205 577.73 33 1276204 577.73 32
"23-76B-j25-24.4.H" 1233926 244.57 7 1233925 244.57 6
"23-76B-j25-24.4.H" 1234192 8944.15 273 1234191 8944.15 272
"23-76B-j25-24.4.H" 1234195 9388.0 276 1234194 9388.0 275
"23-95A-j25-90.20.R" 1306442 2417.72 83 1306441 2417.72 82
"23-97A-j25-24.1.H" 1315725 1772.01 57 1315724 1772.01 56
"23-97A-j25-24.1.H" 1315847 5071.18 179 1315846 5071.18 178
"22-6-j25-5.13.R" 723601 3019.56 71 723600 3019.56 70
"21-U4-j25-91.5.R" 263119 4707.26 184 263118 4707.26 183
"21-U4-j25-91.5.R" 263201 6220.16 266 263200 6220.16 265
"23-35A-j25-90.16.R" 1046050 4946.78 132 1046049 4946.78 131
"23-54A-j25-31.7.R" 1129678 336.49 9 1129677 336.49 8
"23-99A-j25-31.1.H" 1322172 515.37 19 1322171 515.37 18
"23-11A-j25-7.7.H" 914813 1828.9 24 914812 1828.9 23
"22-18-j25-3.18.R" 388908 3632.55 71 388907 3632.55 70
"23-16A-j25-31.2.H" 950679 2835.92 58 950678 2835.92 57
"23-76B-j25-24.3.H" 1233654 244.57 7 1233653 244.57 6
"23-27A-j25-31.2.H" 1008621 835.42 18 1008620 835.42 17
"23-27A-j25-31.2.H" 1008637 1469.99 34 1008636 1469.99 33
"22-1-j25-3.12.H" 412538 3743.67 128 412537 3743.67 127
"22-1-j25-10.15.H" 402382 3592.44 109 402381 3592.44 108
"24-N26-j25-1.4.R" 1346632 3858.07 76 1346631 3858.07 75
"23-54B-j25-24.3.H" 1131118 3550.73 123 1131117 3550.73 122
"23-54B-j25-24.3.H" 1131145 4228.5 150 1131144 4228.5 149
"23-10A-j25-90.10.R" 906713 1619.98 52 906712 1619.98 51
"23-76B-j25-2.3.H" 1232232 244.57 7 1232231 244.57 6
"22-1-j25-4.21.H" 419630 3743.67 128 419629 3743.67 127
"23-29B-j25-3.7.R" 1017302 6555.32 143 1017301 6555.32 142
"23-29B-j25-6.5.R" 1018683 6555.32 143 1018682 6555.32 142
"22-1-j25-7.6.H" 431265 637.44 37 431264 637.44 36
"23-54B-j25-1.3.H" 1130319 3550.73 123 1130318 3550.73 122
"23-54B-j25-1.3.H" 1130346 4228.5 150 1130345 4228.5 149
"22-6-j25-3.20.R" 721886 3019.56 71 721885 3019.56 70
"23-35A-j25-90.15.R" 1045886 4946.78 132 1045885 4946.78 131
"23-11A-j25-2.6.H" 912514 1822.36 30 912513 1822.36 29
"24-N65-j25-1.13.R" 1384891 6671.95 172 1384890 6671.95 171
"21-U4-j25-91.6.R" 263725 4707.26 184 263724 4707.26 183
expired_calendar WARNING 960

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 960 affected records are displayed below.

csvRowNumber (?) The row of the faulty record. serviceId (?) The service id of the faulty record.
2 "T0"
3 "T0#1"
4 "T0#10"
7 "T0#102"
9 "T0#104"
10 "T0#105"
11 "T0#106"
12 "T0#107"
15 "T0#11"
16 "T0#110"
18 "T0#112"
19 "T0#113"
21 "T0#115"
23 "T0#117"
25 "T0#119"
26 "T0#12"
28 "T0#121"
30 "T0#123"
31 "T0#124"
36 "T0#129"
37 "T0#13"
38 "T0#130"
39 "T0#131"
40 "T0#132"
41 "T0#133"
43 "T0#135"
44 "T0#136"
46 "T0#138"
47 "T0#139"
48 "T0#14"
49 "T0#140"
54 "T0#16"
56 "T0#18"
57 "T0#19"
58 "T0#2"
59 "T0#20"
60 "T0#21"
61 "T0#22"
62 "T0#23"
67 "T0#28"
68 "T0#29"
69 "T0#3"
70 "T0#30"
75 "T0#35"
76 "T0#36"
77 "T0#37"
79 "T0#39"
80 "T0#4"
81 "T0#40"
84 "T0#43"
leading_or_trailing_whitespaces WARNING 1

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.

filename (?) The name of the faulty file. csvRowNumber (?) The row of the faulty record. fieldName (?) Faulty record's field name. fieldValue (?) Faulty value.
"routes.txt" 5 "route_short_name" "SEV BB "
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 6

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.
"routes.txt" "route_short_name" "SEV BB" 2
"routes.txt" "route_short_name" "SEV BB" 3
"routes.txt" "route_short_name" "SEV BB" 4
"routes.txt" "route_long_name" "SEV am 11.5.2025" 4
"routes.txt" "route_short_name" "SEV BB" 5
"routes.txt" "route_long_name" "SEV am 11.5.2025" 5
route_long_name_contains_short_name WARNING 3

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`.
"23-19A-j25-24" 484 "19A" "19A"
"23-19A-j25-31" 485 "19A" "19A"
"25-49B-j26-1" 1094 "49B" "49B"
stop_too_far_from_shape WARNING 11

stop_too_far_from_shape

Stop too far from trip shape.

Per GTFS Best Practices, route alignments (in shapes.txt) should be within 100 meters of stop locations which a trip serves. This potentially indicates a problem with the location of the stop or the path of the shape.

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.
228506 "22-5-j25-2.7.H" "100.T3.22-5-j25-2.7.H" 30997 "at:49:1468:0:14" "Westbahnhof" [48.19897582,16.34103989] 269.50837300500183
228506 "22-5-j25-2.7.H" "100.T3.22-5-j25-2.7.H" 30998 "at:49:1468:0:10" "Westbahnhof" [48.19897582,16.34103989] 275.43533435320944
228913 "22-5-j25-3.1.H" "1.T2.22-5-j25-3.1.H" 2090 "at:49:1468:0:14" "Westbahnhof" [48.19897582,16.34103989] 269.50837300500183
228913 "22-5-j25-3.1.H" "1.T2.22-5-j25-3.1.H" 2091 "at:49:1468:0:10" "Westbahnhof" [48.19897582,16.34103989] 275.43533435320944
228916 "22-5-j25-3.3.H" "10.T2.22-5-j25-3.3.H" 13520 "at:49:1468:0:14" "Westbahnhof" [48.19897582,16.34103989] 269.50837300500183
228916 "22-5-j25-3.3.H" "10.T2.22-5-j25-3.3.H" 13521 "at:49:1468:0:10" "Westbahnhof" [48.19897582,16.34103989] 275.43533435320944
228549 "22-5-j25-2.9.H" "14.T3.22-5-j25-2.9.H" 668339 "at:49:1468:0:14" "Westbahnhof" [48.19897582,16.34103989] 269.50837300500183
228549 "22-5-j25-2.9.H" "14.T3.22-5-j25-2.9.H" 668340 "at:49:1468:0:10" "Westbahnhof" [48.19897582,16.34103989] 275.43533435320944
151091 "22-2-j25-11.12.R" "221.T0.22-2-j25-11.12.R" 1993997 "at:49:657:0:16" "Karlsplatz" [48.2005978,16.36958701] 157.24018282392908
228504 "22-5-j25-2.5.H" "1.T3.22-5-j25-2.5.H" 4768 "at:49:1468:0:14" "Westbahnhof" [48.19897582,16.34103989] 269.50837300500183
228504 "22-5-j25-2.5.H" "1.T3.22-5-j25-2.5.H" 4769 "at:49:1468:0:10" "Westbahnhof" [48.19897582,16.34103989] 275.43533435320944
stop_too_far_from_shape_using_user_distance WARNING 5

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.
151553 "22-2-j25-2.24.R" "309.T0.22-2-j25-2.24.R" 2788233 "at:49:994:0:2" "Parlament" [48.20923480999999,16.355512200000003] 340.9209989005213
151553 "22-2-j25-2.24.R" "309.T0.22-2-j25-2.24.R" 2788234 "at:49:994:0:3" "Parlament" [48.20923480999999,16.355512200000003] 356.6791716429406
130898 "22-1-j25-7.9.R" "111.T3.22-1-j25-7.9.R" 209026 "at:49:1169:0:2" "Schlickgasse" [48.21560349,16.36621805] 362.1992728133989
276706 "22-D-j25-31.26.R" "270.UX.22-D-j25-31.26.R" 2501952 "at:49:195:0:9" "Börse" [48.21560349,16.36621805] 138.88405074926365
276632 "22-D-j25-31.24.R" "203.UX.22-D-j25-31.24.R" 1739495 "at:49:195:0:9" "Börse" [48.21560349,16.36621805] 138.88405074926365