GTFS Schedule Validation Report

This report was generated by the Canonical GTFS Schedule validator, version 7.1.0 at 2026-02-03T17:41:13Z,
for the dataset file:///shared/myrapidkl_b14138d2.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. fare_attributes.txt
  5. fare_rules.txt
  6. frequencies.txt
  7. routes.txt
  8. shapes.txt
  9. stop_times.txt
  10. stops.txt
  11. trips.txt

Counts


  • Agencies: 1
  • Blocks: 0
  • Routes: 189
  • Shapes: 137
  • Stops: 4342
  • Trips: 1141

Specification Compliance report

4870 notices reported (6 errors, 4864 warnings, 0 infos)

Notice Code Severity Total
foreign_key_violation ERROR 6

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" "4522" 29549
"stop_times.txt" "stop_id" "stops.txt" "stop_id" "4522" 29550
"stop_times.txt" "stop_id" "stops.txt" "stop_id" "4522" 29551
"stop_times.txt" "stop_id" "stops.txt" "stop_id" "4522" 29552
"stop_times.txt" "stop_id" "stops.txt" "stop_id" "4522" 29553
"stop_times.txt" "stop_id" "stops.txt" "stop_id" "4522" 29554
expired_calendar WARNING 5

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 "MONFRI"
3 "MONTHR"
4 "FRI"
5 "SAT"
6 "SUN"
leading_or_trailing_whitespaces WARNING 11

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" 52 "route_long_name" " Sri Muda"
"routes.txt" 66 "route_desc" "From Stesen LRT Asia Jaya to Sek 14, Sek 17 "
"routes.txt" 129 "route_long_name" " Bandar Utama"
"routes.txt" 173 "route_long_name" " Bandar Utama"
"routes.txt" 181 "route_desc" "From Stesen LRT Asia Jaya to Sek 14, Sek 17 "
"trips.txt" 629 "trip_headsign" " Bandar Utama"
"trips.txt" 630 "trip_headsign" " Bandar Utama"
"trips.txt" 631 "trip_headsign" " Bandar Utama"
"trips.txt" 680 "trip_headsign" "Sek 14, Sek 17 "
"trips.txt" 681 "trip_headsign" "Sek 14, Sek 17 "
"trips.txt" 682 "trip_headsign" "Sek 14, Sek 17 "
missing_recommended_field WARNING 1262

missing_recommended_field

A recommended field is missing.

The given field has no value in some input row, even though values are recommended.

You can see more about this notice here.

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

filename (?) The name of the faulty file. csvRowNumber (?) The row of the faulty record. fieldName (?) The name of the missing field.
"fare_attributes.txt" 2 "agency_id"
"fare_attributes.txt" 3 "agency_id"
"fare_attributes.txt" 4 "agency_id"
"fare_attributes.txt" 5 "agency_id"
"fare_attributes.txt" 6 "agency_id"
"fare_attributes.txt" 7 "agency_id"
"fare_attributes.txt" 8 "agency_id"
"fare_attributes.txt" 9 "agency_id"
"fare_attributes.txt" 10 "agency_id"
"fare_attributes.txt" 11 "agency_id"
"fare_attributes.txt" 12 "agency_id"
"fare_attributes.txt" 13 "agency_id"
"fare_attributes.txt" 14 "agency_id"
"fare_attributes.txt" 15 "agency_id"
"fare_attributes.txt" 16 "agency_id"
"fare_attributes.txt" 17 "agency_id"
"fare_attributes.txt" 18 "agency_id"
"fare_attributes.txt" 19 "agency_id"
"fare_attributes.txt" 20 "agency_id"
"fare_attributes.txt" 21 "agency_id"
"fare_attributes.txt" 22 "agency_id"
"fare_attributes.txt" 23 "agency_id"
"fare_attributes.txt" 24 "agency_id"
"fare_attributes.txt" 25 "agency_id"
"fare_attributes.txt" 26 "agency_id"
"fare_attributes.txt" 27 "agency_id"
"fare_attributes.txt" 28 "agency_id"
"fare_attributes.txt" 29 "agency_id"
"fare_attributes.txt" 30 "agency_id"
"fare_attributes.txt" 31 "agency_id"
"fare_attributes.txt" 32 "agency_id"
"fare_attributes.txt" 33 "agency_id"
"fare_attributes.txt" 34 "agency_id"
"fare_attributes.txt" 35 "agency_id"
"fare_attributes.txt" 36 "agency_id"
"fare_attributes.txt" 37 "agency_id"
"fare_attributes.txt" 38 "agency_id"
"fare_attributes.txt" 39 "agency_id"
"fare_attributes.txt" 40 "agency_id"
"fare_attributes.txt" 41 "agency_id"
"fare_attributes.txt" 42 "agency_id"
"fare_attributes.txt" 43 "agency_id"
"fare_attributes.txt" 44 "agency_id"
"fare_attributes.txt" 45 "agency_id"
"fare_attributes.txt" 46 "agency_id"
"fare_attributes.txt" 47 "agency_id"
"fare_attributes.txt" 48 "agency_id"
"fare_attributes.txt" 49 "agency_id"
"fare_attributes.txt" 50 "agency_id"
"fare_attributes.txt" 51 "agency_id"
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 12

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_long_name" "BANDAR KINRARA" 43
"stops.txt" "stop_name" "TESCO, MRR2" 949
"stops.txt" "stop_name" "KJMC, LDP" 2376
"stops.txt" "stop_name" "SDS KEB PKAYAR" 3105
"stops.txt" "stop_name" "KLCC LRT" 4119
"stops.txt" "stop_name" "PWTC LRT" 4153
"trips.txt" "trip_headsign" "SS6, SS5, SS3" 662
"trips.txt" "trip_headsign" "SS6, SS5, SS3" 663
"trips.txt" "trip_headsign" "SS6, SS5, SS3" 664
"trips.txt" "trip_headsign" "HUKM via LRT BTS" 776
"trips.txt" "trip_headsign" "HUKM via LRT BTS" 777
"trips.txt" "trip_headsign" "HUKM via LRT BTS" 778
single_shape_point WARNING 8

