This tool is designed to assist you in testing the compliance of a dataset against the GTFS (General Transit Feed Specification) Schedule Reference and the GTFS Schedule Best Practices.
This validator generates a list of notices, each associated with a severity level, allowing you to identify and address potential issues in your dataset. This documentation will provide a detailed overview of the rules that the validator evaluates, and ways in which the dataset can be fixed if the notice is present.
Each notice generated by the this validator is associated with a severity level: INFO, WARNING, or ERROR. Understanding these severities helps in assessing the impact and urgency of addressing the identified issues.
ERROR notices correspond to GTFS Schedule Reference violations. These violations represent items explicitly required or prohibited by the GTFS Schedule Reference, denoted by the use of the terms “Required” or “must.” Errors signify critical discrepancies that must be resolved to ensure compliance with the GTFS standard.
WARNING notices correspond to GTFS Schedule Best Practices. These recommendations are either explicitly suggested by the GTFS Schedule Reference, using the term “recommend” or “should,” or mentioned in the official GTFS Schedule Best Practices. Although not mandatory, addressing these warnings can significantly improve the quality of the data and the rider’s experience.
INFO notices highlight items that may affect the overall quality of the feed. These notices identify unexpected findings that warrant the user’s attention.
Notice code | Description |
---|---|
bidirectional_exit_gate
|
Pathway is bidirectional and has mode 7 (exit gate). Exit gates (pathway_mode=7) must not be bidirectional. |
block_trips_with_overlapping_stop_times
|
Trips with the same block id have overlapping stop times. |
csv_parsing_failed
|
Parsing of a CSV file failed. One common case of the problem is when a cell value contains more than 4096 characters. |
decreasing_or_equal_stop_time_distance
|
Decreasing or equal When sorted by |
decreasing_shape_distance
|
Decreasing When sorted by |
duplicate_key
|
Duplicated entity. The values of the given key and rows are duplicates. |
duplicated_column
|
Duplicated column in CSV. The input file CSV header has the same column name repeated. |
empty_column_name
|
A column name is empty. Such columns are skipped by the validator. |
empty_file
|
A CSV file is empty. Empty csv file found in the archive: file does not have any headers, or is a required file and does not have any data. The GTFS specification requires the first line of each file to contain field names and required files must have data. |
equal_shape_distance_diff_coordinates
|
Two consecutive points have equal When sorted by |
fare_transfer_rule_duration_limit_type_without_duration_limit
|
A row from GTFS file |
fare_transfer_rule_duration_limit_without_type
|
A row from GTFS file |
fare_transfer_rule_invalid_transfer_count
|
A row from GTFS file |
fare_transfer_rule_missing_transfer_count
|
A row from Per the spec, |
fare_transfer_rule_with_forbidden_transfer_count
|
A row from Per the spec, |
forbidden_geography_id
|
A stop_time entry has more than one geographical id defined. In stop_times.txt, you can have only one of stop_id, location_group_id or location_id defined for given entry. |
forbidden_prior_day_booking_field_value
|
A forbidden field value is present for a prior-day booking rule in |
forbidden_prior_notice_start_day
|
|
forbidden_prior_notice_start_time
|
|
forbidden_real_time_booking_field_value
|
A forbidden field value is present for a real-time booking rule in |
forbidden_same_day_booking_field_value
|
A forbidden field value is present for a same-day booking rule in |
forbidden_shape_dist_traveled
|
A stop_time entry has a A GeoJSON location or location group has an associated shape_dist_traveled field in stop_times.txt. shape_dist_traveled values should only be provided for stops. |
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. |
i_o_error
|
Error in IO operation. |
inconsistent_agency_timezone
|
Inconsistent Timezone among agencies. Agencies from GTFS |
invalid_character
|
This field contains invalid characters, such as the replacement character ("�"). Check that text was properly encoded in UTF-8 as required by GTFS. |
invalid_color
|
A field contains an invalid color value. A color must be encoded as a six-digit hexadecimal number. The leading "#" is not included. Example: |
invalid_currency
|
A field contains a wrong currency code. Currency code must follow ISO 4217 Example: |
invalid_currency_amount
|
A currency amount field has a value that does not match the format of its corresponding currency code field. Typically, this means the amount did not have the expected number of decimal places. The number of decimal places is specified by ISO 4217. @see org.mobilitydata.gtfsvalidator.annotation.CurrencyAmount |
invalid_date
|
A field cannot be parsed as date. Dates must have the YYYYMMDD format. Example: |
invalid_email
|
A field contains a malformed email address. Definitions for valid emails are quite vague. We perform strict validation using the Apache Commons EmailValidator. |
invalid_float
|
A field cannot be parsed as a floating point number. |
invalid_geometry
|
A polygon in Each polygon must be valid by the definition of the OpenGIS Simple Features Specification, section 6.1.11 . |
invalid_input_files_in_subfolder
|
At least 1 GTFS file is in a subfolder. All GTFS files must reside at the root level directly. |
invalid_integer
|
A field cannot be parsed as an integer. |
invalid_language_code
|
A field contains a wrong language code. Language codes must follow IETF BCP 47. Example: |
invalid_phone_number
|
A field contains a malformed phone number. This rule uses the PhoneNumberUtil class to validate a phone number based on a country code. If no country code is provided in the parameters used to run the validator, this notice won't be emitted. |
invalid_prior_notice_duration_min
|
An invalid The |
invalid_row_length
|
Invalid csv row length. A row in the input file has a different number of values than specified by the CSV header. |
invalid_time
|
A field cannot be parsed as time. Time must be in the Example: |
invalid_timezone
|
A field cannot be parsed as a timezone. Timezones are defined at www.iana.org. Timezone names never contain the space character but may contain an underscore. Refer to Wikipedia for a list of valid values. Example: |
invalid_url
|
A field contains a malformed URL. Definitions for valid URLs are quite vague. We perform strict validation using the Apache Commons UrlValidator. |
location_with_unexpected_stop_time
|
A location in Referenced locations (using |
location_without_parent_station
|
A location that must have The following location types must have |
malformed_json
|
A JSON file is malformed. |
missing_calendar_and_calendar_date_files
|
Missing GTFS files At least one of the files must be provided. |
missing_level_id
|
GTFS file |
missing_prior_day_booking_field_value
|
|
missing_prior_notice_duration_min
|
|
missing_prior_notice_start_time
|
|
missing_required_column
|
A required column is missing in the input file. |
missing_required_element
|
A required element is missing in |
missing_required_field
|
A required field is missing. The given field has no value in some input row, even though values are required. |
missing_required_file
|
A required file is missing. If this notice is triggered for every core file, it might be a problem with the input. To
create a zip file from the GTFS |
missing_stop_name
|
|
missing_trip_edge
|
Missing trip edge First and last stop of a trip must define both |
new_line_in_value
|
New line or carriage return in a value in CSV file. This error is usually found when the CSV file does not close double quotes properly, so the next line is considered as a continuation of the previous line. Example: the following file was intended to have fields "f11", "f12", "f21", "f22", but it actually parses as two fields: "f11", "f12\nf21,"f22"".
|
number_out_of_range
|
Out of range value. The values in the given column of the input rows are out of range. |
overlapping_frequency
|
Trip frequencies overlap. Trip frequencies must not overlap in time. Two entries X and Y are considered to directly
overlap if |
pathway_to_platform_with_boarding_areas
|
A pathway has an endpoint that is a platform which has boarding areas. A platform that has boarding areas is treated as a parent object, not a point. In such cases, the platform must not have pathways assigned - instead, pathways must be assigned to its boarding areas. |
pathway_to_wrong_location_type
|
A pathway has an endpoint that is a station. Pathways endpoints must be platforms (stops), entrances/exits, generic nodes or boarding areas. |
pathway_unreachable_location
|
A location is not reachable at least in one direction: from the entrances or to the exits. Notices are reported for platforms, boarding areas and generic nodes but not for entrances or stations. Notices are not reported for platforms that have boarding areas since such platforms may not have incident pathways. Instead, notices are reported for the boarding areas. |
point_near_origin
|
A point is too close to origin |
point_near_pole
|
A point is too close to the North or South Pole. |
prior_notice_last_day_after_start_day
|
Prior notice last day should not be greater than the prior notice start day in booking_rules.txt. |
route_both_short_and_long_name_missing
|
Both |
route_networks_specified_in_more_than_one_file
|
Indicates that route network identifiers are specified across multiple files. This notice highlights a data integrity issue where route network specifications are redundantly defined in more than one file. According to specifications, a route network identifier should be uniquely defined in a single file. Any additional definitions of route network specifications in other files are considered conditionally forbidden. |
runtime_exception_in_loader_error
|
RuntimeException while loading GTFS dataset in memory. A RuntimeException occurred while loading a table. This normally indicates a bug in validator. |
runtime_exception_in_validator_error
|
RuntimeException while validating GTFS archive. A RuntimeException occurred during validation. This normally indicates a bug in validator code, e.g., in a custom validator class. |
start_and_end_range_equal
|
Two date or time fields are equal. The fields |
start_and_end_range_out_of_order
|
Two date or time fields are out of order. Date or time fields have been found out of order in |
station_with_parent_station
|
A station has Field |
stop_time_timepoint_without_times
|
Any records with |
stop_time_with_arrival_before_previous_departure_time
|
Backwards time travel between stops in For a given |
stop_time_with_only_arrival_or_departure_time
|
Missing |
stop_without_location
|
|
thread_execution_error
|
ExecutionException during multithreaded validation An ExecutionException occurred during multithreaded validation. |
timeframe_only_start_or_end_time_specified
|
A row from Either both must be specified or neither must be specified. |
timeframe_overlap
|
Two entries in Timeframes with the same group and service dates must not overlap in time. Two entries X and
Y are considered to directly overlap if |
timeframe_start_or_end_time_greater_than_twenty_four_hours
|
A time in |
too_many_rows
|
A CSV file has too many rows. Feeds with too large files cannot be processed in a reasonable time by GTFS consumers. |
transfer_with_invalid_stop_location_type
|
A stop id field from GTFS file |
transfer_with_invalid_trip_and_route
|
A trip id field from GTFS file |
transfer_with_invalid_trip_and_stop
|
A trip id field from GTFS file |
translation_foreign_key_violation
|
An entity with the given |
translation_unexpected_value
|
A field in a translations row has value but must be empty. |
trip_distance_exceeds_shape_distance
|
The distance between the last shape point and last stop point is greater than or equal to the 11.1m threshold. |
u_r_i_syntax_error
|
A string could not be parsed as a URI reference. |
unsupported_feature_type
|
An unsupported feature type is used in the Use |
unsupported_geo_json_type
|
An unsupported GeoJSON type is used in the Use |
unsupported_geometry_type
|
A GeoJSON feature has an unsupported geometry type in Each feature must have a geometry type that is supported by the GTFS spec. The supported
geometry types |
wrong_parent_location_type
|
Incorrect type of the parent location. Value of field According to spec
Any other combination raise this error. |
Notice code | Description | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
attribution_without_role
|
Attribution with no role. At least one of the fields |
||||||||||||||||||||||||||||||||||||
duplicate_fare_media
|
Two distinct fare media have the same fare media name and type. Fare media should have a unique combination of fare media name and type. |
||||||||||||||||||||||||||||||||||||
duplicate_route_name
|
Two distinct routes have either the same All routes of the same Note that there may be valid cases where routes have the same short and long name, e.g., if they serve different areas. However, different directions must be modeled as the same route. Example of bad data:
|
||||||||||||||||||||||||||||||||||||
empty_row
|
A row in the input file has only spaces. Some CSV parsers, such as Univocity, may misinterpret it as a non-empty row that has a single column which is empty, hence we show a warning. |
||||||||||||||||||||||||||||||||||||
equal_shape_distance_diff_coordinates_distance_below_threshold
|
Two consecutive points have equal When sorted by |
||||||||||||||||||||||||||||||||||||
equal_shape_distance_same_coordinates
|
Two consecutive points have equal When sorted by |
||||||||||||||||||||||||||||||||||||
expired_calendar
|
Dataset should not contain date ranges for services that have already expired. This warning takes into account the |
||||||||||||||||||||||||||||||||||||
fast_travel_between_consecutive_stops
|
A transit vehicle moves too fast between two consecutive stops. The speed threshold depends on route type:
|
||||||||||||||||||||||||||||||||||||
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
|
||||||||||||||||||||||||||||||||||||
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. |
||||||||||||||||||||||||||||||||||||
feed_expiration_date7_days
|
Dataset should be valid for at least the next 7 days. The dataset expiration date defined in |
||||||||||||||||||||||||||||||||||||
feed_info_lang_and_agency_lang_mismatch
|
Mismatching feed and agency language fields. Files
|
||||||||||||||||||||||||||||||||||||
inconsistent_agency_lang
|
Inconsistent language among agencies. Agencies from GTFS |
||||||||||||||||||||||||||||||||||||
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. |
||||||||||||||||||||||||||||||||||||
missing_bike_allowance
|
Ferry trips should include bike allowance information. All ferry trips should have a valid value in the bikes_allowed field in trips.txt. |
||||||||||||||||||||||||||||||||||||
missing_feed_contact_email_and_url
|
Best Practices for |
||||||||||||||||||||||||||||||||||||
missing_feed_info_date
|
One of Even though |
||||||||||||||||||||||||||||||||||||
missing_recommended_column
|
A recommended column is missing in the input file. |
||||||||||||||||||||||||||||||||||||
missing_recommended_field
|
A recommended field is missing. The given field has no value in some input row, even though values are recommended. |
||||||||||||||||||||||||||||||||||||
missing_recommended_file
|
A recommended file is missing. |
||||||||||||||||||||||||||||||||||||
missing_timepoint_value
|
Even though the column |
||||||||||||||||||||||||||||||||||||
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.
|
||||||||||||||||||||||||||||||||||||
more_than_one_entity
|
More than one row in CSV. The file is expected to have a single entity but has more (e.g., "feed_info.txt"). |
||||||||||||||||||||||||||||||||||||
non_ascii_or_non_printable_char
|
Non ascii or non printable char in ID field. A value of a field with type ID contains non ASCII or non printable characters. This is not recommended. |
||||||||||||||||||||||||||||||||||||
pathway_dangling_generic_node
|
A generic node has only one incident location in a pathway graph. Such generic node is useless because there is no benefit in visiting it. |
||||||||||||||||||||||||||||||||||||
pathway_loop
|
A pathway starts and ends at the same location. A pathway should not have same values for |
||||||||||||||||||||||||||||||||||||
route_color_contrast
|
Insufficient route color contrast. A route's color and |
||||||||||||||||||||||||||||||||||||
route_long_name_contains_short_name
|
Long name should not contain short name for a single route. In routes.txt, Good examples:
Bad examples:
|
||||||||||||||||||||||||||||||||||||
route_short_name_too_long
|
Short name of a route is too long (more than 12 characters). |
||||||||||||||||||||||||||||||||||||
same_name_and_description_for_route
|
Same name and description for route. The GTFS spec defines Description of a route that provides useful, quality information. Do not simply duplicate the name of the route. See the GTFS and GTFS Best Practices links below for more examples of how to populate the
|
||||||||||||||||||||||||||||||||||||
same_name_and_description_for_stop
|
Same name and description for stop. The GTFS spec defines Description of the location that provides useful, quality information. Do not simply duplicate the name of the location. |
||||||||||||||||||||||||||||||||||||
same_route_and_agency_url
|
Same A route should not have the same |
||||||||||||||||||||||||||||||||||||
same_stop_and_agency_url
|
Same A stop should not have the same |
||||||||||||||||||||||||||||||||||||
same_stop_and_route_url
|
Same A stop should not have the same |
||||||||||||||||||||||||||||||||||||
single_shape_point
|
The shape within A shape should contain more than one shape point to visualize the route |
||||||||||||||||||||||||||||||||||||
stop_has_too_many_matches_for_shape
|
Stop entry that has many potential matches to the trip's path of travel, as defined by the shape entry in This potentially indicates a problem with the location of the stop or the path of the shape. |
||||||||||||||||||||||||||||||||||||
stop_too_far_from_shape
|
Stop too far from trip shape. Per GTFS Best Practices, route alignments (in |
||||||||||||||||||||||||||||||||||||
stop_too_far_from_shape_using_user_distance
|
Stop time too far from shape. A stop time entry that is a large distance away from the location of the shape in
|
||||||||||||||||||||||||||||||||||||
stop_without_stop_time
|
A stop in Such stops are not used by any trip and normally do not provide user value. This notice may
indicate a typo in |
||||||||||||||||||||||||||||||||||||
stops_match_shape_out_of_order
|
Two stop entries are different than their arrival-departure order defined by This could indicate a problem with the location of the stops, the path of the shape, or the sequence of the stops for their trip. |
||||||||||||||||||||||||||||||||||||
transfer_with_suspicious_mid_trip_in_seat
|
A trip id field from GTFS file For in-seat transfers, we expect the stop to be the last stop-time in the trip sequence for
|
||||||||||||||||||||||||||||||||||||
translation_unknown_table_name
|
A translation references an unknown or missing GTFS table. |
||||||||||||||||||||||||||||||||||||
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. |
||||||||||||||||||||||||||||||||||||
trip_distance_exceeds_shape_distance_below_threshold
|
The distance between the last shape point and last stop point is greater than 0 but less than the 11.1m threshold. |
||||||||||||||||||||||||||||||||||||
unexpected_enum_value
|
An enum has an unexpected value. |
||||||||||||||||||||||||||||||||||||
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. |
||||||||||||||||||||||||||||||||||||
unused_shape
|
Shape is not used in GTFS file All records defined by GTFS |
||||||||||||||||||||||||||||||||||||
unused_trip
|
Trip is not be used in Trips should be referred to at least once in |
Notice code | Description |
---|---|
platform_without_parent_station
|
A platform has no This is different from |
stop_without_zone_id
|
Stop without value for If |
unknown_column
|
A column name is unknown. |
unknown_file
|
A file is unknown. |
unused_parent_station
|
Unused parent station. A stop has |
Attribution with no role.
At least one of the fields is_producer
, is_operator
, or is_authority
should be set to
1.
Field name | Description | Type |
---|---|---|
attributionId |
The id of the faulty record. |
string |
csvRowNumber |
The row number of the faulty record. |
integer |
Pathway is bidirectional and has mode 7 (exit gate).
Exit gates (pathway_mode=7) must not be bidirectional.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the validated record. |
integer |
isBidirectional |
Whether the pathway is bidirectional. |
integer |
pathwayMode |
The pathway mode. |
integer |
Trips with the same block id have overlapping stop times.
Field name | Description | Type |
---|---|---|
blockId |
The |
string |
csvRowNumberA |
The row number from |
integer |
csvRowNumberB |
The row number from |
integer |
intersection |
The overlapping period. |
string |
serviceIdA |
The service id of the first faulty trip. |
string |
serviceIdB |
The service id of the other faulty trip. |
string |
tripIdA |
The id of first faulty trip. |
string |
tripIdB |
The id of the other faulty trip. |
string |
Parsing of a CSV file failed.
One common case of the problem is when a cell value contains more than 4096 characters.
Field name | Description | Type |
---|---|---|
charIndex |
The location of the last character read from before the error occurred. |
integer |
columnIndex |
The column index where the exception occurred. |
integer |
filename |
The name of the faulty file. |
string |
lineIndex |
The line number where the exception occurred. |
integer |
message |
The detailed message describing the error, and the internal state of the parser/writer. |
string |
parsedContent |
The record number when the exception occurred. |
string |
Decreasing or equal
shape_dist_traveled
instop_times.txt
.
When sorted by stop_times.stop_sequence
, two consecutive entries in stop_times.txt
should have increasing distance, based on the field shape_dist_traveled
. If the values are
equal, this is considered as an error.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number from |
integer |
prevCsvRowNumber |
The row number from |
integer |
prevShapeDistTraveled |
Actual distance traveled along the shape from the first shape point to the previous stop time. |
number |
prevStopSequence |
The previous record's |
integer |
shapeDistTraveled |
Actual distance traveled along the shape from the first shape point to the faulty record. |
number |
stopId |
The id of the faulty stop. |
string |
stopSequence |
The faulty record's |
integer |
tripId |
The id of the faulty trip. |
string |
Decreasing
shape_dist_traveled
inshapes.txt
.
When sorted by shape.shape_pt_sequence
, two consecutive shape points must not have
decreasing values for shape_dist_traveled
.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number from |
integer |
prevCsvRowNumber |
The row number from |
integer |
prevShapeDistTraveled |
Actual distance traveled along the shape from the first shape point to the previous shape point. |
number |
prevShapePtSequence |
The previous record's |
integer |
shapeDistTraveled |
Actual distance traveled along the shape from the first shape point to the faulty record. |
number |
shapeId |
The id of the faulty shape. |
string |
shapePtSequence |
The faulty record's |
integer |
Two distinct fare media have the same fare media name and type.
Fare media should have a unique combination of fare media name and type.
Field name | Description | Type |
---|---|---|
csvRowNumber1 |
The row number of the first fare media. |
integer |
csvRowNumber2 |
The row number of the second fare media. |
integer |
fareMediaId1 |
The id of the first fare media. |
string |
fareMediaId2 |
The id of the second fare media. |
string |
Duplicated entity.
The values of the given key and rows are duplicates.
Field name | Description | Type |
---|---|---|
fieldName1 |
Composite key's first field name. |
string |
fieldName2 |
Composite key's second field name. |
string |
fieldValue1 |
Composite key's first value. |
object |
fieldValue2 |
Composite key's second value. |
object |
filename |
The name of the faulty file |
string |
newCsvRowNumber |
The row of the other occurrence. |
integer |
oldCsvRowNumber |
The row of the first occurrence. |
integer |
Two distinct routes have either the same
route_short_name
, the sameroute_long_name
, or the same combination ofroute_short_name
androute_long_name
.
All routes of the same route_type
with the same agency_id
should have unique
combinations of route_short_name
and route_long_name
.
Note that there may be valid cases where routes have the same short and long name, e.g., if they serve different areas. However, different directions must be modeled as the same route.
Example of bad data:
route_id |
route_short_name |
route_long_name |
---|---|---|
route1 | U1 | Southern |
route2 | U1 | Southern |
Field name | Description | Type |
---|---|---|
agencyId |
Common |
string |
csvRowNumber1 |
The row number of the first occurrence. |
integer |
csvRowNumber2 |
The row number of the other occurrence. |
integer |
routeId1 |
The id of the the first occurrence. |
string |
routeId2 |
The id of the the other occurrence. |
string |
routeLongName |
Common |
string |
routeShortName |
Common |
string |
routeTypeValue |
Common |
integer |
Duplicated column in CSV.
The input file CSV header has the same column name repeated.
Field name | Description | Type |
---|---|---|
fieldName |
The name of the faulty field. |
string |
filename |
The name of the faulty file. |
string |
firstIndex |
Index of the first occurrence. |
integer |
secondIndex |
Index of the other occurrence. |
integer |
A column name is empty.
Such columns are skipped by the validator.
Field name | Description | Type |
---|---|---|
filename |
The name of the faulty file. |
string |
index |
The index of the empty column. |
integer |
A CSV file is empty.
Empty csv file found in the archive: file does not have any headers, or is a required file and does not have any data. The GTFS specification requires the first line of each file to contain field names and required files must have data.
Field name | Description | Type |
---|---|---|
filename |
The name of the faulty file. |
string |
A row in the input file has only spaces.
Some CSV parsers, such as Univocity, may misinterpret it as a non-empty row that has a single column which is empty, hence we show a warning.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
filename |
The name of the faulty file. |
string |
Two consecutive points have equal
shape_dist_traveled
and different lat/lon coordinates inshapes.txt
and the distance between the two points is greater than the 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 different
coordinates indicate an error.
Field name | Description | Type |
---|---|---|
actualDistanceBetweenShapePoints |
Actual distance traveled along the shape from the first shape point to the previous shape point. |
number |
csvRowNumber |
The row number from |
integer |
prevCsvRowNumber |
The row number from |
integer |
prevShapeDistTraveled |
The previous shape point's |
number |
prevShapePtSequence |
The previous record's |
integer |
shapeDistTraveled |
The faulty record's |
number |
shapeId |
The id of the faulty shape. |
string |
shapePtSequence |
The faulty record's |
integer |
Two consecutive points have equal
shape_dist_traveled
and different lat/lon coordinates inshapes.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.
Field name | Description | Type |
---|---|---|
actualDistanceBetweenShapePoints |
Actual distance traveled along the shape from the first shape point to the previous shape point. |
number |
csvRowNumber |
The row number from |
integer |
prevCsvRowNumber |
The row number from |
integer |
prevShapeDistTraveled |
The previous shape point's |
number |
prevShapePtSequence |
The previous record's |
integer |
shapeDistTraveled |
The faulty record's |
number |
shapeId |
The id of the faulty shape. |
string |
shapePtSequence |
The faulty record's |
integer |
Two consecutive points have equal
shape_dist_traveled
and the same lat/lon coordinates inshapes.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.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number from |
integer |
prevCsvRowNumber |
The row number from |
integer |
prevShapeDistTraveled |
Actual distance traveled along the shape from the first shape point to the previous shape point. |
number |
prevShapePtSequence |
The previous record's |
integer |
shapeDistTraveled |
Actual distance traveled along the shape from the first shape point to the faulty record. |
number |
shapeId |
The id of the faulty shape. |
string |
shapePtSequence |
The faulty record's |
integer |
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.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
serviceId |
The service id of the faulty record. |
string |
A row from GTFS file
fare_transfer_rules.txt
has a definedduration_limit_type
field but noduration_limit
specified.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
A row from GTFS file
fare_transfer_rules.txt
has a definedduration_limit
field but noduration_limit_type
specified.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
A row from GTFS file
fare_transfer_rules.txt
has a definedtransfer_count
with an invalid value.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
transferCount |
The transfer count value of the faulty record. |
integer |
A row from
fare_transfer_rules.txt
hasfrom_leg_group_id
equal toto_leg_group_id
, but has notransfer_count
specified.
Per the spec, transfer_count
is required if the two leg group ids are equal.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
A row from
fare_transfer_rules.txt
hasfrom_leg_group_id
not equal toto_leg_group_id
, but hastransfer_count
specified.
Per the spec, transfer_count
is forbidden if the two leg group ids are not equal.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
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 |
Field name | Description | Type |
---|---|---|
arrivalTime2 |
|
string |
csvRowNumber1 |
The row number of the first stop time. |
integer |
csvRowNumber2 |
The row number of the second stop time. |
integer |
departureTime1 |
|
string |
distanceKm |
Distance between stops (km). |
number |
routeId |
|
string |
speedKph |
Travel speed (km/h). |
number |
stopId1 |
|
string |
stopId2 |
|
string |
stopName1 |
|
string |
stopName2 |
|
string |
stopSequence1 |
|
integer |
stopSequence2 |
|
integer |
tripCsvRowNumber |
The row number of the problematic trip. |
integer |
tripId |
|
string |
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
.
Field name | Description | Type |
---|---|---|
arrivalTime2 |
|
string |
csvRowNumber1 |
The row number of the first stop time. |
integer |
csvRowNumber2 |
The row number of the second stop time. |
integer |
departureTime1 |
|
string |
distanceKm |
Distance between stops (km). |
number |
routeId |
|
string |
speedKph |
Travel speed (km/h). |
number |
stopId1 |
|
string |
stopId2 |
|
string |
stopName1 |
|
string |
stopName2 |
|
string |
stopSequence1 |
|
integer |
stopSequence2 |
|
integer |
tripCsvRowNumber |
The row number of the problematic trip. |
integer |
tripId |
|
string |
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.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
currentDate |
Current date (YYYYMMDD format). |
string |
feedEndDate |
Feed end date (YYYYMMDD format). |
string |
suggestedExpirationDate |
Suggested expiration date (YYYYMMDD format). |
string |
Dataset should be valid for at least the next 7 days.
The dataset expiration date defined in feed_info.txt
is in seven days or less. At any
time, the published GTFS dataset should be valid for at least the next 7 days.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
currentDate |
Current date (YYYYMMDD format). |
string |
feedEndDate |
Feed end date (YYYYMMDD format). |
string |
suggestedExpirationDate |
Suggested expiration date (YYYYMMDD format). |
string |
Mismatching feed and agency language fields.
Files agency.txt
and feed_info.txt
should define matching agency.agency_lang
and
feed_info.feed_lang
. The default language may be multilingual for datasets with the original
text in multiple languages. In such cases, the feed_lang
field should contain the language
code mul
defined by the norm ISO 639-2.
feed_lang
is not mul
and does not match with agency_lang
, that's an error.agency_lang
and feed_lang
isn't mul
, that's an error.feed_lang
is mul
and there isn't more than one agency_lang
, that's an error.Field name | Description | Type |
---|---|---|
agencyId |
The agency id of the faulty record. |
string |
agencyLang |
The agency language of the faulty record. |
string |
agencyName |
The agency name of the faulty record. |
string |
csvRowNumber |
The row number of the faulty record. |
integer |
feedLang |
The feed language of the faulty record. |
string |
A stop_time entry has more than one geographical id defined.
In stop_times.txt, you can have only one of stop_id, location_group_id or location_id defined for given entry.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
locationGroupId |
The id that already exists. |
string |
locationId |
The id that already exists. |
string |
stopId |
The id that already exists. |
string |
A forbidden field value is present for a prior-day booking rule in
booking_rules.txt
Field name | Description | Type |
---|---|---|
bookingRuleId |
The |
string |
csvRowNumber |
The row number of the faulty record. |
integer |
fieldNames |
The names of the forbidden fields comma-separated. |
string |
prior_notice_start_day
value is forbidden whenprior_notice_duration_max
is set.
Field name | Description | Type |
---|---|---|
bookingRuleId |
The |
string |
csvRowNumber |
The row number of the faulty record. |
integer |
priorNoticeDurationMax |
The value of the |
integer |
priorNoticeStartDay |
The value of the |
integer |
prior_notice_start_time
value is forbidden whenprior_notice_start_day
value is not set in booking_rules.txt.
Field name | Description | Type |
---|---|---|
bookingRuleId |
The |
string |
csvRowNumber |
The row number of the faulty record. |
integer |
priorNoticeStartTime |
The value of the |
string |
A forbidden field value is present for a real-time booking rule in
booking_rules.txt
.
Field name | Description | Type |
---|---|---|
bookingRuleId |
The |
string |
csvRowNumber |
The row number of the faulty record. |
integer |
fieldNames |
The names of the forbidden fields comma-separated. |
string |
A forbidden field value is present for a same-day booking rule in
booking_rules.txt
.
Field name | Description | Type |
---|---|---|
bookingRuleId |
The |
string |
csvRowNumber |
The row number of the faulty record. |
integer |
fieldNames |
The names of the forbidden fields comma-separated. |
string |
A stop_time entry has a
shape_dist_traveled
without astop_id
value.
A GeoJSON location or location group has an associated shape_dist_traveled field in stop_times.txt. shape_dist_traveled values should only be provided for stops.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
locationGroupId |
The location_grpup_id for which the shape_dist_traveled is defined |
string |
locationId |
The location_id for which the shape_dist_traveled is defined |
string |
shapeDistTraveled |
The shape_dist_traveled value |
number |
tripId |
The trip_id for which the shape_dist_traveled is defined |
string |
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.
Field name | Description | Type |
---|---|---|
childFieldName |
The name of the field that makes reference. |
string |
childFilename |
The name of the file from which reference is made. |
string |
csvRowNumber |
The row of the faulty record. |
integer |
fieldValue |
The faulty record's value. |
string |
parentFieldName |
The name of the field that is referred to. |
string |
parentFilename |
The name of the file that is referred to. |
string |
Error in IO operation.
Field name | Description | Type |
---|---|---|
exception |
The name of the exception. |
string |
message |
The error message that explains the reason for the exception. |
string |
Inconsistent language among agencies.
Agencies from GTFS agency.txt
have been found to have different languages.
Field name | Description | Type |
---|---|---|
actual |
Faulty record's language. |
string |
csvRowNumber |
The row of the faulty record. |
integer |
expected |
Expected language. |
string |
Inconsistent Timezone among agencies.
Agencies from GTFS agency.txt
have been found to have different timezones.
Field name | Description | Type |
---|---|---|
actual |
Faulty record's timezone. |
string |
csvRowNumber |
The row of the faulty record. |
integer |
expected |
Expected timezone. |
string |
This field contains invalid characters, such as the replacement character ("�").
Check that text was properly encoded in UTF-8 as required by GTFS.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number in the CSV file where the invalid characters were found. |
integer |
fieldName |
The name of the field containing the invalid characters. |
string |
fieldValue |
The value of the field containing the invalid characters. |
string |
filename |
The name of the file containing the invalid characters. |
string |
A field contains an invalid color value.
A color must be encoded as a six-digit hexadecimal number. The leading "#" is not included.
Example: FFFFFF
for white, 000000
for black or 0039A6
for the A,C,E lines in NYC MTA.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
Faulty record's field name. |
string |
fieldValue |
Faulty value. |
string |
filename |
The name of the faulty file. |
string |
A field contains a wrong currency code.
Currency code must follow ISO 4217
Example: CAD
for Canadian dollars, EUR
for euros or JPY
for Japanese yen.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
Faulty record's field name. |
string |
fieldValue |
Faulty value. |
string |
filename |
The name of the faulty file. |
string |
A currency amount field has a value that does not match the format of its corresponding currency code field.
Typically, this means the amount did not have the expected number of decimal places. The number of decimal places is specified by ISO 4217.
@see org.mobilitydata.gtfsvalidator.annotation.CurrencyAmount
Field name | Description | Type |
---|---|---|
amount |
Faulty currency amount value. |
string |
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
Faulty record's field name. |
string |
filename |
The name of the faulty file. |
string |
A field cannot be parsed as date.
Dates must have the YYYYMMDD format.
Example: 20180913
for September 13th, 2018.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
Faulty record's field name. |
string |
fieldValue |
Faulty value. |
string |
filename |
The name of the faulty file. |
string |
A field contains a malformed email address.
Definitions for valid emails are quite vague. We perform strict validation using the Apache Commons EmailValidator.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
Faulty record's field name. |
string |
fieldValue |
Faulty value. |
string |
filename |
The name of the faulty file. |
string |
A field cannot be parsed as a floating point number.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
Faulty record's field name. |
string |
fieldValue |
Faulty value. |
string |
filename |
The name of the faulty file. |
string |
A polygon in
locations.geojson
is unparsable or invalid.
Each polygon must be valid by the definition of the OpenGIS Simple Features Specification, section 6.1.11 .
Field name | Description | Type |
---|---|---|
featureId |
The id of the faulty record. |
string |
featureIndex |
The index of the feature in the feature collection. |
integer |
geometryType |
The geometry type of the feature containing the invalid polygon. |
string |
message |
The validation error details. |
string |
At least 1 GTFS file is in a subfolder.
All GTFS files must reside at the root level directly.
Field name | Description | Type |
---|---|---|
message |
The error message that explains the reason for the exception. |
string |
A field cannot be parsed as an integer.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
Faulty record's field name. |
string |
fieldValue |
Faulty value. |
string |
filename |
The name of the faulty file. |
string |
A field contains a wrong language code.
Language codes must follow IETF BCP 47.
Example: en
for English, en-US
for American English or de
for German.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
Faulty record's field name. |
string |
fieldValue |
Faulty value. |
string |
filename |
The name of the faulty file. |
string |
A field contains a malformed phone number.
This rule uses the PhoneNumberUtil class to validate a phone number based on a country code. If no country code is provided in the parameters used to run the validator, this notice won't be emitted.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
Faulty record's field name. |
string |
fieldValue |
Faulty value. |
string |
filename |
The name of the faulty file. |
string |
An invalid
prior_notice_duration_min
value is present in a booking rule.
The prior_notice_duration_max
field value needs to be greater or equal to the
prior_notice_duration_min
field value.
Field name | Description | Type |
---|---|---|
bookingRuleId |
The |
string |
csvRowNumber |
The row number of the faulty record. |
integer |
priorNoticeDurationMax |
The value of the |
integer |
priorNoticeDurationMin |
The value of the |
integer |
Invalid csv row length.
A row in the input file has a different number of values than specified by the CSV header.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
filename |
The name of the faulty file. |
string |
headerCount |
The number of column in the faulty file. |
integer |
rowLength |
The length of the faulty record. |
integer |
A field cannot be parsed as time.
Time must be in the H:MM:SS
, HH:MM:SS
or HHH:MM:SS
format.
Example: 14:30:00
for 2:30PM or 25:35:00
for 1:35AM on the next day.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
Faulty record's field name. |
string |
fieldValue |
Faulty value. |
string |
filename |
The name of the faulty file. |
string |
A field cannot be parsed as a timezone.
Timezones are defined at www.iana.org. Timezone names never contain the space character but may contain an underscore. Refer to Wikipedia for a list of valid values.
Example: Asia/Tokyo
, America/Los_Angeles
or Africa/Cairo
.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
Faulty record's field name. |
string |
fieldValue |
Faulty value. |
string |
filename |
The name of the faulty file. |
string |
A field contains a malformed URL.
Definitions for valid URLs are quite vague. We perform strict validation using the Apache Commons UrlValidator.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
Faulty record's field name. |
string |
fieldValue |
Faulty value. |
string |
filename |
The name of the faulty file. |
string |
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.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
Faulty record's field name. |
string |
fieldValue |
Faulty value. |
string |
filename |
The name of the faulty file. |
string |
A location in
stops.txt
that is not a stop is referenced by somestop_times.stop_id
.
Referenced locations (using stop_times.stop_id
) must be stops/platforms, i.e. their
stops.location_type
value must be 0 or empty.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record from |
integer |
stopId |
The id of the faulty record from |
string |
stopName |
The |
string |
stopTimeCsvRowNumber |
The row number of the faulty record from |
integer |
A location that must have
parent_station
field does not have it.
The following location types must have parent_station
: entrance, generic node,
boarding_area.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
locationType |
The |
integer |
stopId |
The id of the faulty record. |
string |
stopName |
The |
string |
A JSON file is malformed.
Field name | Description | Type |
---|---|---|
filename |
The name of the faulty file. |
string |
Ferry trips should include bike allowance information.
All ferry trips should have a valid value in the bikes_allowed field in trips.txt.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
routeId |
The faulty record's route id. |
string |
tripId |
The faulty record's trip id. |
string |
Missing GTFS files
calendar.txt
andcalendar_dates.txt
.
At least one of the files must be provided.
Field name | Description | Type |
---|
Best Practices for
feed_info.txt
suggest providing at least one offeed_contact_email
andfeed_contact_url
.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the validated record. |
integer |
One of
feed_start_date
orfeed_end_date
is specified, but not both.
Even though feed_info.start_date
and feed_info.end_date
are optional, if one field is
provided the second one should also be provided.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
fieldName |
Either |
string |
stops.level_id
is conditionally required.
GTFS file levels.txt
is required for elevator (pathway_mode=5
). A row from stops.txt
linked to an elevator pathway has no value for stops.level_id
.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
stopId |
The id of the faulty stop from |
string |
stopName |
The name of the faulty stop from |
string |
prior_notice_last_day
andprior_notice_last_time
values are required for prior daybooking_type
in booking_rules.txt.
Field name | Description | Type |
---|---|---|
bookingRuleId |
The |
string |
csvRowNumber |
The row number of the faulty record. |
integer |
prior_notice_duration_min
value is required for same daybooking_type
in booking_rules.txt.
Field name | Description | Type |
---|---|---|
bookingRuleId |
The |
string |
csvRowNumber |
The row number of the faulty record. |
integer |
prior_notice_start_time
value is required whenprior_notice_start_day
value is set in booking_rules.txt.
Field name | Description | Type |
---|---|---|
bookingRuleId |
The |
string |
csvRowNumber |
The row number of the faulty record. |
integer |
priorNoticeStartDay |
The value of the |
integer |
A recommended column is missing in the input file.
Field name | Description | Type |
---|---|---|
fieldName |
The name of the missing column. |
string |
filename |
The name of the faulty file. |
string |
A recommended field is missing.
The given field has no value in some input row, even though values are recommended.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
The name of the missing field. |
string |
filename |
The name of the faulty file. |
string |
A recommended file is missing.
Field name | Description | Type |
---|---|---|
filename |
The name of the faulty file. |
string |
A required column is missing in the input file.
Field name | Description | Type |
---|---|---|
fieldName |
The name of the missing column. |
string |
filename |
The name of the faulty file. |
string |
A required element is missing in
locations.geojson
.
Field name | Description | Type |
---|---|---|
featureId |
The id of the faulty record. |
string |
featureIndex |
Index of the feature in the feature collection. |
integer |
missingElement |
The missing required element. |
string |
A required field is missing.
The given field has no value in some input row, even though values are required.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
The name of the missing field. |
string |
filename |
The name of the faulty file. |
string |
A required file is missing.
If this notice is triggered for every core file, it might be a problem with the input. To
create a zip file from the GTFS .txt
files: select all the .txt
files, right-click, and
compress. Do not compress the folder containing the files.
Field name | Description | Type |
---|---|---|
filename |
The name of the faulty file. |
string |
stops.stop_name
is required forlocation_type
equal to0
,1
, or2
.
stops.stop_name
is required for locations that are stops (location_type=0
), stations
(location_type=1
) or entrances/exits (location_type=2
).
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
locationType |
|
enum |
stopId |
The |
string |
stop_times.timepoint
value is missing for a record.
Even though the column timepoint
is optional in stop_times.txt
according to the
specification, stop_times.timepoint
should not be empty when provided.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
stopSequence |
The faulty record's |
integer |
tripId |
The faulty record's |
string |
Missing trip edge
arrival_time
ordeparture_time
.
First and last stop of a trip must define both arrival_time
and departure_time
fields.
Per stop_times.txt, "If there are not
separate times for arrival and departure at a stop, enter the same value for arrival_time and
departure_time."
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
specifiedField |
Name of the missing field. |
string |
stopSequence |
|
integer |
tripId |
The |
string |
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.
Field Text |
Dataset |
---|---|
"Schwerin, Hauptbahnhof" | Verkehrsverbund Berlin-Brandenburg |
"Red Hook/Atlantic Basin" | NYC Ferry |
"Campo Grande Norte" | Carris |
Field Text |
---|
"GALLERIA MALL" |
"3427 GG 17" |
"21 Clark Rd Est" |
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
fieldName |
Name of the faulty field. |
string |
fieldValue |
Faulty value. |
string |
filename |
Name of the faulty file. |
string |
More than one row in CSV.
The file is expected to have a single entity but has more (e.g., "feed_info.txt").
Field name | Description | Type |
---|---|---|
entityCount |
Number of occurrences. |
integer |
filename |
Name of the faulty file. |
string |
New line or carriage return in a value in CSV file.
This error is usually found when the CSV file does not close double quotes properly, so the next line is considered as a continuation of the previous line.
Example: the following file was intended to have fields "f11", "f12", "f21", "f22", but it actually parses as two fields: "f11", "f12\nf21,"f22"".
f11,"f12
f21,"f22"
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
The name of the faulty field. |
string |
fieldValue |
Faulty value. |
string |
filename |
The name of the faulty file. |
string |
Non ascii or non printable char in ID field.
A value of a field with type ID contains non ASCII or non printable characters. This is not recommended.
Field name | Description | Type |
---|---|---|
columnName |
Name of the column where the error occurred. |
string |
csvRowNumber |
Row number of the faulty record. |
integer |
fieldValue |
Faulty value. |
string |
filename |
Name of the faulty file. |
string |
Out of range value.
The values in the given column of the input rows are out of range.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty record. |
integer |
fieldName |
The name of the faulty field. |
string |
fieldType |
The type of the faulty field. |
string |
fieldValue |
Faulty value. |
object |
filename |
The name of the faulty file. |
string |
Trip frequencies overlap.
Trip frequencies must not overlap in time. Two entries X and Y are considered to directly
overlap if X.start_time <= Y.start_time
and Y.start_time < X.end_time
.
Field name | Description | Type |
---|---|---|
currCsvRowNumber |
The overlapping frequency's row number. |
integer |
currStartTime |
The overlapping frequency's start time. |
string |
prevCsvRowNumber |
The row number of the first frequency. |
integer |
prevEndTime |
The first frequency end time. |
string |
tripId |
The trip id associated to the first frequency. |
string |
A generic node has only one incident location in a pathway graph.
Such generic node is useless because there is no benefit in visiting it.
Field name | Description | Type |
---|---|---|
csvRowNumber |
Row number of the dangling generic node. |
integer |
parentStation |
The parent station of the dangling generic node. |
string |
stopId |
The id of the dangling generic node. |
string |
stopName |
The stop name of the dangling generic node. |
string |
A pathway starts and ends at the same location.
A pathway should not have same values for from_stop_id
and to_stop_id
.
Field name | Description | Type |
---|---|---|
csvRowNumber |
Row number of the faulty row from |
integer |
pathwayId |
The id of the faulty record. |
string |
stopId |
The |
string |
A pathway has an endpoint that is a platform which has boarding areas.
A platform that has boarding areas is treated as a parent object, not a point. In such cases, the platform must not have pathways assigned - instead, pathways must be assigned to its boarding areas.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty row. |
integer |
fieldName |
The platform id field name. |
string |
pathwayId |
The id of the faulty pathway. |
string |
stopId |
The id of the endpoint platform. |
string |
A pathway has an endpoint that is a station.
Pathways endpoints must be platforms (stops), entrances/exits, generic nodes or boarding areas.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty row. |
integer |
fieldName |
The station id field name. |
string |
pathwayId |
The id of the faulty pathway. |
string |
stopId |
The id of the endpoint station. |
string |
A location is not reachable at least in one direction: from the entrances or to the exits.
Notices are reported for platforms, boarding areas and generic nodes but not for entrances or stations.
Notices are not reported for platforms that have boarding areas since such platforms may not have incident pathways. Instead, notices are reported for the boarding areas.
Field name | Description | Type |
---|---|---|
csvRowNumber |
Row number of the unreachable location. |
integer |
hasEntrance |
Whether the location is reachable from entrances. |
boolean |
hasExit |
Whether some exit can be reached from the location. |
boolean |
locationType |
The type of the unreachable location. |
integer |
parentStation |
The parent of the unreachable location. |
string |
stopId |
The id of the unreachable location. |
string |
stopName |
The stop name of the unreachable location. |
string |
A platform has no
parent_station
field set.
This is different from location_without_parent_station
since it is less severe.
Field name | Description | Type |
---|---|---|
csvRowNumber |
Row number of the faulty record. |
integer |
stopId |
The id of the faulty record. |
string |
stopName |
The stop name of the faulty record. |
string |
A point is too close to origin
(0, 0)
.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty row. |
integer |
entityId |
The id of the faulty entity. |
string |
filename |
The name of the affected GTFS file. |
string |
latFieldName |
The name of the field that uses latitude value. |
string |
latFieldValue |
The latitude of the faulty row. |
number |
lonFieldName |
The name of the field that uses longitude value. |
string |
lonFieldValue |
The longitude of the faulty row |
number |
A point is too close to the North or South Pole.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row of the faulty row. |
integer |
entityId |
The id of the faulty entity. |
string |
filename |
The name of the affected GTFS file. |
string |
latFieldName |
The name of the field that uses latitude value. |
string |
latFieldValue |
The latitude of the faulty row. |
number |
lonFieldName |
The name of the field that uses longitude value. |
string |
lonFieldValue |
The longitude of the faulty row. |
number |
Prior notice last day should not be greater than the prior notice start day in booking_rules.txt.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
priorNoticeLastDay |
The value of the |
integer |
priorNoticeStartDay |
The value of the |
integer |
Both
route_short_name
androute_long_name
are missing for a route.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
routeId |
The id of the faulty record. |
string |
Insufficient route color contrast.
A route's color and route_text_color
should be contrasting.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
routeColor |
The faulty record's HTML route color. |
string |
routeId |
The id of the faulty record. |
string |
routeTextColor |
The faulty record's HTML route text color. |
string |
Long name should not contain short name for a single route.
In routes.txt, route_long_name
should not contain the value for route_short_name
,
because when both are provided, they are often combined by transit applications. Note that only
one of the two fields is required. If there is no short name used for a route, use
route_long_name
only.
Good examples:
route_short_name/route_long_name | Dataset |
---|---|
"N"/"Judah" | Muni San Fransisco |
"6"/"ML King Jr Blvd" | Trimet Portland Streetcar |
"55"/"Boulevard Saint Laurent" | STM Montreal |
"1"/"Rangiora/Cashmere" | Metro Christchurch |
Bad examples:
route_short_name/route_long_name |
---|
"604"/"604" |
"14"/"Route 14" |
"2"/"Route 2: Bellows Falls In-Town" |
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
routeId |
The id of the faulty record. |
string |
routeLongName |
The faulty record's |
string |
routeShortName |
The faulty record's |
string |
Indicates that route network identifiers are specified across multiple files.
This notice highlights a data integrity issue where route network specifications are redundantly defined in more than one file. According to specifications, a route network identifier should be uniquely defined in a single file. Any additional definitions of route network specifications in other files are considered conditionally forbidden.
Field name | Description | Type |
---|---|---|
fieldName |
Name of the field in fileNameA |
string |
fileNameA |
The name of the first file. |
string |
fileNameB |
The name of the second file which presence duplicates route networks specification. |
string |
Short name of a route is too long (more than 12 characters).
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
routeId |
The id of the faulty record. |
string |
routeShortName |
The faulty record's |
string |
RuntimeException while loading GTFS dataset in memory.
A RuntimeException occurred while loading a table. This normally indicates a bug in validator.
Field name | Description | Type |
---|---|---|
exception |
The name of the exception. |
string |
filename |
The name of the file that caused the exception. |
string |
message |
The error message that explains the reason for the exception. |
string |
RuntimeException while validating GTFS archive.
A RuntimeException occurred during validation. This normally indicates a bug in validator code, e.g., in a custom validator class.
Field name | Description | Type |
---|---|---|
exception |
The name of the exception. |
string |
message |
The error message that explains the reason for the exception. |
string |
validator |
The name of the validator that caused the exception. |
string |
Same name and description for route.
The GTFS spec defines routes.txt
route_desc as:
Description of a route that provides useful, quality information. Do not simply duplicate the name of the route.
See the GTFS and GTFS Best Practices links below for more examples of how to populate the
route_short_name
, route_long_name
, and route_desc
fields.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
routeDesc |
The |
string |
routeId |
The id of the faulty record. |
string |
specifiedField |
Either |
string |
Same name and description for stop.
The GTFS spec defines stops.txt
stop_description as:
Description of the location that provides useful, quality information. Do not simply duplicate the name of the location.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
stopDesc |
The faulty record's |
string |
stopId |
The id of the faulty record. |
string |
Same
routes.route_url
andagency.agency_url
.
A route should not have the same routes.route_url
as a record from agency.txt
.
Field name | Description | Type |
---|---|---|
agencyCsvRowNumber |
The row number of the faulty record from |
integer |
agencyName |
The faulty record's referenced agency name. |
string |
routeCsvRowNumber |
The row number of the faulty record from |
integer |
routeId |
The faulty record's id. |
string |
routeUrl |
The duplicate URL value |
string |
Same
stops.stop_url
andagency.agency_url
.
A stop should not have the same stops.stop_url
as a record from agency.txt
.
Field name | Description | Type |
---|---|---|
agencyCsvRowNumber |
The row number of the faulty record from |
integer |
agencyName |
The faulty record's |
string |
stopCsvRowNumber |
The row number of the faulty record from |
integer |
stopId |
The faulty record's id. |
string |
stopUrl |
The duplicate URL value. |
string |
Same
stops.stop_url
androutes.route_url
.
A stop should not have the same stop.stop_url
as a record from routes.txt
.
Field name | Description | Type |
---|---|---|
routeCsvRowNumber |
The row number of the faulty record from |
integer |
routeId |
The faulty record's id from `routes.txt. |
string |
stopCsvRowNumber |
The row number of the faulty record from |
integer |
stopId |
The faulty record's id. |
string |
stopUrl |
The duplicate URL value. |
string |
The shape within
shapes.txt
contains a single shape point.
A shape should contain more than one shape point to visualize the route
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
shapeId |
The faulty record's id. |
string |
Two date or time fields are equal.
The fields frequencies.start_date
and frequencies.end_date
have been found equal in
frequencies.txt
. The GTFS spec is currently unclear how this case should be handled (e.g., is
it a trip that circulates once?). It is recommended to use a trip not defined via frequencies.txt
for this case.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
endFieldName |
The end value's field name. |
string |
entityId |
The id of the faulty entity. |
string |
filename |
The name of the faulty file. |
string |
startFieldName |
The start value's field name. |
string |
value |
The faulty value. |
string |
Two date or time fields are out of order.
Date or time fields have been found out of order in calendar.txt
, feed_info.txt
and
stop_times.txt
.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
endFieldName |
The end value's field name. |
string |
endValue |
The end value. |
string |
entityId |
The faulty service id. |
string |
filename |
The name of the faulty file. |
string |
startFieldName |
The start value's field name. |
string |
startValue |
The start value. |
string |
A station has
parent_station
field set.
Field parent_station
must be empty when location_type
is 1.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
parentStation |
Parent station's id. |
string |
stopId |
The id of the faulty record. |
string |
stopName |
The stops.stop_name of the faulty record. |
string |
Stop entry that has many potential matches to the trip's path of travel, as defined by the shape entry in
shapes.txt
.
This potentially indicates a problem with the location of the stop or the path of the shape.
Field name | Description | Type |
---|---|---|
match |
Latitude and longitude pair of the location. |
array |
matchCount |
The number of matches for the stop that is referred to. |
integer |
shapeId |
The id of the shape that is referred to. |
string |
stopId |
The id of the stop that is referred to. |
string |
stopName |
The name of the stop that is referred to. |
string |
stopTimeCsvRowNumber |
The row number of the faulty record from |
integer |
tripCsvRowNumber |
The row number of the faulty record from |
integer |
tripId |
The id of the trip that is referred to. |
string |
arrival_time
ordeparture_time
not specified for timepoint.
Any records with stop_times.timepoint
set to 1 must define a value for
stop_times.arrival_time
and stop_times.departure_time
fields.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
specifiedField |
Either |
string |
stopSequence |
The faulty record's |
integer |
tripId |
The faulty record's id. |
string |
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
.
Field name | Description | Type |
---|---|---|
arrivalTime |
Arrival time at the faulty record. |
string |
csvRowNumber |
The row number of the faulty record. |
integer |
departureTime |
Departure time at the previous stop time. |
string |
prevCsvRowNumber |
The row of the previous stop time. |
integer |
tripId |
The trip_id associated to the faulty record. |
string |
Missing
stop_times.arrival_time
orstop_times.departure_time
.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
specifiedField |
Either |
string |
stopSequence |
The sequence of the faulty stop. |
integer |
tripId |
The trip_id associated to the faulty record. |
string |
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.
Field name | Description | Type |
---|---|---|
geoDistanceToShape |
Distance from stop to shape. |
number |
match |
Latitude and longitude pair of the location. |
array |
shapeId |
The id of the shape that is referred to. |
string |
stopId |
The id of the stop that is referred to. |
string |
stopName |
The name of the stop that is referred to. |
string |
stopTimeCsvRowNumber |
The row number of the faulty record from |
integer |
tripCsvRowNumber |
The row number of the faulty record from |
integer |
tripId |
The id of the trip that is referred to. |
string |
Stop time too far from shape.
A stop time entry that is a large distance away from the location of the shape in
shapes.txt
as defined by shape_dist_traveled
values.
Field name | Description | Type |
---|---|---|
geoDistanceToShape |
Distance from stop to shape. |
number |
match |
Latitude and longitude pair of the location. |
array |
shapeId |
The id of the shape that is referred to. |
string |
stopId |
The id of the stop that is referred to. |
string |
stopName |
The name of the stop that is referred to. |
string |
stopTimeCsvRowNumber |
The row number of the faulty record from |
integer |
tripCsvRowNumber |
The row number of the faulty record from |
integer |
tripId |
The id of the trip that is referred to. |
string |
stop_lat
and/orstop_lon
is missing for stop withlocation_type
equal to0
,1
, or2
stop_lat
and/or stop_lon
are required for locations that are stops (location_type=0
),
stations (location_type=1
) or entrances/exits (location_type=2
).
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
locationType |
The faulty record's |
enum |
stopId |
The faulty record's id. |
string |
A stop in
stops.txt
is not referenced by anystop_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
.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
stopId |
The id of the faulty stop. |
string |
stopName |
The name of the faulty stop. |
string |
Stop without value for
stops.zone_id
contained in a route with a zone-dependent fare rule.
If fare_rules.txt
is provided, and fare_rules.txt
uses at least one column among
origin_id
, destination_id
, and contains_id
, then all stops and platforms (location_type =
0) must have stops.zone_id
assigned if they are defined in a trip defined in a route defined
in a fare rule which also defines at least one of origin_id
, destination_id
, or
contains_id
.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
stopId |
The faulty record's id. |
string |
stopName |
The faulty record's |
string |
Two stop entries are different than their arrival-departure order defined by
shapes.txt
.
This could indicate a problem with the location of the stops, the path of the shape, or the sequence of the stops for their trip.
Field name | Description | Type |
---|---|---|
match1 |
Latitude and longitude pair of the first matching location. |
array |
match2 |
Latitude and longitude pair of the second matching location. |
array |
shapeId |
The id of the shape that is referred to. |
string |
stopId1 |
The id of the first stop that is referred to. |
string |
stopId2 |
The id of the second stop that is referred to. |
string |
stopName1 |
The name of the first stop that is referred to. |
string |
stopName2 |
The name of the second stop that is referred to. |
string |
stopTimeCsvRowNumber1 |
The row number of the first faulty record from |
integer |
stopTimeCsvRowNumber2 |
The row number of the second faulty record from |
integer |
tripCsvRowNumber |
The row number of the faulty record from |
integer |
tripId |
The id of the trip that is referred to. |
string |
ExecutionException during multithreaded validation
An ExecutionException occurred during multithreaded validation.
Field name | Description | Type |
---|---|---|
exception |
The name of the exception. |
string |
message |
The error message that explains the reason for the exception. |
string |
A row from
timeframes.txt
was found with only one ofstart_time
andend_time
specified.
Either both must be specified or neither must be specified.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number for the faulty record. |
integer |
Two entries in
timeframes.txt
with the sametimeframe_group_id
andservice_id
have overlapping time intervals.
Timeframes with the same group and service dates must not overlap in time. Two entries X and
Y are considered to directly overlap if X.start_time <= Y.start_time
and Y.start_time < X.end_time
.
Field name | Description | Type |
---|---|---|
currCsvRowNumber |
The row number of the second timeframe entry. |
integer |
currStartTime |
The start time of the second timeframe entry. |
string |
prevCsvRowNumber |
The row number of the first timeframe entry. |
integer |
prevEndTime |
The first timeframe end time. |
string |
serviceId |
The service id associated with the two entries. |
string |
timeframeGroupId |
The timeframe group id associated with the two entries. |
string |
A time in
timeframes.txt
is greater than24:00:00
.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number for the faulty record. |
integer |
fieldName |
The time field name for the faulty record. |
string |
time |
The invalid time value. |
string |
A CSV file has too many rows.
Feeds with too large files cannot be processed in a reasonable time by GTFS consumers.
Field name | Description | Type |
---|---|---|
filename |
Name of the CSV file that has too many rows. |
string |
rowNumber |
Number of the row when reading was stopped. |
integer |
A stop id field from GTFS file
transfers.txt
references a stop that has alocation_type
other than 0 or 1 (aka Stop/Platform or Station).
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number from |
integer |
locationTypeName |
The name of the invalid location type. |
string |
locationTypeValue |
The numeric value of the invalid location type. |
integer |
stopId |
The referenced stop id. |
string |
stopIdFieldName |
The name of the stop id field (e.g. |
string |
A trip id field from GTFS file
transfers.txt
references a route that does not match itstrips.txt
route_id
.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number from |
integer |
expectedRouteId |
The expected route id from |
string |
routeFieldName |
The name of the route id field (e.g. |
string |
routeId |
The referenced route id. |
string |
tripFieldName |
The name of the trip id field (e.g. |
string |
tripId |
The referenced trip id. |
string |
A trip id field from GTFS file
transfers.txt
references a stop that is not included in the referenced trip's stop-times.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number from |
integer |
stopFieldName |
The name of the stop id field (e.g. |
string |
stopId |
The referenced stop id. |
string |
tripFieldName |
The name of the trip id field (e.g. |
string |
tripId |
The referenced trip id. |
string |
A trip id field from GTFS file
transfers.txt
with an in-seat transfer type references a stop that is not in the expected position in the trip's stop-times.
For in-seat transfers, we expect the stop to be the last stop-time in the trip sequence for
from_stop_id
and the first stop-time for to_stop_id
. If you are intentionally using this
feature to model mid-trip transfers, you can ignore this warning, but be aware that this
functionality is still considered to be partially experimental in some interpretations of the
spec.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number from |
integer |
stopId |
The referenced stop id. |
string |
stopIdFieldName |
The name of the stop id field (e.g. |
string |
tripId |
The referenced trip id. |
string |
tripIdFieldName |
The name of the trip id field (e.g. |
string |
An entity with the given
record_id
andrecord_sub_id
cannot be found in the referenced table.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
recordId |
|
string |
recordSubId |
|
string |
tableName |
|
string |
A field in a translations row has value but must be empty.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
fieldName |
The name of the field that was expected to be empty. |
string |
fieldValue |
Actual value of the field that was expected to be empty. |
string |
A translation references an unknown or missing GTFS table.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
tableName |
|
string |
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.
Field name | Description | Type |
---|---|---|
currentDate |
Current date (YYYYMMDD format). |
string |
serviceWindowEndDate |
The end date of the majority service window. |
string |
serviceWindowStartDate |
The start date of the majority service window. |
string |
The distance between the last shape point and last stop point is greater than or equal to the 11.1m threshold.
Field name | Description | Type |
---|---|---|
geoDistanceToShape |
The distance in meters between the shape and the stop. |
number |
maxShapeDistanceTraveled |
The faulty record's shape max distance traveled. |
number |
maxTripDistanceTraveled |
The faulty record's trip max distance traveled. |
number |
shapeId |
The faulty record's shape id. |
string |
tripId |
The faulty record's trip id. |
string |
The distance between the last shape point and last stop point is greater than 0 but less than the 11.1m threshold.
Field name | Description | Type |
---|---|---|
geoDistanceToShape |
The distance in meters between the shape and the stop. |
number |
maxShapeDistanceTraveled |
The faulty record's shape max distance traveled. |
number |
maxTripDistanceTraveled |
The faulty record's trip max distance traveled. |
number |
shapeId |
The faulty record's shape id. |
string |
tripId |
The faulty record's trip id. |
string |
A string could not be parsed as a URI reference.
Field name | Description | Type |
---|---|---|
exception |
The name of the exception. |
string |
message |
The error message that explains the reason for the exception. |
string |
An enum has an unexpected value.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
fieldName |
The name of the field where the error occurred. |
string |
fieldValue |
Faulty value. |
integer |
filename |
The name of the faulty file. |
string |
A column name is unknown.
Field name | Description | Type |
---|---|---|
fieldName |
The name of the unknown column. |
string |
filename |
The name of the faulty file. |
string |
index |
The index of the faulty column. |
integer |
A file is unknown.
Field name | Description | Type |
---|---|---|
filename |
The name of the unknown file. |
string |
An unsupported feature type is used in the
locations.geojson
file.
Use Feature
instead to comply with the spec.
Field name | Description | Type |
---|---|---|
featureId |
The id of the faulty record. |
string |
featureIndex |
The value of the unsupported GeoJSON type. |
integer |
featureType |
The feature type of the faulty record. |
string |
An unsupported GeoJSON type is used in the
locations.geojson
file.
Use FeatureCollection
instead to comply with the spec.
Field name | Description | Type |
---|---|---|
geoJsonType |
The value of the unsupported GeoJSON type. |
string |
A GeoJSON feature has an unsupported geometry type in
locations.geojson
.
Each feature must have a geometry type that is supported by the GTFS spec. The supported
geometry types Polygon
and MultiPolygon
.
Field name | Description | Type |
---|---|---|
featureId |
The id of the faulty record. |
string |
featureIndex |
The index of the feature in the feature collection. |
integer |
geometryType |
The geometry type of the faulty record. |
string |
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.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
tripId |
The faulty record's id. |
string |
Unused parent station.
A stop has location_type
STATION (1) but does not appear in any stop's parent_station
.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
stopId |
The id of the faulty stop. |
string |
stopName |
The name of the faulty stop. |
string |
Shape is not used in GTFS file
trips.txt
.
All records defined by GTFS shapes.txt
should be used in trips.txt
.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
shapeId |
The faulty record's id. |
string |
Trip is not be used in
stop_times.txt
Trips should be referred to at least once in stop_times.txt
.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
tripId |
The faulty record's id. |
string |
Incorrect type of the parent location.
Value of field location_type
of parent found in field parent_station
is invalid.
According to spec
Any other combination raise this error.
Field name | Description | Type |
---|---|---|
csvRowNumber |
The row number of the faulty record. |
integer |
expectedLocationType |
The expected location type of the faulty record. |
integer |
locationType |
The faulty record's |
integer |
parentCsvRowNumber |
The row number of the faulty record's parent. |
integer |
parentLocationType |
The location type of the faulty record's parent. |
integer |
parentStation |
The id of the faulty record's parent station. |
string |
parentStopName |
The stop name of the faulty record's parent. |
string |
stopId |
The id of the faulty record. |
string |
stopName |
The faulty record's |
string |