Validator Rules

Introduction

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.

Severities

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.

Top
Table of ERROR notices

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 shape_dist_traveled in stop_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.

decreasing_shape_distance

Decreasing shape_dist_traveled in shapes.txt.

When sorted by shape.shape_pt_sequence, two consecutive shape points must not have decreasing values for shape_dist_traveled.

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 shape_dist_traveled and different lat/lon coordinates in shapes.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.

fare_transfer_rule_duration_limit_type_without_duration_limit

A row from GTFS file fare_transfer_rules.txt has a defined duration_limit_type field but no duration_limit specified.

fare_transfer_rule_duration_limit_without_type

A row from GTFS file fare_transfer_rules.txt has a defined duration_limit field but no duration_limit_type specified.

fare_transfer_rule_invalid_transfer_count

A row from GTFS file fare_transfer_rules.txt has a defined transfer_count with an invalid value.

fare_transfer_rule_missing_transfer_count

A row from fare_transfer_rules.txt has from_leg_group_id equal to to_leg_group_id, but has no transfer_count specified.

Per the spec, transfer_count is required if the two leg group ids are equal.

fare_transfer_rule_with_forbidden_transfer_count

A row from fare_transfer_rules.txt has from_leg_group_id not equal to to_leg_group_id, but has transfer_count specified.

Per the spec, transfer_count is forbidden if the two leg group ids are not equal.

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 booking_rules.txt

forbidden_prior_notice_start_day

prior_notice_start_day value is forbidden when prior_notice_duration_max is set.

forbidden_prior_notice_start_time

prior_notice_start_time value is forbidden when prior_notice_start_day value is not set in booking_rules.txt.

forbidden_real_time_booking_field_value

A forbidden field value is present for a real-time booking rule in booking_rules.txt.

forbidden_same_day_booking_field_value

A forbidden field value is present for a same-day booking rule in booking_rules.txt.

forbidden_shape_dist_traveled

A stop_time entry has a shape_dist_traveled without a stop_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.

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 agency.txt have been found to have different timezones.

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: FFFFFF for white, 000000 for black or 0039A6 for the A,C,E lines in NYC MTA.

invalid_currency

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.

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: 20180913 for September 13th, 2018.

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 locations.geojson is unparsable or invalid.

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: en for English, en-US for American English or de for German.

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 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.

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 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.

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: Asia/Tokyo, America/Los_Angeles or Africa/Cairo.

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 stops.txt that is not a stop is referenced by some stop_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.

location_without_parent_station

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.

malformed_json

A JSON file is malformed.

missing_calendar_and_calendar_date_files

Missing GTFS files calendar.txt and calendar_dates.txt.

At least one of the files must be provided.

missing_level_id

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.

missing_prior_day_booking_field_value

prior_notice_last_day and prior_notice_last_time values are required for prior day booking_type in booking_rules.txt.

missing_prior_notice_duration_min

prior_notice_duration_min value is required for same day booking_type in booking_rules.txt.

missing_prior_notice_start_time

prior_notice_start_time value is required when prior_notice_start_day value is set in booking_rules.txt.

missing_required_column

A required column is missing in the input file.

missing_required_element

A required element is missing in locations.geojson.

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 .txt files: select all the .txt files, right-click, and compress. Do not compress the folder containing the files.

missing_stop_name

stops.stop_name is required for location_type equal to 0, 1, or 2.

stops.stop_name is required for locations that are stops (location_type=0), stations (location_type=1) or entrances/exits (location_type=2).

missing_trip_edge

Missing trip edge arrival_time or departure_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."

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"".

f11,"f12
f21,"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 X.start_time <= Y.start_time and Y.start_time < X.end_time.

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 (0, 0).

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_short_name and route_long_name are missing for a route.

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 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.

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 calendar.txt, feed_info.txt and stop_times.txt.

station_with_parent_station

A station has parent_station field set.

Field parent_station must be empty when location_type is 1.

stop_time_timepoint_without_times

arrival_time or departure_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.

stop_time_with_arrival_before_previous_departure_time

Backwards time travel between stops in stop_times.txt

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

stop_time_with_only_arrival_or_departure_time

Missing stop_times.arrival_time or stop_times.departure_time.

stop_without_location

stop_lat and/or stop_lon is missing for stop with location_type equal to0, 1, or 2

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).

thread_execution_error

ExecutionException during multithreaded validation

An ExecutionException occurred during multithreaded validation.

timeframe_only_start_or_end_time_specified

A row from timeframes.txt was found with only one of start_time and end_time specified.

Either both must be specified or neither must be specified.

timeframe_overlap

Two entries in timeframes.txt with the same timeframe_group_id and service_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.

timeframe_start_or_end_time_greater_than_twenty_four_hours

