GTFS Schedule Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 7.1.0 at 2026-02-03T19:47:14Z,
for the dataset file:///shared/ktmb_1ec0741e.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. routes.txt
  4. stop_times.txt
  5. stops.txt
  6. trips.txt

Counts


  • Agencies: 1
  • Blocks: 0
  • Routes: 9
  • Shapes: 0
  • Stops: 191
  • Trips: 304

Specification Compliance report

529 notices reported (13 errors, 516 warnings, 0 infos)

Notice Code Severity Total
foreign_key_violation ERROR 2

foreign_key_violation

Wrong foreign key.

A foreign key references the primary key of another file. A foreign key violation means that the foreign key referenced from a given row (the child file) cannot be found in the corresponding file (the parent file). The Foreign keys are defined in the specification under "Type" for each file.

You can see more about this notice here.

childFilename (?) The name of the file from which reference is made. childFieldName (?) The name of the field that makes reference. parentFilename (?) The name of the file that is referred to. parentFieldName (?) The name of the field that is referred to. fieldValue (?) The faulty record's value. csvRowNumber (?) The row of the faulty record.
"stop_times.txt" "stop_id" "stops.txt" "stop_id" "37200" 5
"stop_times.txt" "stop_id" "stops.txt" "stop_id" "37200" 180
stop_time_with_arrival_before_previous_departure_time ERROR 11

stop_time_with_arrival_before_previous_departure_time

Backwards time travel between stops in stop_times.txt

For a given trip_id, the arrival_time of (n+1)-th stoptime in sequence must not precede the departure_time of n-th stoptime in sequence in stop_times.txt.

You can see more about this notice here.