single_shape_point

The shape within shapes.txt contains a single shape point.

A shape should contain more than one shape point to visualize the route

You can see more about this notice here.

shapeId (?) The faulty record's id. csvRowNumber (?) The row number of the faulty record.
"117" 958
"118" 959
"139" 1245
"140" 1246
"158" 1247
"159" 1248
"28363" 4411
"28364" 4412
stop_too_far_from_shape WARNING 3564

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.

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

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.
548 "192" "MONFRI192" 16340 "1944" "Terminal PJ Old Town, Jalan Othman" [3.098619,101.67044000000001] 2888.5180788143875
548 "192" "MONFRI192" 16343 "1945" "Mahkamah Syariah, Jalan Othman" [3.098619,101.67044000000001] 2544.0630464547453
548 "192" "MONFRI192" 16346 "2324" "Simpang Jalan 5/55, Jalan 5/46" [3.098619,101.67044000000001] 1965.5324889078854
548 "192" "MONFRI192" 16349 "2325" "Simpang Jalan 5/61, Jalan 5/46" [3.098619,101.67044000000001] 1824.3380248511842
548 "192" "MONFRI192" 16352 "2326" "Tadika Minda, Jalan 5/46" [3.098619,101.67044000000001] 1671.0299476452954
548 "192" "MONFRI192" 16355 "2327" "Petronas Gasing Indah (opp.), Jalan 5/46" [3.098619,101.67044000000001] 1500.8670754057705
548 "192" "MONFRI192" 16358 "2328" "Dewan UMNO, Kampung Pasir, Jalan 5/46" [3.098619,101.67044000000001] 1415.952989457901
548 "192" "MONFRI192" 16361 "2329" "Rumah Teres Gasing Indah, Jalan 1/32" [3.098619,101.67044000000001] 1279.3723816024692
548 "192" "MONFRI192" 16364 "2330" "Pantai Dalam 22, Jalan Pantai Dalam" [3.098619,101.67044000000001] 942.7372788520388
548 "192" "MONFRI192" 16367 "2331" "Klinik Kesihatan, Jalan Pantai Dalam" [3.098619,101.67044000000001] 524.0588067607147
548 "192" "MONFRI192" 16370 "2332" "Selepas Pasar, Jalan Pantai Dalam" [3.098619,101.67044000000001] 359.70976166180566
548 "192" "MONFRI192" 16379 "1484" "Angkasapuri, Lebuhraya NPE" [3.10754,101.673233] 556.7652084711937
548 "192" "MONFRI192" 16382 "2317" "Kuarters TNB, Lebuhraya NPE" [3.10754,101.673233] 1003.1120713433104
548 "192" "MONFRI192" 16385 "1846" "Klinik TNB, Jalan Bangsar" [3.10754,101.673233] 1205.6050178248693
548 "192" "MONFRI192" 16388 "1848" "Stor TNB, Jalan Bangsar" [3.10754,101.673233] 1446.790013104177
548 "192" "MONFRI192" 16391 "1485" "NSTP, Jalan Bangsar" [3.10754,101.673233] 1790.148446688549
548 "192" "MONFRI192" 16394 "1486" "Stesen LRT Bangsar, Jalan Bangsar" [3.10754,101.673233] 2319.8814826827165
548 "192" "MONFRI192" 16397 "51" "Sri Kota (opp.), Jalan Travers" [3.10754,101.673233] 2815.1950734662855
548 "192" "MONFRI192" 16400 "1487" "KL Sentral, Jalan Tun Sambanthan" [3.10754,101.673233] 3289.5848630609485
548 "192" "MONFRI192" 16403 "2" "Petronas (opp.), Jalan Tun Sambanthan" [3.10754,101.673233] 3633.5599600377723
548 "192" "MONFRI192" 16406 "4" "Central Market, Jalan Tun Tan Cheng Lock" [3.10754,101.673233] 4768.882184237778
548 "192" "MONFRI192" 16409 "4364" "Jalan Tun Tan Cheng Lock (Restoran)" [3.10754,101.673233] 4963.3959249031695
548 "192" "MONFRI192" 16412 "1488" "Kota Raya, Jalan Petaling" [3.10754,101.673233] 4993.941705600172
548 "192" "MONFRI192" 16415 "4365" "Jalan Tun H. S. Lee (Tokong Cina)" [3.10754,101.673233] 4949.548786361556
548 "192" "MONFRI192" 16418 "4366" "Jalan Tun H. S. Lee (Kuil Hindu)" [3.10754,101.673233] 4736.73828962975
548 "192" "MONFRI192" 16421 "1792" "HAB Pasar Seni, Platform C" [3.10754,101.673233] 4594.076438294399
557 "195" "MONFRI195" 16634 "366" "HSBC, Medan Pasar" [3.1492509999999996,101.696569] 195.98791140994314
557 "195" "MONFRI195" 16643 "531" "DBKL, Jalan Raja Laut" [3.1538247956463445,101.69377374837006] 100.77740400303779
557 "195" "MONFRI195" 16661 "416" "Tan Chong Motor, Jalan Ipoh" [3.168767003955909,101.69492345801146] 113.6463518937451
557 "195" "MONFRI195" 16670 "474" "Hotel Mesra Inn, Jalan Ipoh" [3.174789155190265,101.69102307669918] 114.90674059287714
557 "195" "MONFRI195" 16673 "475" "Kuil Hindu, Jalan Ipoh" [3.17727360356219,101.68941395197353] 206.11980139162472
557 "195" "MONFRI195" 16676 "476" "Mobil, Jalan Ipoh" [3.179742524667812,101.68781487465158] 294.56239948811503
557 "195" "MONFRI195" 16679 "477" "HSBC / Perodua, Jalan Ipoh" [3.182204399269474,101.68622035201061] 433.9816783971697
557 "195" "MONFRI195" 16682 "478" "Kompleks Batu, Jalan Ipoh" [3.1857632002964626,101.68391534878364] 384.79578518784047
557 "195" "MONFRI195" 16685 "479" "SMK ( P ) Jalan Ipoh, Jalan Ipoh" [3.188042060849665,101.68243934130207] 112.42875998103479
557 "195" "MONFRI195" 16691 "481" "Taman Bamboo, Jalan Ipoh" [3.1943906612405857,101.67832734036004] 162.44771653103334
557 "195" "MONFRI195" 16694 "482" "Kompleks Mikasa, Jalan Ipoh" [3.1972498622536834,101.67647541017226] 251.68336109178117
557 "195" "MONFRI195" 16697 "483" "Wisma Haji Pilus, Jalan Ipoh" [3.2006205288113483,101.6742921831212] 273.66053841268905
557 "195" "MONFRI195" 16703 "2267" "Taman Wahyu, Jalan Ipoh" [3.2118436779229755,101.66702266991096] 617.2176279432942
557 "195" "MONFRI195" 16706 "2268" "Tesco Extra Selayang, Jalan Ipoh" [3.2171781851012575,101.66356730903672] 1075.7771311656409
557 "195" "MONFRI195" 16709 "1822" "Warta Lama (opp.), Jalan Ipoh" [3.2263877961482823,101.6576017947257] 1819.1310654172862
557 "195" "MONFRI195" 16712 "2359" "Kedai Tomyam Yanti Pasar Borong" [3.2308758812779974,101.65469459571392] 1093.8437346120224
557 "195" "MONFRI195" 16715 "2360" "Taman Sri Murni Fasa 1, Jalan 1/2B" [3.230756730825413,101.65477177693262] 863.1107676934067
557 "195" "MONFRI195" 16718 "2361" "Masjid Al Zakiran, Jalan 13/2A" [3.2332525252302893,101.65315508983545] 915.1594649057076
557 "195" "MONFRI195" 16721 "2362" "Restoran Maju, Jalan 13/2A" [3.2338924685408266,101.6527405557064] 1108.2581379589872
557 "195" "MONFRI195" 16724 "2363" "Taman Wilayah (1), Jalan 9/2B" [3.236201559905359,101.65124479736598] 954.4632916543658
557 "195" "MONFRI195" 16727 "2364" "Taman Sri Melati (opp.), Jalan Melati 1" [3.2367063109056584,101.65091783410043] 933.8332262345698
557 "195" "MONFRI195" 16730 "2365" "Maybank (1), Taman Selayang Jaya 14" [3.236821558143425,101.65084318017986] 198.2944301930425
557 "195" "MONFRI195" 16733 "2366" "Rumah No. 51, Jalan Selayang Jaya 24" [3.2378400410238135,101.65018343471071] 277.04243909760766
557 "195" "MONFRI195" 16736 "2367" "Taman Selayang Jaya (1), Jalan SJ 27" [3.2383573195124846,101.64984835518074] 371.6960574495677
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" "20100101" "20200101"