A time in timeframes.txt is greater than 24:00:00.

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 transfers.txt references a stop that has a location_type other than 0 or 1 (aka Stop/Platform or Station).

transfer_with_invalid_trip_and_route

A trip id field from GTFS file transfers.txt references a route that does not match its trips.txt route_id.

transfer_with_invalid_trip_and_stop

A trip id field from GTFS file transfers.txt references a stop that is not included in the referenced trip's stop-times.

translation_foreign_key_violation

An entity with the given record_id and record_sub_id cannot be found in the referenced table.

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 locations.geojson file.

Use Feature instead to comply with the spec.

unsupported_geo_json_type

An unsupported GeoJSON type is used in the locations.geojson file.

Use FeatureCollection instead to comply with the spec.

unsupported_geometry_type

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.

wrong_parent_location_type

Incorrect type of the parent location.

Value of field location_type of parent found in field parent_station is invalid.

According to spec

  • Stop/platform can only have Station as parent
  • Station can NOT have a parent
  • Entrance/exit or generic node can only have Station as parent
  • Boarding Area can only have Platform as parent

Any other combination raise this error.

Top
Table of WARNING notices

Notice code Description
attribution_without_role

Attribution with no role.

At least one of the fields is_producer, is_operator, or is_authority should be set to 1.

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 route_short_name, the same route_long_name, or the same combination of route_short_name and route_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
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 shape_dist_traveled and different lat/lon coordinates in shapes.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.

equal_shape_distance_same_coordinates

Two consecutive points have equal shape_dist_traveled and the same lat/lon coordinates in shapes.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.

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.

fast_travel_between_consecutive_stops

A transit vehicle moves too fast between two consecutive stops.

The speed threshold depends on route type:

Route type Description Threshold, km/h
0 Light rail 100
1 Subway 150
2 Rail 500
3 Bus 150
4 Ferry 80
5 Cable tram 30
6 Aerial lift 50
7 Funicular 50
11 Trolleybus 150
12 Monorail 150
- Unknown 200
fast_travel_between_far_stops

A transit vehicle moves too fast between two far stops.

Two stops are considered "far" if they are more than 10 km apart. This normally indicates a more serious problem than too fast travel between consecutive stops.

The speed threshold depends on route type and are the same as fast_travel_between_consecutive_stops.

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.txt is in seven days or less. At any time, the published GTFS dataset should be valid for at least the next 7 days.

feed_info_lang_and_agency_lang_mismatch

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.

  • If feed_lang is not mul and does not match with agency_lang, that's an error.
  • If there is more than one agency_lang and feed_lang isn't mul, that's an error.
  • If feed_lang is mul and there isn't more than one agency_lang, that's an error.
inconsistent_agency_lang

Inconsistent language among agencies.

Agencies from GTFS agency.txt have been found to have different languages.

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 feed_info.txt suggest providing at least one of feed_contact_email and feed_contact_url.

missing_feed_info_date

One of feed_start_date or feed_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.

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

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.

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"
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 from_stop_id and to_stop_id.

route_color_contrast

Insufficient route color contrast.

A route's color and route_text_color should be contrasting.

route_long_name_contains_short_name

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"
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 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.

same_name_and_description_for_stop

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.

same_route_and_agency_url

Same routes.route_url and agency.agency_url.

A route should not have the same routes.route_url as a record from agency.txt.

same_stop_and_agency_url

Same stops.stop_url and agency.agency_url.

A stop should not have the same stops.stop_url as a record from agency.txt.

same_stop_and_route_url

Same stops.stop_url and routes.route_url.

A stop should not have the same stop.stop_url as a record from routes.txt.

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

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 shapes.txt.

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 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.

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 shapes.txt as defined by shape_dist_traveled values.

stop_without_stop_time

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

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

stops_match_shape_out_of_order

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.

transfer_with_suspicious_mid_trip_in_seat

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.

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 trips.txt.

All records defined by GTFS shapes.txt should be used in trips.txt.

unused_trip

Trip is not be used in stop_times.txt

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

Top
Table of INFO notices

Notice code Description
platform_without_parent_station

A platform has no parent_station field set.

This is different from location_without_parent_station since it is less severe.

stop_without_zone_id

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.

unknown_column

A column name is unknown.

unknown_file

A file is unknown.

unused_parent_station

Unused parent station.

A stop has location_type STATION (1) but does not appear in any stop's parent_station.

Notice details

Table
attribution_without_role

Attribution with no role.

At least one of the fields is_producer, is_operator, or is_authority should be set to 1.

References

Fields
Field name Description Type
attributionId

The id of the faulty record.

string
csvRowNumber

The row number of the faulty record.

integer

Table
bidirectional_exit_gate

Pathway is bidirectional and has mode 7 (exit gate).