csvRowNumber (?) The row number of the faulty record. prevCsvRowNumber (?) The row of the previous stop time. tripId (?) The trip_id associated to the faulty record. arrivalTime (?) Arrival time at the faulty record. departureTime (?) Departure time at the previous stop time.
4154 4153 "weekend_2346" "15:02:00" "38:55:00"
3641 3640 "weekend_2254" "20:47:00" "44:42:00"
3642 3641 "weekend_2254" "20:49:00" "44:47:00"
3643 3642 "weekend_2254" "20:55:00" "44:50:00"
3645 3644 "weekend_2254" "21:09:00" "45:06:00"
3646 3645 "weekend_2254" "21:12:00" "45:10:00"
3647 3646 "weekend_2254" "21:18:00" "45:13:00"
3648 3647 "weekend_2254" "21:22:00" "45:19:00"
3649 3648 "weekend_2254" "21:24:00" "45:23:00"
3650 3649 "weekend_2254" "21:27:00" "45:25:00"
3651 3650 "weekend_2254" "21:31:00" "45:27:00"
expired_calendar WARNING 1

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.
2 "komuter_weekend"
fast_travel_between_consecutive_stops WARNING 192

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 192 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.
190 "2994" "100_47300" 101.73722317629623 16.956203862716038 965 600 "42400" "GURUN" "22:22:00" 966 700 "43100" "Kobah" "22:31:00"
190 "2994" "100_47300" 102.92802202474316 22.30107143869435 969 1000 "44400" "ANAK BUKIT" "22:48:00" 970 1100 "45600" "KODIANG" "23:00:00"
5 "weekday_2111" "KA15_KD19" 226.04970388294498 15.069980258863 2350 100 "15200" "TANJUNG MALIM" "06:32:00" 2351 200 "15400" "KALUMPANG" "06:35:00"
213 "2909" "100_9000" 164.89483996047662 19.237731328722273 331 1300 "8000" "CHEMOR" "13:56:00" 332 1400 "8600" "TASEK" "14:02:00"
168 "weekend_2254" "KC05_KB18" 186.97932474065223 3.1163220790108705 3640 1600 "19400" "SALAK SELATAN" "44:42:00" 3641 1700 "19300" "Seputih" "20:47:00"
168 "weekend_2254" "KC05_KB18" 110.84477930199536 1.8474129883665893 3642 1800 "19205" "Midvalley" "44:50:00" 3643 1900 "19100" "KL SENTRAL" "20:55:00"
168 "weekend_2254" "KC05_KB18" 104.49540473433765 1.7415900789056276 3644 2000 "19000" "KUALA LUMPUR" "45:06:00" 3645 2100 "18900" "Bank Negara" "21:09:00"
168 "weekend_2254" "KC05_KB18" 122.26787718151424 2.0377979530252373 3646 2200 "18800" "Putra" "45:13:00" 3647 2300 "50000" "SENTUL" "21:18:00"
168 "weekend_2254" "KC05_KB18" 111.77529302514684 1.8629215504191141 3647 2300 "50000" "SENTUL" "45:19:00" 3648 2400 "50300" "Batu Kentonmen" "21:22:00"
168 "weekend_2254" "KC05_KB18" 166.61195251441217 2.776865875240203 3650 2600 "50500" "Taman Wahyu" "45:27:00" 3651 2700 "50600" "BATU CAVES" "21:31:00"
179 "2964" "100_47300" 101.73722317629623 16.956203862716038 685 600 "42400" "GURUN" "13:22:00" 686 700 "43100" "Kobah" "13:31:00"
179 "2964" "100_47300" 102.92802202474316 22.30107143869435 689 1000 "44400" "ANAK BUKIT" "13:48:00" 690 1100 "45600" "KODIANG" "14:00:00"
211 "2905" "100_9000" 164.89483996047662 19.237731328722273 271 1300 "8000" "CHEMOR" "08:41:00" 272 1400 "8600" "TASEK" "08:47:00"
25 "weekday_2183" "KA15_KD19" 226.04970388294498 15.069980258863 3171 100 "15200" "TANJUNG MALIM" "20:32:00" 3172 200 "15400" "KALUMPANG" "20:35:00"
210 "2903" "100_9000" 164.89483996047662 19.237731328722273 241 1300 "8000" "CHEMOR" "07:41:00" 242 1400 "8600" "TASEK" "07:47:00"
177 "2952" "100_47300" 101.73722317629623 16.956203862716038 615 600 "42400" "GURUN" "09:22:00" 616 700 "43100" "Kobah" "09:31:00"
177 "2952" "100_47300" 102.92802202474316 22.30107143869435 619 1000 "44400" "ANAK BUKIT" "09:48:00" 620 1100 "45600" "KODIANG" "10:00:00"
224 "2910" "100_9000" 192.37731328722273 19.237731328722273 335 200 "8600" "TASEK" "13:04:00" 336 300 "8000" "CHEMOR" "13:09:00"
216 "2915" "100_9000" 164.89483996047662 19.237731328722273 421 1300 "8000" "CHEMOR" "19:21:00" 422 1400 "8600" "TASEK" "19:27:00"
229 "35" "SH" 2794.6937065962243 232.89114221635202 1026 1600 "64400" "Triang" "15:05:00" 1027 1700 "64100" "Mengkuang" "15:09:00"
229 "35" "SH" 1223.75206580831 244.75041316166198 1027 1700 "64100" "Mengkuang" "15:09:00" 1028 1800 "63700" "Kemayan" "15:20:00"
214 "2911" "100_9000" 164.89483996047662 19.237731328722273 361 1300 "8000" "CHEMOR" "15:51:00" 362 1400 "8600" "TASEK" "15:57:00"
103 "weekend_2339" "KA15_KD19" 226.04970388294498 15.069980258863 4097 100 "15200" "TANJUNG MALIM" "11:22:00" 4098 200 "15400" "KALUMPANG" "11:25:00"
12 "weekday_2139" "KA15_KD19" 226.04970388294498 15.069980258863 2652 100 "15200" "TANJUNG MALIM" "11:22:00" 2653 200 "15400" "KALUMPANG" "11:25:00"
181 "2970" "100_47300" 101.73722317629623 16.956203862716038 741 600 "42400" "GURUN" "15:52:00" 742 700 "43100" "Kobah" "16:01:00"
181 "2970" "100_47300" 102.92802202474316 22.30107143869435 745 1000 "44400" "ANAK BUKIT" "16:18:00" 746 1100 "45600" "KODIANG" "16:30:00"
226 "2914" "100_9000" 192.37731328722273 19.237731328722273 395 200 "8600" "TASEK" "17:04:00" 396 300 "8000" "CHEMOR" "17:09:00"
132 "weekend_2378" "KA15_KD19" 180.839763106356 15.069980258863 4476 3400 "15400" "KALUMPANG" "22:19:00" 4477 3500 "15200" "TANJUNG MALIM" "22:23:00"
225 "2912" "100_9000" 192.37731328722273 19.237731328722273 365 200 "8600" "TASEK" "15:04:00" 366 300 "8000" "CHEMOR" "15:09:00"
120 "weekend_2330" "KA15_KD19" 180.839763106356 15.069980258863 4047 3400 "15400" "KALUMPANG" "12:19:00" 4048 3500 "15200" "TANJUNG MALIM" "12:23:00"
33 "weekday_2130" "KA15_KD19" 180.839763106356 15.069980258863 2602 3400 "15400" "KALUMPANG" "12:19:00" 2603 3500 "15200" "TANJUNG MALIM" "12:23:00"
189 "2988" "100_47300" 101.73722317629623 16.956203862716038 937 600 "42400" "GURUN" "20:22:00" 938 700 "43100" "Kobah" "20:31:00"
189 "2988" "100_47300" 102.92802202474316 22.30107143869435 941 1000 "44400" "ANAK BUKIT" "20:48:00" 942 1100 "45600" "KODIANG" "21:00:00"
101 "weekend_2331" "KA15_KD19" 226.04970388294498 15.069980258863 4049 100 "15200" "TANJUNG MALIM" "09:27:00" 4050 200 "15400" "KALUMPANG" "09:30:00"
10 "weekday_2131" "KA15_KD19" 226.04970388294498 15.069980258863 2604 100 "15200" "TANJUNG MALIM" "09:27:00" 2605 200 "15400" "KALUMPANG" "09:30:00"
96 "weekend_2307" "KA15_KD19" 226.04970388294498 15.069980258863 3780 100 "15200" "TANJUNG MALIM" "06:02:00" 3781 200 "15400" "KALUMPANG" "06:05:00"
3 "weekday_2107" "KA15_KD19" 226.04970388294498 15.069980258863 2299 100 "15200" "TANJUNG MALIM" "06:02:00" 2300 200 "15400" "KALUMPANG" "06:05:00"
116 "weekend_2310" "KA15_KD19" 180.839763106356 15.069980258863 3829 3400 "15400" "KALUMPANG" "09:29:00" 3830 3500 "15200" "TANJUNG MALIM" "09:33:00"
29 "weekday_2110" "KA15_KD19" 180.839763106356 15.069980258863 2348 3400 "15400" "KALUMPANG" "09:29:00" 2349 3500 "15200" "TANJUNG MALIM" "09:33:00"
20 "weekday_2165" "KA15_KD19" 226.04970388294498 15.069980258863 2909 100 "15200" "TANJUNG MALIM" "17:02:00" 2910 200 "15400" "KALUMPANG" "17:05:00"
99 "weekend_2319" "KA15_KD19" 226.04970388294498 15.069980258863 3917 100 "15200" "TANJUNG MALIM" "07:32:00" 3918 200 "15400" "KALUMPANG" "07:35:00"
9 "weekday_2127" "KA15_KD19" 226.04970388294498 15.069980258863 2542 100 "15200" "TANJUNG MALIM" "08:32:00" 2543 200 "15400" "KALUMPANG" "08:35:00"
203 "2979" "100_47300" 102.92802202474316 22.30107143869435 823 400 "45600" "KODIANG" "17:30:00" 824 500 "44400" "ANAK BUKIT" "17:42:00"
203 "2979" "100_47300" 102.87805412759073 10.287805412759072 825 600 "44000" "Alor Star" "17:48:00" 826 700 "43500" "TOKAI" "17:53:00"
203 "2979" "100_47300" 101.73722317629623 16.956203862716038 827 800 "43100" "Kobah" "17:59:00" 828 900 "42400" "GURUN" "18:08:00"
104 "weekend_2343" "KA15_KD19" 226.04970388294498 15.069980258863 4129 100 "15200" "TANJUNG MALIM" "12:32:00" 4130 200 "15400" "KALUMPANG" "12:35:00"
13 "weekday_2143" "KA15_KD19" 226.04970388294498 15.069980258863 2684 100 "15200" "TANJUNG MALIM" "12:32:00" 2685 200 "15400" "KALUMPANG" "12:35:00"
221 "2904" "100_9000" 192.37731328722273 19.237731328722273 245 200 "8600" "TASEK" "06:29:00" 246 300 "8000" "CHEMOR" "06:34:00"
185 "2980" "100_47300" 101.73722317629623 16.956203862716038 839 600 "42400" "GURUN" "18:22:00" 840 700 "43100" "Kobah" "18:31:00"
185 "2980" "100_47300" 102.92802202474316 22.30107143869435 843 1000 "44400" "ANAK BUKIT" "18:48:00" 844 1100 "45600" "KODIANG" "19:00:00"
fast_travel_between_far_stops WARNING 129

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.

