ktmb — Enhanced Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 8.0.1 at 2026-09-19T04:46:55Z,
for the dataset file:///shared/ktmb_18ada59f.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-08-18
Feed End Date:
2026-10-03

Files included


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

Counts


  • Agencies: 1
  • Blocks: 0
  • Routes: 9
  • Shapes: 0
  • Stops: 155
  • Trips: 374

Specification Compliance report

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

Notice Code Severity Total
fast_travel_between_consecutive_stops WARNING 75

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 75 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.
235 "103069-2956" "103069-100_47300" 101.73722317629623 16.956203862716038 3610 5 "103069-42400" "Gurun" "20:22:00" 3611 6 "103069-43100" "Kobah" "20:31:00"
210 "103069-2908" "103069-100_47300" 101.73722317629623 16.956203862716038 3285 5 "103069-42400" "Gurun" "08:22:00" 3286 6 "103069-43100" "Kobah" "08:31:00"
210 "103069-2908" "103069-100_47300" 102.92802202474316 22.30107143869435 3288 8 "103069-44400" "Anak Bukit" "08:48:00" 3289 9 "103069-45600" "Kodiang" "09:00:00"
223 "103069-2943" "103069-100_47300" 102.92802202474316 22.30107143869435 3452 3 "103069-45600" "Kodiang" "16:00:00" 3453 4 "103069-44400" "Anak Bukit" "16:12:00"
223 "103069-2943" "103069-100_47300" 101.73722317629623 16.956203862716038 3455 6 "103069-43100" "Kobah" "16:29:00" 3456 7 "103069-42400" "Gurun" "16:38:00"
237 "103069-2959" "103069-100_47300" 102.92802202474316 22.30107143869435 3634 3 "103069-45600" "Kodiang" "20:30:00" 3635 4 "103069-44400" "Anak Bukit" "20:42:00"
237 "103069-2959" "103069-100_47300" 101.73722317629623 16.956203862716038 3637 6 "103069-43100" "Kobah" "20:59:00" 3638 7 "103069-42400" "Gurun" "21:08:00"
207 "103069-2905" "103069-100_47300" 102.92802202474316 22.30107143869435 3244 3 "103069-45600" "Kodiang" "06:25:00" 3245 4 "103069-44400" "Anak Bukit" "06:37:00"
207 "103069-2905" "103069-100_47300" 101.73722317629623 16.956203862716038 3247 6 "103069-43100" "Kobah" "06:54:00" 3248 7 "103069-42400" "Gurun" "07:03:00"
213 "103069-2915" "103069-100_47300" 102.92802202474316 22.30107143869435 3322 3 "103069-45600" "Kodiang" "09:00:00" 3323 4 "103069-44400" "Anak Bukit" "09:12:00"
213 "103069-2915" "103069-100_47300" 101.73722317629623 16.956203862716038 3325 6 "103069-43100" "Kobah" "09:29:00" 3326 7 "103069-42400" "Gurun" "09:38:00"
203 "103069-2900" "103069-100_47300" 101.73722317629623 16.956203862716038 3194 5 "103069-42400" "Gurun" "06:07:00" 3195 6 "103069-43100" "Kobah" "06:16:00"
203 "103069-2900" "103069-100_47300" 102.92802202474316 22.30107143869435 3197 8 "103069-44400" "Anak Bukit" "06:33:00" 3198 9 "103069-45600" "Kodiang" "06:45:00"
209 "103069-2907" "103069-100_47300" 102.92802202474316 22.30107143869435 3270 3 "103069-45600" "Kodiang" "06:45:00" 3271 4 "103069-44400" "Anak Bukit" "06:57:00"
209 "103069-2907" "103069-100_47300" 101.73722317629623 16.956203862716038 3273 6 "103069-43100" "Kobah" "07:14:00" 3274 7 "103069-42400" "Gurun" "07:23:00"
212 "103069-2912" "103069-100_47300" 101.73722317629623 16.956203862716038 3311 5 "103069-42400" "Gurun" "09:22:00" 3312 6 "103069-43100" "Kobah" "09:31:00"
212 "103069-2912" "103069-100_47300" 102.92802202474316 22.30107143869435 3314 8 "103069-44400" "Anak Bukit" "09:48:00" 3315 9 "103069-45600" "Kodiang" "10:00:00"
219 "103069-2938" "103069-100_47300" 101.73722317629623 16.956203862716038 3402 5 "103069-42400" "Gurun" "15:52:00" 3403 6 "103069-43100" "Kobah" "16:01:00"
219 "103069-2938" "103069-100_47300" 102.92802202474316 22.30107143869435 3405 8 "103069-44400" "Anak Bukit" "16:18:00" 3406 9 "103069-45600" "Kodiang" "16:30:00"
228 "103069-2949" "103069-100_47300" 102.92802202474316 22.30107143869435 3517 3 "103069-45600" "Kodiang" "17:30:00" 3518 4 "103069-44400" "Anak Bukit" "17:42:00"
228 "103069-2949" "103069-100_47300" 101.73722317629623 16.956203862716038 3520 6 "103069-43100" "Kobah" "17:59:00" 3521 7 "103069-42400" "Gurun" "18:08:00"
225 "103069-2946" "103069-100_47300" 101.73722317629623 16.956203862716038 3480 5 "103069-42400" "Gurun" "17:52:00" 3481 6 "103069-43100" "Kobah" "18:01:00"
225 "103069-2946" "103069-100_47300" 102.92802202474316 22.30107143869435 3483 8 "103069-44400" "Anak Bukit" "18:18:00" 3484 9 "103069-45600" "Kodiang" "18:30:00"
233 "103069-2954" "103069-100_47300" 101.73722317629623 16.956203862716038 3584 5 "103069-42400" "Gurun" "19:52:00" 3585 6 "103069-43100" "Kobah" "20:01:00"
233 "103069-2954" "103069-100_47300" 102.92802202474316 22.30107143869435 3587 8 "103069-44400" "Anak Bukit" "20:18:00" 3588 9 "103069-45600" "Kodiang" "20:30:00"
224 "103069-2944" "103069-100_47300" 101.73722317629623 16.956203862716038 3467 5 "103069-42400" "Gurun" "17:22:00" 3468 6 "103069-43100" "Kobah" "17:31:00"
224 "103069-2944" "103069-100_47300" 102.92802202474316 22.30107143869435 3470 8 "103069-44400" "Anak Bukit" "17:48:00" 3471 9 "103069-45600" "Kodiang" "18:00:00"
231 "103069-2952" "103069-100_47300" 101.73722317629623 16.956203862716038 3558 5 "103069-42400" "Gurun" "19:27:00" 3559 6 "103069-43100" "Kobah" "19:36:00"
231 "103069-2952" "103069-100_47300" 102.92802202474316 22.30107143869435 3561 8 "103069-44400" "Anak Bukit" "19:53:00" 3562 9 "103069-45600" "Kodiang" "20:05:00"
221 "103069-2940" "103069-100_47300" 101.73722317629623 16.956203862716038 3428 5 "103069-42400" "Gurun" "16:22:00" 3429 6 "103069-43100" "Kobah" "16:31:00"
221 "103069-2940" "103069-100_47300" 102.92802202474316 22.30107143869435 3431 8 "103069-44400" "Anak Bukit" "16:48:00" 3432 9 "103069-45600" "Kodiang" "17:00:00"
206 "103069-2904" "103069-100_47300" 101.73722317629623 16.956203862716038 3233 5 "103069-42400" "Gurun" "07:12:00" 3234 6 "103069-43100" "Kobah" "07:21:00"
206 "103069-2904" "103069-100_47300" 102.92802202474316 22.30107143869435 3236 8 "103069-44400" "Anak Bukit" "07:38:00" 3237 9 "103069-45600" "Kodiang" "07:50:00"
222 "103069-2941" "103069-100_47300" 102.92802202474316 22.30107143869435 3439 3 "103069-45600" "Kodiang" "15:30:00" 3440 4 "103069-44400" "Anak Bukit" "15:42:00"
222 "103069-2941" "103069-100_47300" 101.73722317629623 16.956203862716038 3442 6 "103069-43100" "Kobah" "15:59:00" 3443 7 "103069-42400" "Gurun" "16:08:00"
204 "103069-2901" "103069-100_47300" 102.92802202474316 22.30107143869435 3205 3 "103069-45600" "Kodiang" "05:45:00" 3206 4 "103069-44400" "Anak Bukit" "05:57:00"
204 "103069-2901" "103069-100_47300" 101.73722317629623 16.956203862716038 3208 6 "103069-43100" "Kobah" "06:14:00" 3209 7 "103069-42400" "Gurun" "06:23:00"
205 "103069-2903" "103069-100_47300" 102.92802202474316 22.30107143869435 3218 3 "103069-45600" "Kodiang" "06:05:00" 3219 4 "103069-44400" "Anak Bukit" "06:17:00"
205 "103069-2903" "103069-100_47300" 101.73722317629623 16.956203862716038 3221 6 "103069-43100" "Kobah" "06:34:00" 3222 7 "103069-42400" "Gurun" "06:43:00"
234 "103069-2955" "103069-100_47300" 102.92802202474316 22.30107143869435 3595 3 "103069-45600" "Kodiang" "19:00:00" 3596 4 "103069-44400" "Anak Bukit" "19:12:00"
234 "103069-2955" "103069-100_47300" 101.73722317629623 16.956203862716038 3598 6 "103069-43100" "Kobah" "19:29:00" 3599 7 "103069-42400" "Gurun" "19:38:00"
211 "103069-2911" "103069-100_47300" 102.92802202474316 22.30107143869435 3296 3 "103069-45600" "Kodiang" "08:00:00" 3297 4 "103069-44400" "Anak Bukit" "08:12:00"
211 "103069-2911" "103069-100_47300" 101.73722317629623 16.956203862716038 3299 6 "103069-43100" "Kobah" "08:29:00" 3300 7 "103069-42400" "Gurun" "08:38:00"
226 "103069-2947" "103069-100_47300" 102.92802202474316 22.30107143869435 3491 3 "103069-45600" "Kodiang" "17:00:00" 3492 4 "103069-44400" "Anak Bukit" "17:12:00"
226 "103069-2947" "103069-100_47300" 101.73722317629623 16.956203862716038 3494 6 "103069-43100" "Kobah" "17:29:00" 3495 7 "103069-42400" "Gurun" "17:38:00"
214 "103069-2920" "103069-100_47300" 101.73722317629623 16.956203862716038 3337 5 "103069-42400" "Gurun" "11:22:00" 3338 6 "103069-43100" "Kobah" "11:31:00"
214 "103069-2920" "103069-100_47300" 102.92802202474316 22.30107143869435 3340 8 "103069-44400" "Anak Bukit" "11:48:00" 3341 9 "103069-45600" "Kodiang" "12:00:00"
220 "103069-2939" "103069-100_47300" 102.92802202474316 22.30107143869435 3413 3 "103069-45600" "Kodiang" "15:00:00" 3414 4 "103069-44400" "Anak Bukit" "15:12:00"
220 "103069-2939" "103069-100_47300" 101.73722317629623 16.956203862716038 3416 6 "103069-43100" "Kobah" "15:29:00" 3417 7 "103069-42400" "Gurun" "15:38:00"
239 "103069-2964" "103069-100_47300" 101.73722317629623 16.956203862716038 3662 5 "103069-42400" "Gurun" "22:27:00" 3663 6 "103069-43100" "Kobah" "22:36:00"
fast_travel_between_far_stops WARNING 38

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.
235 "103069-2956" "103069-100_47300" 101.73722317629623 16.956203862716038 3610 5 "103069-42400" "Gurun" "20:22:00" 3611 6 "103069-43100" "Kobah" "20:31:00"
210 "103069-2908" "103069-100_47300" 101.73722317629623 16.956203862716038 3285 5 "103069-42400" "Gurun" "08:22:00" 3286 6 "103069-43100" "Kobah" "08:31:00"
223 "103069-2943" "103069-100_47300" 102.92802202474316 22.30107143869435 3452 3 "103069-45600" "Kodiang" "16:00:00" 3453 4 "103069-44400" "Anak Bukit" "16:12:00"
237 "103069-2959" "103069-100_47300" 102.92802202474316 22.30107143869435 3634 3 "103069-45600" "Kodiang" "20:30:00" 3635 4 "103069-44400" "Anak Bukit" "20:42:00"
207 "103069-2905" "103069-100_47300" 102.92802202474316 22.30107143869435 3244 3 "103069-45600" "Kodiang" "06:25:00" 3245 4 "103069-44400" "Anak Bukit" "06:37:00"
213 "103069-2915" "103069-100_47300" 102.92802202474316 22.30107143869435 3322 3 "103069-45600" "Kodiang" "09:00:00" 3323 4 "103069-44400" "Anak Bukit" "09:12:00"
203 "103069-2900" "103069-100_47300" 101.73722317629623 16.956203862716038 3194 5 "103069-42400" "Gurun" "06:07:00" 3195 6 "103069-43100" "Kobah" "06:16:00"
209 "103069-2907" "103069-100_47300" 102.92802202474316 22.30107143869435 3270 3 "103069-45600" "Kodiang" "06:45:00" 3271 4 "103069-44400" "Anak Bukit" "06:57:00"
212 "103069-2912" "103069-100_47300" 101.73722317629623 16.956203862716038 3311 5 "103069-42400" "Gurun" "09:22:00" 3312 6 "103069-43100" "Kobah" "09:31:00"
219 "103069-2938" "103069-100_47300" 101.73722317629623 16.956203862716038 3402 5 "103069-42400" "Gurun" "15:52:00" 3403 6 "103069-43100" "Kobah" "16:01:00"
228 "103069-2949" "103069-100_47300" 102.92802202474316 22.30107143869435 3517 3 "103069-45600" "Kodiang" "17:30:00" 3518 4 "103069-44400" "Anak Bukit" "17:42:00"
225 "103069-2946" "103069-100_47300" 101.73722317629623 16.956203862716038 3480 5 "103069-42400" "Gurun" "17:52:00" 3481 6 "103069-43100" "Kobah" "18:01:00"
233 "103069-2954" "103069-100_47300" 101.73722317629623 16.956203862716038 3584 5 "103069-42400" "Gurun" "19:52:00" 3585 6 "103069-43100" "Kobah" "20:01:00"
224 "103069-2944" "103069-100_47300" 101.73722317629623 16.956203862716038 3467 5 "103069-42400" "Gurun" "17:22:00" 3468 6 "103069-43100" "Kobah" "17:31:00"
231 "103069-2952" "103069-100_47300" 101.73722317629623 16.956203862716038 3558 5 "103069-42400" "Gurun" "19:27:00" 3559 6 "103069-43100" "Kobah" "19:36:00"
221 "103069-2940" "103069-100_47300" 101.73722317629623 16.956203862716038 3428 5 "103069-42400" "Gurun" "16:22:00" 3429 6 "103069-43100" "Kobah" "16:31:00"
206 "103069-2904" "103069-100_47300" 101.73722317629623 16.956203862716038 3233 5 "103069-42400" "Gurun" "07:12:00" 3234 6 "103069-43100" "Kobah" "07:21:00"
222 "103069-2941" "103069-100_47300" 102.92802202474316 22.30107143869435 3439 3 "103069-45600" "Kodiang" "15:30:00" 3440 4 "103069-44400" "Anak Bukit" "15:42:00"
204 "103069-2901" "103069-100_47300" 102.92802202474316 22.30107143869435 3205 3 "103069-45600" "Kodiang" "05:45:00" 3206 4 "103069-44400" "Anak Bukit" "05:57:00"
205 "103069-2903" "103069-100_47300" 102.92802202474316 22.30107143869435 3218 3 "103069-45600" "Kodiang" "06:05:00" 3219 4 "103069-44400" "Anak Bukit" "06:17:00"
234 "103069-2955" "103069-100_47300" 102.92802202474316 22.30107143869435 3595 3 "103069-45600" "Kodiang" "19:00:00" 3596 4 "103069-44400" "Anak Bukit" "19:12:00"
211 "103069-2911" "103069-100_47300" 102.92802202474316 22.30107143869435 3296 3 "103069-45600" "Kodiang" "08:00:00" 3297 4 "103069-44400" "Anak Bukit" "08:12:00"
226 "103069-2947" "103069-100_47300" 102.92802202474316 22.30107143869435 3491 3 "103069-45600" "Kodiang" "17:00:00" 3492 4 "103069-44400" "Anak Bukit" "17:12:00"
214 "103069-2920" "103069-100_47300" 101.73722317629623 16.956203862716038 3337 5 "103069-42400" "Gurun" "11:22:00" 3338 6 "103069-43100" "Kobah" "11:31:00"
220 "103069-2939" "103069-100_47300" 102.92802202474316 22.30107143869435 3413 3 "103069-45600" "Kodiang" "15:00:00" 3414 4 "103069-44400" "Anak Bukit" "15:12:00"
239 "103069-2964" "103069-100_47300" 101.73722317629623 16.956203862716038 3662 5 "103069-42400" "Gurun" "22:27:00" 3663 6 "103069-43100" "Kobah" "22:36:00"
227 "103069-2948" "103069-100_47300" 101.73722317629623 16.956203862716038 3506 5 "103069-42400" "Gurun" "18:22:00" 3507 6 "103069-43100" "Kobah" "18:31:00"
215 "103069-2923" "103069-100_47300" 102.92802202474316 22.30107143869435 3348 3 "103069-45600" "Kodiang" "11:00:00" 3349 4 "103069-44400" "Anak Bukit" "11:12:00"
208 "103069-2906" "103069-100_47300" 101.73722317629623 16.956203862716038 3259 5 "103069-42400" "Gurun" "07:42:00" 3260 6 "103069-43100" "Kobah" "07:51:00"
218 "103069-2936" "103069-100_47300" 101.73722317629623 16.956203862716038 3389 5 "103069-42400" "Gurun" "15:22:00" 3390 6 "103069-43100" "Kobah" "15:31:00"
238 "103069-2960" "103069-100_47300" 101.73722317629623 16.956203862716038 3649 5 "103069-42400" "Gurun" "21:32:00" 3650 6 "103069-43100" "Kobah" "21:41:00"
240 "103069-2967" "103069-100_47300" 102.92802202474316 22.30107143869435 3673 3 "103069-45600" "Kodiang" "22:00:00" 3674 4 "103069-44400" "Anak Bukit" "22:12:00"
216 "103069-2928" "103069-100_47300" 101.73722317629623 16.956203862716038 3363 5 "103069-42400" "Gurun" "13:22:00" 3364 6 "103069-43100" "Kobah" "13:31:00"
230 "103069-2951" "103069-100_47300" 102.92802202474316 22.30107143869435 3543 3 "103069-45600" "Kodiang" "18:00:00" 3544 4 "103069-44400" "Anak Bukit" "18:12:00"
217 "103069-2931" "103069-100_47300" 102.92802202474316 22.30107143869435 3374 3 "103069-45600" "Kodiang" "13:00:00" 3375 4 "103069-44400" "Anak Bukit" "13:12:00"
236 "103069-2957" "103069-100_47300" 102.92802202474316 22.30107143869435 3621 3 "103069-45600" "Kodiang" "19:30:00" 3622 4 "103069-44400" "Anak Bukit" "19:42:00"
229 "103069-2950" "103069-100_47300" 101.73722317629623 16.956203862716038 3532 5 "103069-42400" "Gurun" "18:52:00" 3533 6 "103069-43100" "Kobah" "19:01:00"
232 "103069-2953" "103069-100_47300" 102.92802202474316 22.30107143869435 3569 3 "103069-45600" "Kodiang" "18:30:00" 3570 4 "103069-44400" "Anak Bukit" "18:42: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 "20260919" "20261003" "20261019"
route_short_name_too_long WARNING 4

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`.
"103069-KC05_KB18" 2 "Seremban Line"
"103069-KA15_KD19" 3 "Port Klang Line"
"103069-100_47300" 4 "Padang Besar Line"
"103069-SS" 6 "Shuttle Selatan"