Exit gates (pathway_mode=7) must not be bidirectional.

References

Fields
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

Table
block_trips_with_overlapping_stop_times

Trips with the same block id have overlapping stop times.

References

Fields
Field name Description Type
blockId

The trips.block_id of the overlapping trip.

string
csvRowNumberA

The row number from trips.txt of the first faulty trip.

integer
csvRowNumberB

The row number from trips.txt of the second faulty trip.

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

Table
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.

Fields
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

Table
decreasing_or_equal_stop_time_distance

Decreasing or equal shape_dist_traveled in stop_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.

References

Fields
Field name Description Type
csvRowNumber

The row number from stop_times.txt.

integer
prevCsvRowNumber

The row number from stop_times.txt of the previous stop time.

integer
prevShapeDistTraveled

Actual distance traveled along the shape from the first shape point to the previous stop time.

number
prevStopSequence

The previous record's stop_times.stop_sequence.

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 stop_times.stop_sequence.

integer
tripId

The id of the faulty trip.

string

Table
decreasing_shape_distance

Decreasing shape_dist_traveled in shapes.txt.

When sorted by shape.shape_pt_sequence, two consecutive shape points must not have decreasing values for shape_dist_traveled.

References

Fields
Field name Description Type
csvRowNumber

The row number from shapes.txt.

integer
prevCsvRowNumber

The row number from shapes.txt of the previous shape point.

integer
prevShapeDistTraveled

Actual distance traveled along the shape from the first shape point to the previous shape point.

number
prevShapePtSequence

The previous record's shapes.shape_pt_sequence.

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 shapes.shape_pt_sequence.

integer

Table
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.

References

Fields
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

Table
duplicate_key

Duplicated entity.

The values of the given key and rows are duplicates.

References

Fields
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

Table
duplicate_route_name

Two distinct routes have either the same route_short_name, the same route_long_name, or the same combination of route_short_name and route_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

References

Fields
Field name Description Type
agencyId

Common routes.agency_id.

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 routes.route_long_name.

string
routeShortName

Common routes.route_short_name.

string
routeTypeValue

Common routes.route_type.

integer

Table
duplicated_column

Duplicated column in CSV.

The input file CSV header has the same column name repeated.

References

Fields
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

Table
empty_column_name

A column name is empty.

Such columns are skipped by the validator.

References

Fields
Field name Description Type
filename

The name of the faulty file.

string
index

The index of the empty column.

integer

Table
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.

References

Fields
Field name Description Type
filename

The name of the faulty file.

string

Table
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.

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
filename

The name of the faulty file.

string

Table
equal_shape_distance_diff_coordinates

Two consecutive points have equal shape_dist_traveled and different lat/lon coordinates in shapes.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.

References

Fields
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 shapes.txt.

integer
prevCsvRowNumber

The row number from shapes.txt of the previous shape point.

integer
prevShapeDistTraveled

The previous shape point's shape_dist_traveled value.

number
prevShapePtSequence

The previous record's shapes.shape_pt_sequence.

integer
shapeDistTraveled

The faulty record's shape_dist_traveled value.

number
shapeId

The id of the faulty shape.

string
shapePtSequence

The faulty record's shapes.shape_pt_sequence.

integer

Table
equal_shape_distance_diff_coordinates_distance_below_threshold

Two consecutive points have equal shape_dist_traveled and different lat/lon coordinates in shapes.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.

References

Fields
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 shapes.txt.

integer
prevCsvRowNumber

The row number from shapes.txt of the previous shape point.

integer
prevShapeDistTraveled

The previous shape point's shape_dist_traveled value.

number
prevShapePtSequence

The previous record's shapes.shape_pt_sequence.

integer
shapeDistTraveled

The faulty record's shape_dist_traveled value.

number
shapeId

The id of the faulty shape.

string
shapePtSequence

The faulty record's shapes.shape_pt_sequence.

integer

Table
equal_shape_distance_same_coordinates

Two consecutive points have equal shape_dist_traveled and the same lat/lon coordinates in shapes.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.

References

Fields
Field name Description Type
csvRowNumber

The row number from shapes.txt.

integer
prevCsvRowNumber

The row number from shapes.txt of the previous shape point.

integer
prevShapeDistTraveled

Actual distance traveled along the shape from the first shape point to the previous shape point.

number
prevShapePtSequence

The previous record's shapes.shape_pt_sequence.

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 shapes.shape_pt_sequence.

integer

Table
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.

References

Fields
Field name Description Type
csvRowNumber

The row of the faulty record.

integer
serviceId

The service id of the faulty record.

string

Table
fare_transfer_rule_duration_limit_type_without_duration_limit

A row from GTFS file fare_transfer_rules.txt has a defined duration_limit_type field but no duration_limit specified.

References

