saskatoon-transit — Enhanced Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 8.0.1 at 2026-08-01T11:57:29Z,
for the dataset file:///shared/saskatoon-transit_a1e7b79d.zip. No country code was provided.

Use this report alongside our documentation.

Summary

Agencies included


Feed Info


Publisher Name:
Busmaps.com
Publisher URL:
https://busmaps.com
Feed Language:
English
Feed Start Date:
2026-06-28
Feed End Date:
2026-08-29

Files included


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

Counts


  • Agencies: 1
  • Blocks: 214
  • Routes: 43
  • Shapes: 141
  • Stops: 1332
  • Trips: 5792

Specification Compliance report

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

Notice Code Severity Total
fast_travel_between_consecutive_stops WARNING 63

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.

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

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.
5255 "1573-1523639" "1573-14762" 4077.6339651604753 1.1326761014334654 115171 16 "1573-3152" "Kristjanson / 800-Block" "20:46:59" 115172 17 "1573-4195" "Konihowski / Bourgonje" "20:47:00"
3995 "1573-1526526" "1573-14762" 4077.6339651604753 1.1326761014334654 88541 16 "1573-3152" "Kristjanson / 800-Block" "14:14:59" 88542 17 "1573-4195" "Konihowski / Bourgonje" "14:15:00"
3915 "1573-1523587" "1573-14762" 4077.6339651604753 1.1326761014334654 87073 16 "1573-3152" "Kristjanson / 800-Block" "21:04:59" 87074 17 "1573-4195" "Konihowski / Bourgonje" "21:05:00"
3913 "1573-1526537" "1573-14762" 4077.6339651604753 1.1326761014334654 87037 16 "1573-3152" "Kristjanson / 800-Block" "19:44:59" 87038 17 "1573-4195" "Konihowski / Bourgonje" "19:45:00"
3989 "1573-1523572" "1573-14762" 4077.6339651604753 1.1326761014334654 88433 16 "1573-3152" "Kristjanson / 800-Block" "11:04:59" 88434 17 "1573-4195" "Konihowski / Bourgonje" "11:05:00"
3993 "1573-1526524" "1573-14762" 4077.6339651604753 1.1326761014334654 88505 16 "1573-3152" "Kristjanson / 800-Block" "13:14:59" 88506 17 "1573-4195" "Konihowski / Bourgonje" "13:15:00"
5252 "1573-1523636" "1573-14762" 4077.6339651604753 1.1326761014334654 115117 16 "1573-3152" "Kristjanson / 800-Block" "18:46:59" 115118 17 "1573-4195" "Konihowski / Bourgonje" "18:47:00"
5249 "1573-1523633" "1573-14762" 4077.6339651604753 1.1326761014334654 115063 16 "1573-3152" "Kristjanson / 800-Block" "16:46:59" 115064 17 "1573-4195" "Konihowski / Bourgonje" "16:47:00"
1689 "1573-1524596" "1573-14780" 186.724733141534 0.20747192571281556 39784 28 "1573-4408" "Gray / Grant" "14:05:56" 39785 29 "1573-4409" "Gray / Imperial" "14:06:00"
3918 "1573-1523590" "1573-14762" 4077.6339651604753 1.1326761014334654 87127 16 "1573-3152" "Kristjanson / 800-Block" "23:03:59" 87128 17 "1573-4195" "Konihowski / Bourgonje" "23:04:00"
1688 "1573-1524595" "1573-14780" 186.724733141534 0.20747192571281556 39754 28 "1573-4408" "Gray / Grant" "13:35:56" 39755 29 "1573-4409" "Gray / Imperial" "13:36:00"
4000 "1573-1526531" "1573-14762" 4077.6339651604753 1.1326761014334654 88631 16 "1573-3152" "Kristjanson / 800-Block" "16:44:59" 88632 17 "1573-4195" "Konihowski / Bourgonje" "16:45:00"
3999 "1573-1526530" "1573-14762" 4077.6339651604753 1.1326761014334654 88613 16 "1573-3152" "Kristjanson / 800-Block" "16:14:59" 88614 17 "1573-4195" "Konihowski / Bourgonje" "16:15:00"
5239 "1573-1523623" "1573-14762" 4077.6339651604753 1.1326761014334654 114883 16 "1573-3152" "Kristjanson / 800-Block" "10:06:59" 114884 17 "1573-4195" "Konihowski / Bourgonje" "10:07:00"
5243 "1573-1523627" "1573-14762" 4077.6339651604753 1.1326761014334654 114955 16 "1573-3152" "Kristjanson / 800-Block" "12:46:59" 114956 17 "1573-4195" "Konihowski / Bourgonje" "12:47:00"
3983 "1573-1523566" "1573-14762" 4077.6339651604753 1.1326761014334654 88325 16 "1573-3152" "Kristjanson / 800-Block" "07:04:59" 88326 17 "1573-4195" "Konihowski / Bourgonje" "07:05:00"
1685 "1573-1524592" "1573-14780" 186.724733141534 0.20747192571281556 39664 28 "1573-4408" "Gray / Grant" "12:05:56" 39665 29 "1573-4409" "Gray / Imperial" "12:06:00"
3912 "1573-1526536" "1573-14762" 4077.6339651604753 1.1326761014334654 87019 16 "1573-3152" "Kristjanson / 800-Block" "19:14:59" 87020 17 "1573-4195" "Konihowski / Bourgonje" "19:15:00"
3997 "1573-1526528" "1573-14762" 4077.6339651604753 1.1326761014334654 88577 16 "1573-3152" "Kristjanson / 800-Block" "15:14:59" 88578 17 "1573-4195" "Konihowski / Bourgonje" "15:15:00"
5237 "1573-1523621" "1573-14762" 4077.6339651604753 1.1326761014334654 114847 16 "1573-3152" "Kristjanson / 800-Block" "08:46:59" 114848 17 "1573-4195" "Konihowski / Bourgonje" "08:47:00"
4001 "1573-1526532" "1573-14762" 4077.6339651604753 1.1326761014334654 88649 16 "1573-3152" "Kristjanson / 800-Block" "17:14:59" 88650 17 "1573-4195" "Konihowski / Bourgonje" "17:15:00"
1681 "1573-1524588" "1573-14780" 186.724733141534 0.20747192571281556 39544 28 "1573-4408" "Gray / Grant" "10:05:56" 39545 29 "1573-4409" "Gray / Imperial" "10:06:00"
3990 "1573-1523573" "1573-14762" 4077.6339651604753 1.1326761014334654 88451 16 "1573-3152" "Kristjanson / 800-Block" "11:44:59" 88452 17 "1573-4195" "Konihowski / Bourgonje" "11:45:00"
3998 "1573-1526529" "1573-14762" 4077.6339651604753 1.1326761014334654 88595 16 "1573-3152" "Kristjanson / 800-Block" "15:44:59" 88596 17 "1573-4195" "Konihowski / Bourgonje" "15:45:00"
1675 "1573-1524582" "1573-14780" 186.724733141534 0.20747192571281556 39364 28 "1573-4408" "Gray / Grant" "07:04:56" 39365 29 "1573-4409" "Gray / Imperial" "07:05:00"
3996 "1573-1526527" "1573-14762" 4077.6339651604753 1.1326761014334654 88559 16 "1573-3152" "Kristjanson / 800-Block" "14:44:59" 88560 17 "1573-4195" "Konihowski / Bourgonje" "14:45:00"
3994 "1573-1526525" "1573-14762" 4077.6339651604753 1.1326761014334654 88523 16 "1573-3152" "Kristjanson / 800-Block" "13:44:59" 88524 17 "1573-4195" "Konihowski / Bourgonje" "13:45:00"
1687 "1573-1524594" "1573-14780" 186.724733141534 0.20747192571281556 39724 28 "1573-4408" "Gray / Grant" "13:05:56" 39725 29 "1573-4409" "Gray / Imperial" "13:06:00"
1690 "1573-1524597" "1573-14780" 186.724733141534 0.20747192571281556 39814 28 "1573-4408" "Gray / Grant" "14:35:56" 39815 29 "1573-4409" "Gray / Imperial" "14:36:00"
5241 "1573-1523625" "1573-14762" 4077.6339651604753 1.1326761014334654 114919 16 "1573-3152" "Kristjanson / 800-Block" "11:26:59" 114920 17 "1573-4195" "Konihowski / Bourgonje" "11:27:00"
3909 "1573-1526533" "1573-14762" 4077.6339651604753 1.1326761014334654 86965 16 "1573-3152" "Kristjanson / 800-Block" "17:44:59" 86966 17 "1573-4195" "Konihowski / Bourgonje" "17:45:00"
3914 "1573-1523586" "1573-14762" 4077.6339651604753 1.1326761014334654 87055 16 "1573-3152" "Kristjanson / 800-Block" "20:24:59" 87056 17 "1573-4195" "Konihowski / Bourgonje" "20:25:00"
3910 "1573-1526534" "1573-14762" 4077.6339651604753 1.1326761014334654 86983 16 "1573-3152" "Kristjanson / 800-Block" "18:14:59" 86984 17 "1573-4195" "Konihowski / Bourgonje" "18:15:00"
1674 "1573-1524581" "1573-14780" 186.724733141534 0.20747192571281556 39334 28 "1573-4408" "Gray / Grant" "06:35:56" 39335 29 "1573-4409" "Gray / Imperial" "06:36:00"
3986 "1573-1523569" "1573-14762" 4077.6339651604753 1.1326761014334654 88379 16 "1573-3152" "Kristjanson / 800-Block" "09:04:59" 88380 17 "1573-4195" "Konihowski / Bourgonje" "09:05:00"
5240 "1573-1523624" "1573-14762" 4077.6339651604753 1.1326761014334654 114901 16 "1573-3152" "Kristjanson / 800-Block" "10:46:59" 114902 17 "1573-4195" "Konihowski / Bourgonje" "10:47:00"
3992 "1573-1526523" "1573-14762" 4077.6339651604753 1.1326761014334654 88487 16 "1573-3152" "Kristjanson / 800-Block" "12:44:59" 88488 17 "1573-4195" "Konihowski / Bourgonje" "12:45:00"
5246 "1573-1523630" "1573-14762" 4077.6339651604753 1.1326761014334654 115009 16 "1573-3152" "Kristjanson / 800-Block" "14:46:59" 115010 17 "1573-4195" "Konihowski / Bourgonje" "14:47:00"
5256 "1573-1523640" "1573-14762" 4077.6339651604753 1.1326761014334654 115189 16 "1573-3152" "Kristjanson / 800-Block" "21:26:59" 115190 17 "1573-4195" "Konihowski / Bourgonje" "21:27:00"
5248 "1573-1523632" "1573-14762" 4077.6339651604753 1.1326761014334654 115045 16 "1573-3152" "Kristjanson / 800-Block" "16:06:59" 115046 17 "1573-4195" "Konihowski / Bourgonje" "16:07:00"
5250 "1573-1523634" "1573-14762" 4077.6339651604753 1.1326761014334654 115081 16 "1573-3152" "Kristjanson / 800-Block" "17:26:59" 115082 17 "1573-4195" "Konihowski / Bourgonje" "17:27:00"
1691 "1573-1524598" "1573-14780" 186.724733141534 0.20747192571281556 39844 28 "1573-4408" "Gray / Grant" "15:04:56" 39845 29 "1573-4409" "Gray / Imperial" "15:05:00"
5247 "1573-1523631" "1573-14762" 4077.6339651604753 1.1326761014334654 115027 16 "1573-3152" "Kristjanson / 800-Block" "15:26:59" 115028 17 "1573-4195" "Konihowski / Bourgonje" "15:27:00"
5253 "1573-1523637" "1573-14762" 4077.6339651604753 1.1326761014334654 115135 16 "1573-3152" "Kristjanson / 800-Block" "19:26:59" 115136 17 "1573-4195" "Konihowski / Bourgonje" "19:27:00"
5238 "1573-1523622" "1573-14762" 4077.6339651604753 1.1326761014334654 114865 16 "1573-3152" "Kristjanson / 800-Block" "09:26:59" 114866 17 "1573-4195" "Konihowski / Bourgonje" "09:27:00"
5245 "1573-1523629" "1573-14762" 4077.6339651604753 1.1326761014334654 114991 16 "1573-3152" "Kristjanson / 800-Block" "14:06:59" 114992 17 "1573-4195" "Konihowski / Bourgonje" "14:07:00"
5244 "1573-1523628" "1573-14762" 4077.6339651604753 1.1326761014334654 114973 16 "1573-3152" "Kristjanson / 800-Block" "13:26:59" 114974 17 "1573-4195" "Konihowski / Bourgonje" "13:27:00"
3917 "1573-1523589" "1573-14762" 4077.6339651604753 1.1326761014334654 87109 16 "1573-3152" "Kristjanson / 800-Block" "22:23:59" 87110 17 "1573-4195" "Konihowski / Bourgonje" "22:24:00"
3988 "1573-1523571" "1573-14762" 4077.6339651604753 1.1326761014334654 88415 16 "1573-3152" "Kristjanson / 800-Block" "10:24:59" 88416 17 "1573-4195" "Konihowski / Bourgonje" "10:25:00"
1682 "1573-1524589" "1573-14780" 186.724733141534 0.20747192571281556 39574 28 "1573-4408" "Gray / Grant" "10:35:56" 39575 29 "1573-4409" "Gray / Imperial" "10:36:00"
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 "20260801" "20260829" "20260831"
mixed_case_recommended_field WARNING 2

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.
"stops.txt" "stop_name" "23rd / D" 52
"stops.txt" "stop_name" "3rd / 20th" 145