GTFS Schedule Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 8.0.1 at 2026-10-01T07:20:15+02:00,
for the dataset file:///home/gtfs/gtfs-processor/data/be-stib-gtfs.zip, with the country code: BE.

Use this report alongside our documentation.

Summary

Agencies included


Feed Info


Publisher Name:
STIB
Feed Email:
data@stib-mivb.brussels
Feed Language:
French
Feed Start Date:
2026-09-28
Feed End Date:
2026-10-25

Files included


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

Counts


  • Agencies: 1
  • Blocks: 5797
  • Routes: 89
  • Shapes: 684
  • Stops: 2762
  • Trips: 97977

Specification Compliance report

62775 notices reported (0 errors, 51260 warnings, 11515 infos)

Notice Code Severity Total
equal_shape_distance_diff_coordinates_distance_below_threshold WARNING 1966

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 1966 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.
"048b0070" 133697 0.362 20005 133696 0.362 20004 0.7239582633104198
"048b0070" 133910 4.436 140003 133909 4.436 140002 0.6996484020548401
"065b0079" 172105 0.049 10008 172104 0.049 10007 0.5373388711704938
"065b0079" 172110 0.057 10013 172109 0.057 10012 0.5734333541843134
"065b0079" 172134 0.358 20005 172133 0.358 20004 0.5394401856249252
"065b0079" 172147 0.578 20018 172146 0.578 20017 0.6975365020068575
"065b0078" 171427 0.049 10008 171426 0.049 10007 0.5373388711704938
"065b0078" 171432 0.057 10013 171431 0.057 10012 0.5734333541843134
"065b0078" 171456 0.358 20005 171455 0.358 20004 0.5394401856249252
"065b0078" 171469 0.578 20018 171468 0.578 20017 0.6975365020068575
"065b0078" 171936 9.81 260001 171935 9.81 250031 0.7898788339877624
"065b0078" 172015 11.582 290002 172014 11.582 290001 0.2379325276897992
"065b0078" 172094 13.62 330040 172093 13.62 330039 0.932717386746405
"065b0075" 171100 5.609 170004 171099 5.609 170003 0.8415898883685526
"065b0075" 171128 6.088 180012 171127 6.088 180011 0.7815253770672074
"065b0077" 171258 1.707 40001 171257 1.707 30031 0.7898788339877624
"001m0069" 1349 0.709 20002 1348 0.709 20001 0.5617735087291177
"048b0076" 134471 0.362 20005 134470 0.362 20004 0.7239582633104198
"048b0076" 134684 4.436 140003 134683 4.436 140002 0.6996484020548401
"008t0257" 60464 1.65 40001 60463 1.65 30039 0.5375310902486181
"008t0257" 60900 9.39 220002 60899 9.39 220001 0.11119510090982554
"008t0258" 61035 0.132 10008 61034 0.132 10007 0.21061973016581606
"008t0258" 61039 0.152 10012 61038 0.152 10011 0.23320885633800187
"008t0258" 61043 0.188 10016 61042 0.188 10015 0.23320891137388824
"008t0258" 61048 0.213 10021 61047 0.213 10020 0.28082828742965066
"008t0258" 61052 0.235 10025 61051 0.235 10024 0.11119510090982554
"008t0258" 61055 0.274 10028 61054 0.274 10027 0.13150472444541367
"008t0258" 61058 0.355 10031 61057 0.355 10030 0.07020887328822156
"008t0258" 61062 0.428 10035 61061 0.428 10034 0.302051391261156
"008t0258" 61073 0.689 20007 61072 0.689 20006 0.11119510161714974
"008t0258" 61092 1.131 20026 61091 1.131 20025 0.07021890776551923
"008t0258" 61111 1.497 40004 61110 1.497 40003 0.22239020252697528
"008t0258" 61246 3.57 70001 61245 3.57 60039 0.5375310902486181
"004t0109" 25060 2.018 50002 25059 2.018 50001 0.3619675841982114
"008t0260" 61643 0.132 10008 61642 0.132 10007 0.21061973016581606
"008t0260" 61647 0.152 10012 61646 0.152 10011 0.23320885633800187
"008t0260" 61651 0.188 10016 61650 0.188 10015 0.23320891137388824
"008t0260" 61656 0.213 10021 61655 0.213 10020 0.28082828742965066
"008t0260" 61660 0.235 10025 61659 0.235 10024 0.11119510090982554
"008t0260" 61663 0.274 10028 61662 0.274 10027 0.13150472444541367
"008t0260" 61666 0.355 10031 61665 0.355 10030 0.07020887328822156
"008t0260" 61670 0.428 10035 61669 0.428 10034 0.302051391261156
"008t0260" 61681 0.689 20007 61680 0.689 20006 0.11119510161714974
"008t0260" 61700 1.131 20026 61699 1.131 20025 0.07021890776551923
"008t0260" 61719 1.497 40004 61718 1.497 40003 0.22239020252697528
"056b0159" 150003 2.287 50009 150002 2.287 50008 0.3335853034368008
"056b0159" 150215 5.958 110059 150214 5.958 110058 0.5944789984435529
"056b0159" 150319 7.298 140001 150318 7.298 130021 0.3335853034368008
"008t0262" 62142 5.343 140002 62141 5.343 140001 0.43622871220298376
"008t0262" 62274 7.775 180035 62273 7.775 180034 0.2811257390492779
equal_shape_distance_same_coordinates WARNING 61

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 61 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`.
"004t0105" 24713 0.0 10002 24712 0.0 10001
"004t0105" 24899 3.758 80056 24898 3.758 80055
"055t0076" 149070 2.554 60036 149069 2.554 60035
"055t0088" 149671 0.0 10002 149670 0.0 10001
"055t0088" 149750 1.439 40021 149749 1.439 40020
"055t0086" 149478 2.554 70002 149477 2.554 70001
"055t0086" 149557 3.993 100021 149556 3.993 100020
"010t0181" 72699 11.198 200056 72698 11.198 200055
"034b0209" 99879 0.0 10002 99878 0.0 10001
"093t0198" 227063 1.281 40002 227062 1.281 40001
"034b0208" 99658 0.0 10002 99657 0.0 10001
"034b0203" 99359 0.0 10002 99358 0.0 10001
"025t0077" 90451 0.659 20002 90450 0.659 20001
"093t0183" 225985 1.281 40002 225984 1.281 40001
"082t0236" 201198 2.431 70002 201197 2.431 70001
"082t0238" 201877 6.746 180002 201876 6.746 180001
"051t0225" 144219 1.282 40002 144218 1.282 40001
"009t0154" 65498 6.002 150025 65497 6.002 150024
"009t0154" 65526 6.303 160012 65525 6.303 160011
"092t0331" 219779 5.962 170001 219778 5.962 160013
"051t0216" 143667 1.282 40002 143666 1.282 40001
"004t0092" 24161 0.0 10002 24160 0.0 10001
"004t0092" 24347 3.758 90002 24346 3.758 90001
"082t0213" 198545 2.431 70002 198544 2.431 70001
"082t0214" 199278 6.746 180002 199277 6.746 180001
"004t0088" 23819 3.155 70002 23818 3.155 70001
"034b0211" 100141 0.0 10002 100140 0.0 10001
"009t0160" 66440 6.002 150025 66439 6.002 150024
"009t0160" 66468 6.303 160012 66467 6.303 160011
"009t0160" 66558 7.869 190028 66557 7.869 190027
"009t0160" 66593 8.267 200002 66592 8.267 200001
"009t0163" 66944 1.919 50025 66943 1.919 50024
"009t0163" 66972 2.22 60012 66971 2.22 60011
"009t0163" 67062 3.786 90028 67061 3.786 90027
"009t0163" 67097 4.184 100002 67096 4.184 100001
"009t0046" 64243 6.002 150025 64242 6.002 150024
"009t0046" 64271 6.303 160012 64270 6.303 160011
"009t0046" 64361 7.869 190028 64360 7.869 190027
"009t0046" 64396 8.267 200002 64395 8.267 200001
"004t0143" 26450 3.155 70002 26449 3.155 70001
"034b0038" 97648 0.0 10002 97647 0.0 10001
"034b0077" 97779 0.0 10002 97778 0.0 10001
"082t0172" 196519 6.746 180002 196518 6.746 180001
"082t0178" 197369 6.746 170056 197368 6.746 170055
"007t0294" 56891 4.582 110002 56890 4.582 110001
"092t0409" 221405 2.673 80001 221404 2.673 70013
"092t0411" 222300 5.962 170001 222299 5.962 160013
"092t0416" 222701 4.55 150033 222700 4.55 150032
"007t0279" 55637 7.814 150002 55636 7.814 150001
"093t0166" 224818 1.281 40002 224817 1.281 40001
expired_calendar WARNING 8

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.

csvRowNumber (?) The row of the faulty record. serviceId (?) The service id of the faulty record.
3 "340372006"
33 "340284002"
36 "336288070"
69 "340380003"
147 "334339030"
186 "336290070"
222 "338941032"
312 "340175003"
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 "20261001" "20261025" "20261031"
mixed_case_recommended_field WARNING 49224

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 49224 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" "GARE DE L'OUEST - STOCKEL" 2
"routes.txt" "route_long_name" "SIMONIS - ELISABETH" 3
"routes.txt" "route_long_name" "GARE DU NORD - STALLE (P)" 4
"routes.txt" "route_long_name" "ERASME - HERRMANN-DEBROUX" 5
"routes.txt" "route_long_name" "ROI BAUDOUIN - ELISABETH" 6
"routes.txt" "route_long_name" "VANDERKINDERE - HEYSEL" 7
"routes.txt" "route_long_name" "LOUISE - ROODEBEEK" 8
"routes.txt" "route_long_name" "GROOT-BIJGAARDEN - ROI BAUDOUIN" 9
"routes.txt" "route_long_name" "HOPITAL MILITAIRE - CHURCHILL" 10
"routes.txt" "route_long_name" "BRUSSELS AIRPORT - BRUSSELS CITY" 11
"routes.txt" "route_long_name" "ETANGS NOIRS - UZ-VUB" 12
"routes.txt" "route_long_name" "UZ-VUB - GARE DU NORD" 13
"routes.txt" "route_long_name" "BEAULIEU - HEILIGENBORRE" 14
"routes.txt" "route_long_name" "ALBERT - VAN HAELEN" 15
"routes.txt" "route_long_name" "SIMONIS - DE WAND" 16
"routes.txt" "route_long_name" "HUNDERENVELD - GARE DU NORD" 17
"routes.txt" "route_long_name" "MAES - LUXEMBOURG" 18
"routes.txt" "route_long_name" "BOONDAEL GARE - ROGIER" 19
"routes.txt" "route_long_name" "BRABANCONNE - KONKEL" 20
"routes.txt" "route_long_name" "DE BROUCKERE - HOF TEN BERG" 21
"routes.txt" "route_long_name" "PORTE DE NAMUR - SAINTE-ANNE" 22
"routes.txt" "route_long_name" "SCHAERBEEK GARE - ESPLANADE" 23
"routes.txt" "route_long_name" "MAELBEEK - KONKEL" 24
"routes.txt" "route_long_name" "ALBERT - GARE DE LINKEBEEK" 25
"routes.txt" "route_long_name" "GARE CENTRALE - HEROS" 26
"routes.txt" "route_long_name" "MONTGOMERY - BAN-EIK" 27
"routes.txt" "route_long_name" "HEROS - TRANSVAAL" 28
"routes.txt" "route_long_name" "ROODEBEEK - VIADUC E40" 29
"routes.txt" "route_long_name" "HEROS - VIVIER D'OIE" 30
"routes.txt" "route_long_name" "MONTGOMERY - TERVUREN STATION" 31
"routes.txt" "route_long_name" "ROODEBEEK - SAINT-VINCENT" 32
"routes.txt" "route_long_name" "MOORTEBEEK - PANNENHUIS" 33
"routes.txt" "route_long_name" "HEEMBEEK - VILVOORDE STATION" 34
"routes.txt" "route_long_name" "ANNEESSENS - DECROLY" 35
"routes.txt" "route_long_name" "GARE DU MIDI - SIMONIS" 36
"routes.txt" "route_long_name" "GARE DU MIDI - LOT STATION" 37
"routes.txt" "route_long_name" "STADE - GARE DU MIDI" 38
"routes.txt" "route_long_name" "WESTLAND SHOPPING - HOPITAL MILITAIRE" 39
"routes.txt" "route_long_name" "TRONE - FOREST (BERVOETS)" 40
"routes.txt" "route_long_name" "DA VINCI - ROGIER" 41
"routes.txt" "route_long_name" "MAELBEEK - BUDA" 42
"routes.txt" "route_long_name" "VILVOORDE STATION - ALBERT II" 43
"routes.txt" "route_long_name" "HOPITAL ETTERBEEK-IXELLES - BORDET STATION" 44
"routes.txt" "route_long_name" "AMBIORIX - UCCLE CALEVOET" 45
"routes.txt" "route_long_name" "GARE DU NORD - PLEIADES" 46
"routes.txt" "route_long_name" "EUROCONTROL - HEYSEL" 47
"routes.txt" "route_long_name" "GARE CENTRALE - CIMETIERE DE BRUXELLES" 48
"routes.txt" "route_long_name" "PORTE DE NAMUR - BORDET STATION" 49
"routes.txt" "route_long_name" "GARE CENTRALE - MACHELEN" 50
"routes.txt" "route_long_name" "GARE CENTRALE - PEAGE" 51
big_gap_in_service INFO 8

big_gap_in_service

A service has a gap of more than 13 days between active service dates.

You can see more about this notice here.

serviceId (?) The service_id that has the gap. gapStartDate (?) The first day of the gap. gapEndDate (?) The last day of the gap. gapDurationDays (?) The number of days in the gap.
"334905600" "2026-10-04" "2026-10-25" 20
"335244500" "2026-10-03" "2026-10-24" 20
"334762600" "2026-10-04" "2026-10-25" 20
"334923500" "2026-10-03" "2026-10-24" 20
"335274500" "2026-10-03" "2026-10-24" 20
"334798600" "2026-10-04" "2026-10-25" 20
"339217501" "2026-10-03" "2026-10-24" 20
"339156502" "2026-10-03" "2026-10-24" 20
trip_headsign_matches_intermediate_stop INFO 11507

trip_headsign_matches_intermediate_stop

Trip headsign matches the name of an intermediate stop, not the last stop.

The trip_headsign matches the stop_name of a stop that is not the last stop of the trip. This may confuse passengers boarding after that stop, since the headsign suggests the vehicle is heading to a stop it has already passed.

You can see more about this notice here.

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

csvRowNumber (?) The row number of the faulty record in `trips.txt`. tripId (?) The id of the trip with the problematic headsign. tripHeadsign (?) The headsign value that matches an intermediate stop name. stopId1 (?) The id of the intermediate stop whose name matches the headsign. stopSequence (?) The stop_sequence value of the intermediate stop that matches the headsign. stopId2 (?) The id of the actual last stop of the trip.
84 "133342927335284001" "TRONE" "6432" 25 "1780"
85 "133342928335284001" "TRONE" "6432" 25 "1780"
190 "134460039341184070" "TRONE" "6432" 25 "1780"
193 "134460042341184070" "TRONE" "6432" 25 "1780"
377 "133336309335276501" "TRONE" "6432" 25 "1780"
378 "133336310335276501" "TRONE" "6432" 25 "1780"
547 "133336152335275601" "TRONE" "6432" 25 "1780"
548 "133336153335275601" "TRONE" "6432" 25 "1780"
7287 "133290199335143000" "MAELBEEK" "6464" 6 "2719"
7297 "133290209335143000" "MAELBEEK" "6464" 31 "2719"
7299 "133290211335143000" "MAELBEEK" "6464" 31 "2719"
7302 "133290214335143000" "MAELBEEK" "6464" 31 "2719"
7303 "133290215335143000" "MAELBEEK" "6464" 31 "2719"
7305 "133290217335143000" "MAELBEEK" "6464" 31 "2719"
7308 "133290220335143000" "MAELBEEK" "6464" 31 "2719"
7310 "133290222335143000" "MAELBEEK" "6464" 31 "2719"
7312 "133290224335143000" "MAELBEEK" "6464" 31 "2719"
7314 "133290226335143000" "MAELBEEK" "6464" 31 "2719"
7315 "133290227335143000" "MAELBEEK" "6464" 31 "2719"
7318 "133290230335143000" "MAELBEEK" "6464" 31 "2719"
7322 "133290234335143000" "MAELBEEK" "6464" 31 "2719"
7324 "133290236335143000" "MAELBEEK" "6464" 31 "2719"
7326 "133290238335143000" "MAELBEEK" "6464" 31 "2719"
7328 "133290240335143000" "MAELBEEK" "6464" 31 "2719"
7329 "133290241335143000" "MAELBEEK" "6464" 31 "2719"
7331 "133290243335143000" "MAELBEEK" "6464" 31 "2719"
7333 "133290245335143000" "MAELBEEK" "6464" 31 "2719"
7334 "133290246335143000" "MAELBEEK" "6464" 31 "2719"
7339 "133290251335143000" "MAELBEEK" "6464" 31 "2719"
7342 "133290254335143000" "MAELBEEK" "6464" 31 "2719"
7343 "133290255335143000" "MAELBEEK" "6464" 31 "2719"
7344 "133290256335143000" "MAELBEEK" "6464" 31 "2719"
7346 "133290258335143000" "MAELBEEK" "6464" 31 "2719"
7348 "133290260335143000" "MAELBEEK" "6464" 31 "2719"
7349 "133290261335143000" "MAELBEEK" "6464" 31 "2719"
7351 "133290263335143000" "MAELBEEK" "6464" 31 "2719"
7354 "133290266335143000" "MAELBEEK" "6464" 31 "2719"
7355 "133290267335143000" "MAELBEEK" "6464" 31 "2719"
7357 "133290269335143000" "MAELBEEK" "6464" 31 "2719"
7360 "133290272335143000" "MAELBEEK" "6464" 31 "2719"
7362 "133290274335143000" "MAELBEEK" "6464" 31 "2719"
7363 "133290275335143000" "MAELBEEK" "6464" 31 "2719"
7365 "133290277335143000" "MAELBEEK" "6464" 31 "2719"
7366 "133290278335143000" "MAELBEEK" "6464" 31 "2719"
7368 "133290280335143000" "MAELBEEK" "6464" 31 "2719"
7372 "133290285335143000" "MAELBEEK" "6464" 31 "2719"
7373 "133290286335143000" "MAELBEEK" "6464" 31 "2719"
7374 "133290287335143000" "MAELBEEK" "6464" 31 "2719"
7380 "133290293335143000" "MAELBEEK" "6464" 31 "2719"
7381 "133290294335143000" "MAELBEEK" "6464" 31 "2719"