Fields
Field name Description Type
csvRowNumber

The row of the faulty record.

integer

Table
fare_transfer_rule_duration_limit_without_type

A row from GTFS file fare_transfer_rules.txt has a defined duration_limit field but no duration_limit_type specified.

References

Fields
Field name Description Type
csvRowNumber

The row of the faulty record.

integer

Table
fare_transfer_rule_invalid_transfer_count

A row from GTFS file fare_transfer_rules.txt has a defined transfer_count with an invalid value.

References

Fields
Field name Description Type
csvRowNumber

The row of the faulty record.

integer
transferCount

The transfer count value of the faulty record.

integer

Table
fare_transfer_rule_missing_transfer_count

A row from fare_transfer_rules.txt has from_leg_group_id equal to to_leg_group_id, but has no transfer_count specified.

Per the spec, transfer_count is required if the two leg group ids are equal.

References

Fields
Field name Description Type
csvRowNumber

The row of the faulty record.

integer

Table
fare_transfer_rule_with_forbidden_transfer_count

A row from fare_transfer_rules.txt has from_leg_group_id not equal to to_leg_group_id, but has transfer_count specified.

Per the spec, transfer_count is forbidden if the two leg group ids are not equal.

References

Fields
Field name Description Type
csvRowNumber

The row of the faulty record.

integer

Table
fast_travel_between_consecutive_stops

A transit vehicle moves too fast between two consecutive stops.

The speed threshold depends on route type:

Route type Description Threshold, km/h
0 Light rail 100
1 Subway 150
2 Rail 500
3 Bus 150
4 Ferry 80
5 Cable tram 30
6 Aerial lift 50
7 Funicular 50
11 Trolleybus 150
12 Monorail 150
- Unknown 200

References

Fields
Field name Description Type
arrivalTime2

arrival_time of the second stop.

string
csvRowNumber1

The row number of the first stop time.

integer
csvRowNumber2

The row number of the second stop time.

integer
departureTime1

departure_time of the first stop.

string
distanceKm

Distance between stops (km).

number
routeId

route_id of the problematic trip.

string
speedKph

Travel speed (km/h).

number
stopId1

stop_id of the first stop.

string
stopId2

stop_id of the second stop.

string
stopName1

stop_name of the first stop.

string
stopName2

stop_name of the second stop.

string
stopSequence1

stop_sequence of the first stop.

integer
stopSequence2

stop_sequence of the second stop.

integer
tripCsvRowNumber

The row number of the problematic trip.

integer
tripId

trip_id of the problematic trip.

string

Table
fast_travel_between_far_stops

A transit vehicle moves too fast between two far stops.

Two stops are considered "far" if they are more than 10 km apart. This normally indicates a more serious problem than too fast travel between consecutive stops.

The speed threshold depends on route type and are the same as fast_travel_between_consecutive_stops.

References

Fields
Field name Description Type
arrivalTime2

arrival_time of the second stop.

string
csvRowNumber1

The row number of the first stop time.

integer
csvRowNumber2

The row number of the second stop time.

integer
departureTime1

departure_time of the first stop.

string
distanceKm

Distance between stops (km).

number
routeId

route_id of the problematic trip.

string
speedKph

Travel speed (km/h).

number
stopId1

stop_id of the first stop.

string
stopId2

stop_id of the second stop.

string
stopName1

stop_name of the first stop.

string
stopName2

stop_name of the second stop.

string
stopSequence1

stop_sequence of the first stop.

integer
stopSequence2

stop_sequence of the second stop.

integer
tripCsvRowNumber

The row number of the problematic trip.

integer
tripId

trip_id of the problematic trip.

string

Table
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.

References

Fields
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

Table
feed_expiration_date7_days

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.

References

Fields
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

Table
feed_info_lang_and_agency_lang_mismatch

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.

  • If feed_lang is not mul and does not match with agency_lang, that's an error.
  • If there is more than one agency_lang and feed_lang isn't mul, that's an error.
  • If feed_lang is mul and there isn't more than one agency_lang, that's an error.

References

Fields
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

Table
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.

References

Fields
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

Table
forbidden_prior_day_booking_field_value

A forbidden field value is present for a prior-day booking rule in booking_rules.txt

References

Fields
Field name Description Type
bookingRuleId

The booking_rules.booking_rule_id of the faulty record.

string
csvRowNumber

The row number of the faulty record.

integer
fieldNames

The names of the forbidden fields comma-separated.

string

Table
forbidden_prior_notice_start_day

prior_notice_start_day value is forbidden when prior_notice_duration_max is set.

References

Fields
Field name Description Type
bookingRuleId

The booking_rules.booking_rule_id of the faulty record.

string
csvRowNumber

The row number of the faulty record.

integer
priorNoticeDurationMax