Only the first 50 of 129 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.
190 "2994" "100_47300" 101.73722317629623 16.956203862716038 965 600 "42400" "GURUN" "22:22:00" 966 700 "43100" "Kobah" "22:31:00"
5 "weekday_2111" "KA15_KD19" 226.04970388294498 15.069980258863 2350 100 "15200" "TANJUNG MALIM" "06:32:00" 2351 200 "15400" "KALUMPANG" "06:35:00"
213 "2909" "100_9000" 164.89483996047662 19.237731328722273 331 1300 "8000" "CHEMOR" "13:56:00" 332 1400 "8600" "TASEK" "14:02:00"
168 "weekend_2254" "KC05_KB18" 695.3851702678625 11.589752837797707 3640 1600 "19400" "SALAK SELATAN" "44:42:00" 3647 2300 "50000" "SENTUL" "21:18:00"
179 "2964" "100_47300" 101.73722317629623 16.956203862716038 685 600 "42400" "GURUN" "13:22:00" 686 700 "43100" "Kobah" "13:31:00"
211 "2905" "100_9000" 164.89483996047662 19.237731328722273 271 1300 "8000" "CHEMOR" "08:41:00" 272 1400 "8600" "TASEK" "08:47:00"
25 "weekday_2183" "KA15_KD19" 226.04970388294498 15.069980258863 3171 100 "15200" "TANJUNG MALIM" "20:32:00" 3172 200 "15400" "KALUMPANG" "20:35:00"
210 "2903" "100_9000" 164.89483996047662 19.237731328722273 241 1300 "8000" "CHEMOR" "07:41:00" 242 1400 "8600" "TASEK" "07:47:00"
177 "2952" "100_47300" 101.73722317629623 16.956203862716038 615 600 "42400" "GURUN" "09:22:00" 616 700 "43100" "Kobah" "09:31:00"
224 "2910" "100_9000" 192.37731328722273 19.237731328722273 335 200 "8600" "TASEK" "13:04:00" 336 300 "8000" "CHEMOR" "13:09:00"
216 "2915" "100_9000" 164.89483996047662 19.237731328722273 421 1300 "8000" "CHEMOR" "19:21:00" 422 1400 "8600" "TASEK" "19:27:00"
229 "35" "SH" 2794.6937065962243 232.89114221635202 1026 1600 "64400" "Triang" "15:05:00" 1027 1700 "64100" "Mengkuang" "15:09:00"
214 "2911" "100_9000" 164.89483996047662 19.237731328722273 361 1300 "8000" "CHEMOR" "15:51:00" 362 1400 "8600" "TASEK" "15:57:00"
103 "weekend_2339" "KA15_KD19" 226.04970388294498 15.069980258863 4097 100 "15200" "TANJUNG MALIM" "11:22:00" 4098 200 "15400" "KALUMPANG" "11:25:00"
12 "weekday_2139" "KA15_KD19" 226.04970388294498 15.069980258863 2652 100 "15200" "TANJUNG MALIM" "11:22:00" 2653 200 "15400" "KALUMPANG" "11:25:00"
181 "2970" "100_47300" 101.73722317629623 16.956203862716038 741 600 "42400" "GURUN" "15:52:00" 742 700 "43100" "Kobah" "16:01:00"
226 "2914" "100_9000" 192.37731328722273 19.237731328722273 395 200 "8600" "TASEK" "17:04:00" 396 300 "8000" "CHEMOR" "17:09:00"
132 "weekend_2378" "KA15_KD19" 180.839763106356 15.069980258863 4476 3400 "15400" "KALUMPANG" "22:19:00" 4477 3500 "15200" "TANJUNG MALIM" "22:23:00"
225 "2912" "100_9000" 192.37731328722273 19.237731328722273 365 200 "8600" "TASEK" "15:04:00" 366 300 "8000" "CHEMOR" "15:09:00"
120 "weekend_2330" "KA15_KD19" 180.839763106356 15.069980258863 4047 3400 "15400" "KALUMPANG" "12:19:00" 4048 3500 "15200" "TANJUNG MALIM" "12:23:00"
33 "weekday_2130" "KA15_KD19" 180.839763106356 15.069980258863 2602 3400 "15400" "KALUMPANG" "12:19:00" 2603 3500 "15200" "TANJUNG MALIM" "12:23:00"
189 "2988" "100_47300" 101.73722317629623 16.956203862716038 937 600 "42400" "GURUN" "20:22:00" 938 700 "43100" "Kobah" "20:31:00"
101 "weekend_2331" "KA15_KD19" 226.04970388294498 15.069980258863 4049 100 "15200" "TANJUNG MALIM" "09:27:00" 4050 200 "15400" "KALUMPANG" "09:30:00"
10 "weekday_2131" "KA15_KD19" 226.04970388294498 15.069980258863 2604 100 "15200" "TANJUNG MALIM" "09:27:00" 2605 200 "15400" "KALUMPANG" "09:30:00"
96 "weekend_2307" "KA15_KD19" 226.04970388294498 15.069980258863 3780 100 "15200" "TANJUNG MALIM" "06:02:00" 3781 200 "15400" "KALUMPANG" "06:05:00"
3 "weekday_2107" "KA15_KD19" 226.04970388294498 15.069980258863 2299 100 "15200" "TANJUNG MALIM" "06:02:00" 2300 200 "15400" "KALUMPANG" "06:05:00"
116 "weekend_2310" "KA15_KD19" 180.839763106356 15.069980258863 3829 3400 "15400" "KALUMPANG" "09:29:00" 3830 3500 "15200" "TANJUNG MALIM" "09:33:00"
29 "weekday_2110" "KA15_KD19" 180.839763106356 15.069980258863 2348 3400 "15400" "KALUMPANG" "09:29:00" 2349 3500 "15200" "TANJUNG MALIM" "09:33:00"
20 "weekday_2165" "KA15_KD19" 226.04970388294498 15.069980258863 2909 100 "15200" "TANJUNG MALIM" "17:02:00" 2910 200 "15400" "KALUMPANG" "17:05:00"
99 "weekend_2319" "KA15_KD19" 226.04970388294498 15.069980258863 3917 100 "15200" "TANJUNG MALIM" "07:32:00" 3918 200 "15400" "KALUMPANG" "07:35:00"
9 "weekday_2127" "KA15_KD19" 226.04970388294498 15.069980258863 2542 100 "15200" "TANJUNG MALIM" "08:32:00" 2543 200 "15400" "KALUMPANG" "08:35:00"
203 "2979" "100_47300" 102.92802202474316 22.30107143869435 823 400 "45600" "KODIANG" "17:30:00" 824 500 "44400" "ANAK BUKIT" "17:42:00"
104 "weekend_2343" "KA15_KD19" 226.04970388294498 15.069980258863 4129 100 "15200" "TANJUNG MALIM" "12:32:00" 4130 200 "15400" "KALUMPANG" "12:35:00"
13 "weekday_2143" "KA15_KD19" 226.04970388294498 15.069980258863 2684 100 "15200" "TANJUNG MALIM" "12:32:00" 2685 200 "15400" "KALUMPANG" "12:35:00"
221 "2904" "100_9000" 192.37731328722273 19.237731328722273 245 200 "8600" "TASEK" "06:29:00" 246 300 "8000" "CHEMOR" "06:34:00"
185 "2980" "100_47300" 101.73722317629623 16.956203862716038 839 600 "42400" "GURUN" "18:22:00" 840 700 "43100" "Kobah" "18:31:00"
187 "2984" "100_47300" 101.73722317629623 16.956203862716038 881 600 "42400" "GURUN" "19:27:00" 882 700 "43100" "Kobah" "19:36:00"
173 "2940" "100_47300" 101.73722317629623 16.956203862716038 489 600 "42400" "GURUN" "06:07:00" 490 700 "43100" "Kobah" "06:16:00"
183 "2976" "100_47300" 101.73722317629623 16.956203862716038 797 600 "42400" "GURUN" "17:22:00" 798 700 "43100" "Kobah" "17:31:00"
124 "weekend_2346" "KA15_KD19" 811.9599636113395 13.53266606018899 4152 800 "18500" "SUNGAI BULUH" "38:47:00" 4154 1000 "17800" "RAWANG" "15:02:00"
26 "weekday_2102" "KA15_KD19" 180.839763106356 15.069980258863 2261 1500 "15400" "KALUMPANG" "08:19:00" 2262 1600 "15200" "TANJUNG MALIM" "08:23:00"
24 "weekday_2179" "KA15_KD19" 226.04970388294498 15.069980258863 3101 100 "15200" "TANJUNG MALIM" "19:32:00" 3102 200 "15400" "KALUMPANG" "19:35:00"
192 "2943" "100_47300" 102.92802202474316 22.30107143869435 515 400 "45600" "KODIANG" "06:05:00" 516 500 "44400" "ANAK BUKIT" "06:17:00"
100 "weekend_2327" "KA15_KD19" 226.04970388294498 15.069980258863 3987 100 "15200" "TANJUNG MALIM" "08:32:00" 3988 200 "15400" "KALUMPANG" "08:35:00"
118 "weekend_2318" "KA15_KD19" 180.839763106356 15.069980258863 3915 3400 "15400" "KALUMPANG" "10:24:00" 3916 3500 "15200" "TANJUNG MALIM" "10:28:00"
31 "weekday_2118" "KA15_KD19" 180.839763106356 15.069980258863 2470 3400 "15400" "KALUMPANG" "10:24:00" 2471 3500 "15200" "TANJUNG MALIM" "10:28:00"
207 "2991" "100_47300" 102.92802202474316 22.30107143869435 949 400 "45600" "KODIANG" "20:00:00" 950 500 "44400" "ANAK BUKIT" "20:12:00"
114 "weekend_2383" "KA15_KD19" 226.04970388294498 15.069980258863 4548 100 "15200" "TANJUNG MALIM" "20:32:00" 4549 200 "15400" "KALUMPANG" "20:35:00"
17 "weekday_2157" "KA15_KD19" 226.04970388294498 15.069980258863 2815 100 "15200" "TANJUNG MALIM" "16:02:00" 2816 200 "15400" "KALUMPANG" "16:05:00"
23 "weekday_2175" "KA15_KD19" 226.04970388294498 15.069980258863 3031 100 "15200" "TANJUNG MALIM" "18:32:00" 3032 200 "15400" "KALUMPANG" "18:35: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 47

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" "BATU CAVES" 3
"stops.txt" "stop_name" "PADANG BESAR" 7
"stops.txt" "stop_name" "SETIA JAYA" 11
"stops.txt" "stop_name" "SUBANG JAYA" 12
"stops.txt" "stop_name" "BUKIT TENGAH" 14
"stops.txt" "stop_name" "BUKIT MERTAJAM" 15
"stops.txt" "stop_name" "PADANG RENGAS" 16
"stops.txt" "stop_name" "SUNGAI SIPUT" 18
"stops.txt" "stop_name" "PARIT BUNTAR" 22
"stops.txt" "stop_name" "BAGAN SERAI" 23
"stops.txt" "stop_name" "SIMPANG AMPAT" 24
"stops.txt" "stop_name" "BUKIT MERAH" 25
"stops.txt" "stop_name" "BUKIT KATRI" 33
"stops.txt" "stop_name" "HOLIDAY PLAZA" 35
"stops.txt" "stop_name" "TASEK GELUGOR" 38
"stops.txt" "stop_name" "SUNGAI PETANI" 39
"stops.txt" "stop_name" "JB SENTRAL" 40
"stops.txt" "stop_name" "PADANG PIOL" 43
"stops.txt" "stop_name" "SUNGAI LIK" 46
"stops.txt" "stop_name" "KUALA LIPIS" 51
"stops.txt" "stop_name" "BATU GAJAH" 54
"stops.txt" "stop_name" "KOTA BHARU (PK)" 55
"stops.txt" "stop_name" "SLIM RIVER" 58
"stops.txt" "stop_name" "TANJUNG MALIM" 60
"stops.txt" "stop_name" "TAPAH ROAD" 63
"stops.txt" "stop_name" "KUALA KUBU BARU" 64
"stops.txt" "stop_name" "SUNGAI BULUH" 65
"stops.txt" "stop_name" "KUALA LUMPUR" 70
"stops.txt" "stop_name" "KL SENTRAL" 72
"stops.txt" "stop_name" "SALAK SELATAN" 74
"stops.txt" "stop_name" "BANDAR TASEK (S)" 75
"stops.txt" "stop_name" "BATANG BENAR" 80
"stops.txt" "stop_name" "BATU TIGA" 113
"stops.txt" "stop_name" "SHAH ALAM" 114
"stops.txt" "stop_name" "PADANG JAWA" 115
"stops.txt" "stop_name" "JALAN KASTAM" 116
"stops.txt" "stop_name" "PEL. KLANG (S)" 117
"stops.txt" "stop_name" "PULAU INDAH" 121
"stops.txt" "stop_name" "BATANG KALI" 131
"stops.txt" "stop_name" "SUNGAI GADUT" 133
"stops.txt" "stop_name" "ANAK BUKIT" 135
"stops.txt" "stop_name" "SUNGAI DALAM" 151
"stops.txt" "stop_name" "DANGA CITY MALL" 154
"stops.txt" "stop_name" "KG TELANG" 157
"stops.txt" "stop_name" "KUBANG RUSA" 163
"stops.txt" "stop_name" "LAPAN TUPAI" 167
"stops.txt" "stop_name" "ABDULLAH HUKUM" 190
route_short_name_too_long WARNING 3

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`.
"KC05_KB18" 2 "Seremban Line"
"KA15_KD19" 3 "Port Klang Line"
"100_47300" 4 "Padang Besar Line"
stop_without_stop_time WARNING 8

stop_without_stop_time

A stop in stops.txt is not referenced by any stop_times.stop_id.

Such stops are not used by any trip and normally do not provide user value. This notice may indicate a typo in stop_times.txt.

You can see more about this notice here.

csvRowNumber (?) The row number of the faulty record. stopId (?) The id of the faulty stop. stopName (?) The name of the faulty stop.
13 "36700" "Skudai"
25 "3300" "BUKIT MERAH"
31 "44900" "Kodiang"
88 "26400" "Batang Melaka"
105 "37100" "Pasir gudang"
121 "55500" "PULAU INDAH"
128 "39600" "Gelang Patah"
129 "39700" "Tanjung Pelepas"
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.
"20260203" "20250207" "20260203"
unusable_trip WARNING 67

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.

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

csvRowNumber (?) The row number of the faulty record. tripId (?) The faulty record's id.
4 "weekday_2109"
18 "weekday_2159"
28 "weekday_2108"
34 "weekday_2134"
41 "weekday_2160"
43 "weekday_2164"
45 "weekday_2170"
56 "weekday_2021"
57 "weekday_2025"
61 "weekday_2039"
65 "weekday_2603"
66 "weekday_2057"
68 "weekday_2061"
71 "weekday_2071"
74 "weekday_2602"
80 "weekday_2018"
82 "weekday_2024"
84 "weekday_2032"
85 "weekday_2036"
94 "weekday_2070"
108 "weekend_2359"
110 "weekend_2367"
115 "weekend_2302"
117 "weekend_2316"
121 "weekend_2334"
127 "weekend_2358"
130 "weekend_2370"
140 "weekend_2225"
141 "weekend_2229"
147 "weekend_2253"
148 "weekend_2257"
150 "weekend_2261"
151 "weekend_2265"
152 "weekend_2271"
154 "weekend_2208"
155 "weekend_2210"
160 "weekend_2224"
162 "weekend_2232"
163 "weekend_2236"
167 "weekend_2250"
172 "weekend_2270"
232 "37"
242 "36"
245 "41"
246 "43"
247 "45"
248 "42"
249 "44"
250 "46"
282 "9051"
unused_trip WARNING 67

unused_trip

Trip is not be used in stop_times.txt

Trips should be referred to at least once in stop_times.txt.

You can see more about this notice here.

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

tripId (?) The faulty record's id. csvRowNumber (?) The row number of the faulty record.
"weekday_2109" 4
"weekday_2159" 18
"weekday_2108" 28
"weekday_2134" 34
"weekday_2160" 41
"weekday_2164" 43
"weekday_2170" 45
"weekday_2021" 56
"weekday_2025" 57
"weekday_2039" 61
"weekday_2603" 65
"weekday_2057" 66
"weekday_2061" 68
"weekday_2071" 71
"weekday_2602" 74
"weekday_2018" 80
"weekday_2024" 82
"weekday_2032" 84
"weekday_2036" 85
"weekday_2070" 94
"weekend_2359" 108
"weekend_2367" 110
"weekend_2302" 115
"weekend_2316" 117
"weekend_2334" 121
"weekend_2358" 127
"weekend_2370" 130
"weekend_2225" 140
"weekend_2229" 141
"weekend_2253" 147
"weekend_2257" 148
"weekend_2261" 150
"weekend_2265" 151
"weekend_2271" 152
"weekend_2208" 154
"weekend_2210" 155
"weekend_2224" 160
"weekend_2232" 162
"weekend_2236" 163
"weekend_2250" 167
"weekend_2270" 172
"37" 232
"36" 242
"41" 245
"43" 246
"45" 247
"42" 248
"44" 249
"46" 250
"9051" 282