The value of the prior_notice_duration_max field.

integer
priorNoticeStartDay

The value of the prior_notice_duration_min field.

integer

Table
forbidden_prior_notice_start_time

prior_notice_start_time value is forbidden when prior_notice_start_day value is not set in booking_rules.txt.

References

Fields
Field name Description Type
bookingRuleId

The booking_rules.booking_rule_id of the faulty record.

string
csvRowNumber

The row number of the faulty record.

integer
priorNoticeStartTime

The value of the prior_notice_start_time field.

string

Table
forbidden_real_time_booking_field_value

A forbidden field value is present for a real-time booking rule in booking_rules.txt.

References

Fields
Field name Description Type
bookingRuleId

The booking_rules.booking_rule_id of the faulty record.

string
csvRowNumber

The row number of the faulty record.

integer
fieldNames

The names of the forbidden fields comma-separated.

string

Table
forbidden_same_day_booking_field_value

A forbidden field value is present for a same-day booking rule in booking_rules.txt.

References

Fields
Field name Description Type
bookingRuleId

The booking_rules.booking_rule_id of the faulty record.

string
csvRowNumber

The row number of the faulty record.

integer
fieldNames

The names of the forbidden fields comma-separated.

string

Table
forbidden_shape_dist_traveled

A stop_time entry has a shape_dist_traveled without a stop_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.

References

Fields
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

Table
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.

References

Fields
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

Table
i_o_error

Error in IO operation.

Fields
Field name Description Type
exception

The name of the exception.

string
message

The error message that explains the reason for the exception.

string

Table
inconsistent_agency_lang

Inconsistent language among agencies.

Agencies from GTFS agency.txt have been found to have different languages.

References

Fields
Field name Description Type
actual

Faulty record's language.

string
csvRowNumber

The row of the faulty record.

integer
expected

Expected language.

string

Table
inconsistent_agency_timezone

Inconsistent Timezone among agencies.

Agencies from GTFS agency.txt have been found to have different timezones.

References

Fields
Field name Description Type
actual

Faulty record's timezone.

string
csvRowNumber

The row of the faulty record.

integer
expected

Expected timezone.

string

Table
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.

Fields
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

Table
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: FFFFFF for white, 000000 for black or 0039A6 for the A,C,E lines in NYC MTA.

References

Fields
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

Table
invalid_currency

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.

References

Fields
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

Table
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

References

Fields
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

Table
invalid_date

A field cannot be parsed as date.

Dates must have the YYYYMMDD format.

Example: 20180913 for September 13th, 2018.

References

Fields
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

Table
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.

References

Fields
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

Table
invalid_float

A field cannot be parsed as a floating point number.

References

Fields
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

Table
invalid_geometry

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 .

Fields
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

Table
invalid_input_files_in_subfolder

At least 1 GTFS file is in a subfolder.

All GTFS files must reside at the root level directly.

Fields
Field name Description Type
message

The error message that explains the reason for the exception.

string

Table
invalid_integer

A field cannot be parsed as an integer.

References

Fields
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

Table
invalid_language_code

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.

References

Fields
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

Table
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.

References

Fields
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

Table
invalid_prior_notice_duration_min

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.

References

Fields
Field name Description Type
bookingRuleId

The booking_rules.booking_rule_id of the faulty record.

string
csvRowNumber

The row number of the faulty record.

integer
priorNoticeDurationMax

The value of the prior_notice_duration_max field.

integer
priorNoticeDurationMin

The value of the prior_notice_duration_min field.

integer

Table
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.

References

Fields
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

Table
invalid_time

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.

References

Fields
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

Table
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: Asia/Tokyo, America/Los_Angeles or Africa/Cairo.

References

Fields
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

Table
invalid_url

A field contains a malformed URL.

Definitions for valid URLs are quite vague. We perform strict validation using the Apache Commons UrlValidator.

References

Fields
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

Table
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.

References

Fields
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

Table
location_with_unexpected_stop_time

A location in stops.txt that is not a stop is referenced by some stop_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.

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record from stops.txt.

integer
stopId

The id of the faulty record from stops.txt.

string
stopName

The stops.stop_name of the faulty record.

string
stopTimeCsvRowNumber

The row number of the faulty record from stop_times.txt.

integer

Table
location_without_parent_station

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.

References

Fields
Field name Description Type
csvRowNumber

The row of the faulty record.

integer
locationType

The stops.location_type of the faulty record.

integer
stopId

The id of the faulty record.

string
stopName

The stops.stop_name of the faulty record.

string

Table
malformed_json

A JSON file is malformed.

Fields
Field name Description Type
filename

The name of the faulty file.

string

Table
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.

References

Fields
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

Table
missing_calendar_and_calendar_date_files

Missing GTFS files calendar.txt and calendar_dates.txt.

At least one of the files must be provided.

References

Fields
Field name Description Type

Table
missing_feed_contact_email_and_url

Best Practices for feed_info.txt suggest providing at least one of feed_contact_email and feed_contact_url.

References

Fields
Field name Description Type
csvRowNumber

The row number of the validated record.

integer

Table
missing_feed_info_date

One of feed_start_date or feed_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.

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
fieldName

Either feed_end_date or feed_start_date.

string

Table
missing_level_id

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.

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
stopId

The id of the faulty stop from stops.txt.

string
stopName

The name of the faulty stop from stops.txt.

string

Table
missing_prior_day_booking_field_value

prior_notice_last_day and prior_notice_last_time values are required for prior day booking_type in booking_rules.txt.

References

Fields
Field name Description Type
bookingRuleId

The booking_rules.booking_rule_id of the faulty record.

string
csvRowNumber

The row number of the faulty record.

integer

Table
missing_prior_notice_duration_min

prior_notice_duration_min value is required for same day booking_type in booking_rules.txt.

References

Fields
Field name Description Type
bookingRuleId

The booking_rules.booking_rule_id of the faulty record.

string
csvRowNumber

The row number of the faulty record.

integer

Table
missing_prior_notice_start_time

prior_notice_start_time value is required when prior_notice_start_day value is set in booking_rules.txt.

References

Fields
Field name Description Type
bookingRuleId

The booking_rules.booking_rule_id of the faulty record.

string
csvRowNumber

The row number of the faulty record.

integer
priorNoticeStartDay

The value of the prior_notice_start_day field.

integer

Table
missing_required_column

A required column is missing in the input file.

References

Fields
Field name Description Type
fieldName

The name of the missing column.

string
filename

The name of the faulty file.

string

Table
missing_required_element

A required element is missing in locations.geojson.

Fields
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

Table
missing_required_field

A required field is missing.

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

References

Fields
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

Table
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 .txt files: select all the .txt files, right-click, and compress. Do not compress the folder containing the files.

References

Fields
Field name Description Type
filename

The name of the faulty file.

string

Table
missing_stop_name

stops.stop_name is required for location_type equal to 0, 1, or 2.

stops.stop_name is required for locations that are stops (location_type=0), stations (location_type=1) or entrances/exits (location_type=2).

References

Fields
Field name Description Type
csvRowNumber

The row of the faulty record.

integer
locationType

stops.location_type of the faulty record.

enum
stopId

The stops.stop_id of the faulty record.

string

Table
missing_timepoint_value

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.

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
stopSequence

The faulty record's stop_times.stop_sequence.

integer
tripId

The faulty record's stop_times.trip_id.

string

Table
missing_trip_edge

Missing trip edge arrival_time or departure_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."

References

Fields
Field name Description Type
csvRowNumber

The row of the faulty record.

integer
specifiedField

Name of the missing field.

string
stopSequence

stops.stop_sequence of the faulty record.

integer
tripId

The trips.trip_id of the faulty record.

string

Table
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").

References

Fields
Field name Description Type
entityCount

Number of occurrences.

integer
filename

Name of the faulty file.

string

Table
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"".

f11,"f12
f21,"f22"

References

Fields
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

Table
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.

References

Fields
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

Table
number_out_of_range

Out of range value.

The values in the given column of the input rows are out of range.

References

Fields
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

Table
overlapping_frequency

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.

References

Fields
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

Table
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.

References

Fields
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

Table
pathway_loop

A pathway starts and ends at the same location.

A pathway should not have same values for from_stop_id and to_stop_id.

References

Fields
Field name Description Type
csvRowNumber

Row number of the faulty row from pathways.txt.

integer
pathwayId

The id of the faulty record.

string
stopId

The pathway.stop_id that is repeated in pathways.from_stop_id and pathways.to_stop_id.

string

Table
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.

References

Fields
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

Table
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.

References

Fields
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

Table
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.

References

Fields
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

Table
platform_without_parent_station

A platform has no parent_station field set.

This is different from location_without_parent_station since it is less severe.

References

Fields
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

Table
point_near_origin

A point is too close to origin (0, 0).

References

Fields
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

Table
point_near_pole

A point is too close to the North or South Pole.

References

Fields
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

Table
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.

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
priorNoticeLastDay

The value of the prior_notice_last_day of the faulty field.

integer
priorNoticeStartDay

The value of the prior_notice_start_day of the faulty field.

integer

Table
route_both_short_and_long_name_missing

Both route_short_name and route_long_name are missing for a route.

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
routeId

The id of the faulty record.

string

Table
route_color_contrast

Insufficient route color contrast.

A route's color and route_text_color should be contrasting.

References

Fields
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

Table
route_long_name_contains_short_name

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"

References

Fields
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 route_long_name.

string
routeShortName

The faulty record's route_short_name.

string

Table
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.

References

Fields
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

Table
route_short_name_too_long

Short name of a route is too long (more than 12 characters).

References

Fields
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 route_short_name.

string

Table
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.

Fields
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

Table
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.

Fields
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

Table
same_name_and_description_for_route

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.

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
routeDesc

The routes.routes_desc of the faulty record.

string
routeId

The id of the faulty record.

string
specifiedField

Either route_short_name or route_long_name.

string

Table
same_name_and_description_for_stop

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.

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
stopDesc

The faulty record's stop_desc.

string
stopId

The id of the faulty record.

string

Table
same_route_and_agency_url

Same routes.route_url and agency.agency_url.

A route should not have the same routes.route_url as a record from agency.txt.

References

Fields
Field name Description Type
agencyCsvRowNumber

The row number of the faulty record from agency.txt.

integer
agencyName

The faulty record's referenced agency name.

string
routeCsvRowNumber

The row number of the faulty record from routes.txt.

integer
routeId

The faulty record's id.

string
routeUrl

The duplicate URL value

string

Table
same_stop_and_agency_url

Same stops.stop_url and agency.agency_url.

A stop should not have the same stops.stop_url as a record from agency.txt.

References

Fields
Field name Description Type
agencyCsvRowNumber

The row number of the faulty record from agency.txt.

integer
agencyName

The faulty record's agency.agency_name.

string
stopCsvRowNumber

The row number of the faulty record from stops.txt.

integer
stopId

The faulty record's id.

string
stopUrl

The duplicate URL value.

string

Table
same_stop_and_route_url

Same stops.stop_url and routes.route_url.

A stop should not have the same stop.stop_url as a record from routes.txt.

References

Fields
Field name Description Type
routeCsvRowNumber

The row number of the faulty record from routes.txt.

integer
routeId

The faulty record's id from `routes.txt.

string
stopCsvRowNumber

The row number of the faulty record from stops.txt.

integer
stopId

The faulty record's id.

string
stopUrl

The duplicate URL value.

string

Table
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

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
shapeId

The faulty record's id.

string

Table
start_and_end_range_equal

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.

References

Fields
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

Table
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 calendar.txt, feed_info.txt and stop_times.txt.

References

Fields
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

Table
station_with_parent_station

A station has parent_station field set.

Field parent_station must be empty when location_type is 1.

References

Fields
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

Table
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 shapes.txt.

This potentially indicates a problem with the location of the stop or the path of the shape.

References

Fields
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 stop_times.txt.

integer
tripCsvRowNumber

The row number of the faulty record from trips.txt.

integer
tripId

The id of the trip that is referred to.

string

Table
stop_time_timepoint_without_times

arrival_time or departure_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.

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
specifiedField

Either departure_time or arrival_time.

string
stopSequence

The faulty record's stops.stop_sequence.

integer
tripId

The faulty record's id.

string

Table
stop_time_with_arrival_before_previous_departure_time

Backwards time travel between stops in stop_times.txt

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

References

Fields
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

Table
stop_time_with_only_arrival_or_departure_time

Missing stop_times.arrival_time or stop_times.departure_time.

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
specifiedField

Either arrival_time or departure_time

string
stopSequence

The sequence of the faulty stop.

integer
tripId

The trip_id associated to the faulty record.

string

Table
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.

References

Fields
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 stop_times.txt.

integer
tripCsvRowNumber

The row number of the faulty record from trips.txt.

integer
tripId

The id of the trip that is referred to.

string

Table
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 shapes.txt as defined by shape_dist_traveled values.

References

Fields
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 stop_times.txt.

integer
tripCsvRowNumber

The row number of the faulty record from trips.txt.

integer
tripId

The id of the trip that is referred to.

string

Table
stop_without_location

stop_lat and/or stop_lon is missing for stop with location_type equal to0, 1, or 2

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).

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
locationType

The faulty record's stops.location_type.

enum
stopId

The faulty record's id.

string

Table
stop_without_stop_time

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

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

References

Fields
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

Table
stop_without_zone_id

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.

References

Fields
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 stops.stop_name.

string

Table
stops_match_shape_out_of_order

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.

References

Fields
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 stop_times.txt.

integer
stopTimeCsvRowNumber2

The row number of the second faulty record from stop_times.txt.

integer
tripCsvRowNumber

The row number of the faulty record from trips.txt.

integer
tripId

The id of the trip that is referred to.

string

Table
thread_execution_error

ExecutionException during multithreaded validation

An ExecutionException occurred during multithreaded validation.

Fields
Field name Description Type
exception

The name of the exception.

string
message

The error message that explains the reason for the exception.

string

Table
timeframe_only_start_or_end_time_specified

A row from timeframes.txt was found with only one of start_time and end_time specified.

Either both must be specified or neither must be specified.

References

Fields
Field name Description Type
csvRowNumber

The row number for the faulty record.

integer

Table
timeframe_overlap

Two entries in timeframes.txt with the same timeframe_group_id and service_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.

References

Fields
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

Table
timeframe_start_or_end_time_greater_than_twenty_four_hours

A time in timeframes.txt is greater than 24:00:00.

References

Fields
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

Table
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.

Fields
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

Table
transfer_with_invalid_stop_location_type

A stop id field from GTFS file transfers.txt references a stop that has a location_type other than 0 or 1 (aka Stop/Platform or Station).

References

Fields
Field name Description Type
csvRowNumber

The row number from transfers.txt for the faulty entry.

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. from_stop_id) referencing the stop.

string

Table
transfer_with_invalid_trip_and_route

A trip id field from GTFS file transfers.txt references a route that does not match its trips.txt route_id.

References

Fields
Field name Description Type
csvRowNumber

The row number from transfers.txt for the faulty entry.

integer
expectedRouteId

The expected route id from trips.txt.

string
routeFieldName

The name of the route id field (e.g. from_route_id) referencing the route.

string
routeId

The referenced route id.

string
tripFieldName

The name of the trip id field (e.g. from_trip_id) referencing a trip.

string
tripId

The referenced trip id.

string

Table
transfer_with_invalid_trip_and_stop

A trip id field from GTFS file transfers.txt references a stop that is not included in the referenced trip's stop-times.

References

Fields
Field name Description Type
csvRowNumber

The row number from transfers.txt for the faulty entry.

integer
stopFieldName

The name of the stop id field (e.g. stop_route_id) referencing the stop.

string
stopId

The referenced stop id.

string
tripFieldName

The name of the trip id field (e.g. from_trip_id) referencing a trip.

string
tripId

The referenced trip id.

string

Table
transfer_with_suspicious_mid_trip_in_seat

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.

Fields
Field name Description Type
csvRowNumber

The row number from transfers.txt for the faulty entry.

integer
stopId

The referenced stop id.

string
stopIdFieldName

The name of the stop id field (e.g. from_stop_id) referencing the stop.

string
tripId

The referenced trip id.

string
tripIdFieldName

The name of the trip id field (e.g. from_trip_id) referencing a trip.

string

Table
translation_foreign_key_violation

An entity with the given record_id and record_sub_id cannot be found in the referenced table.

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
recordId

record_id of the faulty record.

string
recordSubId

record_sub_id of the faulty record.

string
tableName

table_name of the faulty record.

string

Table
translation_unexpected_value

A field in a translations row has value but must be empty.

References

Fields
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

Table
translation_unknown_table_name

A translation references an unknown or missing GTFS table.

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
tableName

table_name of the faulty record.

string

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.

Fields
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

Table
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.

Fields
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

Table
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.

Fields
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

Table
u_r_i_syntax_error

A string could not be parsed as a URI reference.

Fields
Field name Description Type
exception

The name of the exception.

string
message

The error message that explains the reason for the exception.

string

Table
unexpected_enum_value

An enum has an unexpected value.

References

Fields
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

Table
unknown_column

A column name is unknown.

References

Fields
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

Table
unknown_file

A file is unknown.

References

Fields
Field name Description Type
filename

The name of the unknown file.

string

Table
unsupported_feature_type

An unsupported feature type is used in the locations.geojson file.

Use Feature instead to comply with the spec.

Fields
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

Table
unsupported_geo_json_type

An unsupported GeoJSON type is used in the locations.geojson file.

Use FeatureCollection instead to comply with the spec.

Fields
Field name Description Type
geoJsonType

The value of the unsupported GeoJSON type.

string

Table
unsupported_geometry_type

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.

Fields
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

Table
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.

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
tripId

The faulty record's id.

string

Table
unused_parent_station

Unused parent station.

A stop has location_type STATION (1) but does not appear in any stop's parent_station.

References

Fields
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

Table
unused_shape

Shape is not used in GTFS file trips.txt.

All records defined by GTFS shapes.txt should be used in trips.txt.

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
shapeId

The faulty record's id.

string

Table
unused_trip

Trip is not be used in stop_times.txt

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

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record.

integer
tripId

The faulty record's id.

string

Table
wrong_parent_location_type

Incorrect type of the parent location.

Value of field location_type of parent found in field parent_station is invalid.

According to spec

  • Stop/platform can only have Station as parent
  • Station can NOT have a parent
  • Entrance/exit or generic node can only have Station as parent
  • Boarding Area can only have Platform as parent

Any other combination raise this error.

References

Fields
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 stops.location_type.

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 stops.stop_name.

string