Validation Rules and Metadata

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_geo_json_key

A key in locations.geojson is duplicated.

The key must be unique for each feature in the GeoJSON file.

duplicate_geography_id

Geography id is duplicated across multiple files.

ID must be unique across all stops.stop_id, locations.geojson id, and location_groups.location_group_id values.

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_product_with_multiple_default_rider_categories

This notice is generated when a fare product is associated with multiple rider categories that are marked as default.

Each fare product should have at most one default rider category.

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_arrival_or_departure_time

The arrival or departure times are provided alongside pickup or drop-off windows in stop_times.txt.

This violates GTFS specification, as both cannot coexist for a single stop time record.

forbidden_continuous_pickup_drop_off

Continuous pickup or drop-off are forbidden when routes.continuous_pickup or routes.continuous_drop_off are 0, 2 or 3 and stop_times.start_pickup_drop_off_window or stop_times.end_pickup_drop_off_window are defined for any trip of this route.

forbidden_drop_off_type

pickup_drop_off_window fields are forbidden when the drop_off_type is regularly scheduled (0).

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_pickup_type

pickup_drop_off_window fields are forbidden when the pickup_type is regularly scheduled (0) or must be coordinated with the driver (3).

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.

geo_json_duplicated_element

Duplicated elements in locations.geojson 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. Check the formatting of your amount field so it matches the number of decimal places specified by the currency_code value.

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. There are two common cases that trigger this error:

  1. The root folder (e.g., a folder called "GTFS 2020") was zipped instead of the individual files within the folder (e.g., calendar.txt, agency.txt, etc.). This can be fixed by zipping the files directly instead.
  2. A file associated with GTFS is in a subfolder rather than the root folder of the dataset, and needs to be removed if not needed or moved to the root level.
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_pickup_drop_off_window

The pickup/drop-off window in stop_times.txt is invalid.

The end_pickup_drop_off_window must be strictly later than the start_pickup_drop_off_window.

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_pickup_or_drop_off_window

Either the start or end pickup/drop-off window is missing in stop_times.txt.

GTFS specification requires both the start and end pickup/drop-off windows to be provided together, if used.

missing_prior_notice_duration_min

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

missing_prior_notice_last_day

The prior_notice_last_day is required when booking_type=2 (prior day booking) is specified in booking_rules.txt.

missing_prior_notice_last_time

The prior_notice_last_time is required when booking_type=2 (prior day booking) is specified 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_stop_times_record

Only one stop_times record is found where two are required.

Travel within the same location group or GeoJSON location requires two records in stop_times.txt with the same location_group_id or location_id.

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.

overlapping_zone_and_pickup_drop_off_window

Two entities have overlapping pickup/drop-off windows and zones.

Two entities in stop_times.txt with the same trip_id have the same pickup_type or drop_off_type, overlapping pickup/drop-off windows and overlapping zones in locations.geojson.

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_pickup_drop_off_booking_rule_id

pickup_booking_rule_id is recommended when pickup_type=2 and drop_off_booking_rule_id is recommended when drop_off_type=2.

Currently, this notice is only triggered on feeds when either start_pickup_drop_off_window or end_pickup_drop_off_window is defined, since this recommendation was added to the specification for feeds with GTFS-Flex.

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.

When at least one of stop_times.arrival_time or stop_times.departure_time are provided, stop_times.timepoint should be defined

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_distance_too_large

The transfer distance from stop to stop in transfers.txt is larger than 10 km.

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
geo_json_unknown_element

Unknown elements in locations.geojson file.

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.

transfer_distance_above_2_km

The transfer distance from stop to stop in transfers.txt is larger than 2 km.

unknown_column

A column name is unknown.

unknown_file

A file is unknown.

unused_station

Unused station.

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

Top
Table of deprecated notices

Notice code Severity Deprecated since Deprecation reason
missing_prior_day_booking_field_value ERROR 7.0.0

Separated into missing_prior_notice_last_day and missing_prior_notice_last_time notices

missing_recommended_column WARNING 7.0.0

Unused validation notice

unused_parent_station INFO 7.0.0

Renamed to unused_station

Notice details

Table
attribution_without_role

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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_geo_json_key

This rule is deprecated from the validator since version undefined .
Deprecation reason:

A key in locations.geojson is duplicated.

The key must be unique for each feature in the GeoJSON file.

Fields
Field name Description Type
featureId

The duplicated key.

string
firstIndex

The index of the first feature with the same key.

integer
secondIndex

The index of the other feature with the same key.

integer

Table
duplicate_geography_id

This rule is deprecated from the validator since version undefined .
Deprecation reason:

Geography id is duplicated across multiple files.

ID must be unique across all stops.stop_id, locations.geojson id, and location_groups.location_group_id values.

References

Fields
Field name Description Type
csvRowNumberA

The csv row number in stops.txt

integer
csvRowNumberB

The csv row number in location_group_stops.txt

integer
featureIndex

The feature index in locations.geojson

integer
geographyId

The geography id that is duplicated.

string

Table
duplicate_key

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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_product_with_multiple_default_rider_categories

This rule is deprecated from the validator since version undefined .
Deprecation reason:

This notice is generated when a fare product is associated with multiple rider categories that are marked as default.

Each fare product should have at most one default rider category.

Fields
Field name Description Type
csvRowNumber1

The CSV row number of the first occurrence of the default rider category

integer
csvRowNumber2

The CSV row number of the second occurrence of the default rider category

integer
fareProductId

The ID of the fare product associated with the notice

string
riderCategoryId1

The ID of the first rider category that is marked as default

string
riderCategoryId2

The ID of the second rider category that is marked as default

string

Table
fare_transfer_rule_duration_limit_type_without_duration_limit

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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_arrival_or_departure_time

This rule is deprecated from the validator since version undefined .
Deprecation reason:

The arrival or departure times are provided alongside pickup or drop-off windows in stop_times.txt.

This violates GTFS specification, as both cannot coexist for a single stop time record.

Fields
Field name Description Type
arrivalTime

The arrival time of the faulty record.

string
csvRowNumber

The row of the faulty record.

integer
departureTime

The departure time of the faulty record.

string
endPickupDropOffWindow

The end pickup drop off window of the faulty record.

string
startPickupDropOffWindow

The start pickup drop off window of the faulty record.

string

Table
forbidden_continuous_pickup_drop_off

This rule is deprecated from the validator since version undefined .
Deprecation reason:

Continuous pickup or drop-off are forbidden when routes.continuous_pickup or routes.continuous_drop_off are 0, 2 or 3 and stop_times.start_pickup_drop_off_window or stop_times.end_pickup_drop_off_window are defined for any trip of this route.

Fields
Field name Description Type
endPickupDropOffWindow

The end time of the pickup/drop-off window.

string
routeCsvRowNumber

The row number of the route in the routes.txt file.

integer
startPickupDropOffWindow

The start time of the pickup/drop-off window.

string
stopTimeCsvRowNumber

The row number of the stop time in the stop_times.txt file.

integer
tripId

The ID of the trip.

string

Table
forbidden_drop_off_type

This rule is deprecated from the validator since version undefined .
Deprecation reason:

pickup_drop_off_window fields are forbidden when the drop_off_type is regularly scheduled (0).

Fields
Field name Description Type
csvRowNumber

The row of the faulty record.

integer
endPickupDropOffWindow

The end pickup drop off window of the faulty record.

string
startPickupDropOffWindow

The start pickup drop off window of the faulty record.

string

Table
forbidden_geography_id

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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_pickup_type

This rule is deprecated from the validator since version undefined .
Deprecation reason:

pickup_drop_off_window fields are forbidden when the pickup_type is regularly scheduled (0) or must be coordinated with the driver (3).

Fields
Field name Description Type
csvRowNumber

The row of the faulty record.

integer
endPickupDropOffWindow

The end pickup drop off window of the faulty record.

string
startPickupDropOffWindow

The start pickup drop off window of the faulty record.

string

Table
forbidden_prior_day_booking_field_value

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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
geo_json_duplicated_element

This rule is deprecated from the validator since version undefined .
Deprecation reason:

Duplicated elements in locations.geojson file.

Fields
Field name Description Type
duplicatedElement

The duplicated element in the GeoJSON file.

string
filename

The name of the file where the duplicated element was found.

string

Table
geo_json_unknown_element

This rule is deprecated from the validator since version undefined .
Deprecation reason:

Unknown elements in locations.geojson file.

Fields
Field name Description Type
filename

The name of the file where the unknown element was found.

string
unknownElement

The unknown element in the GeoJSON file.

string

Table
i_o_error

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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 rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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. Check the formatting of your amount field so it matches the number of decimal places specified by the currency_code value.

References

Fields
Field name Description Type
csvRowNumber

The row of the faulty record.

integer
currencyCode

Faulty record's currency code.

string
fieldName

Faulty record's field name.

string
fieldValue

Faulty currency field amount value.

string
filename

The name of the faulty file.

string

Table
invalid_date

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

At least 1 GTFS file is in a subfolder.

All GTFS files must reside at the root level directly. There are two common cases that trigger this error:

  1. The root folder (e.g., a folder called "GTFS 2020") was zipped instead of the individual files within the folder (e.g., calendar.txt, agency.txt, etc.). This can be fixed by zipping the files directly instead.
  2. A file associated with GTFS is in a subfolder rather than the root folder of the dataset, and needs to be removed if not needed or moved to the root level.
Fields
Field name Description Type

Table
invalid_integer

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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_pickup_drop_off_window

This rule is deprecated from the validator since version undefined .
Deprecation reason:

The pickup/drop-off window in stop_times.txt is invalid.

The end_pickup_drop_off_window must be strictly later than the start_pickup_drop_off_window.

Fields
Field name Description Type
csvRowNumber

The row of the faulty record.

integer
endPickupDropOffWindow

The end pickup drop off window of the faulty record.

string
startPickupDropOffWindow

The start pickup drop off window of the faulty record.

string

Table
invalid_prior_notice_duration_min

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

A JSON file is malformed.

Fields
Field name Description Type
filename

The name of the faulty file.

string
message

The detailed message describing the error.

string

Table
missing_bike_allowance

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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_pickup_drop_off_booking_rule_id

This rule is deprecated from the validator since version undefined .
Deprecation reason:

pickup_booking_rule_id is recommended when pickup_type=2 and drop_off_booking_rule_id is recommended when drop_off_type=2.

Currently, this notice is only triggered on feeds when either start_pickup_drop_off_window or end_pickup_drop_off_window is defined, since this recommendation was added to the specification for feeds with GTFS-Flex.

References

Fields
Field name Description Type
csvRowNumber

The row number of the faulty record in stop_times.txt

integer
dropOffType

The drop-off type of the faulty record.

enum
pickupType

The pickup type of the faulty record.

enum

Table
missing_pickup_or_drop_off_window

This rule is deprecated from the validator since version undefined .
Deprecation reason:

Either the start or end pickup/drop-off window is missing in stop_times.txt.

GTFS specification requires both the start and end pickup/drop-off windows to be provided together, if used.

Fields
Field name Description Type
csvRowNumber

The row of the faulty record.

integer
endPickupDropOffWindow

The end pickup drop off window of the faulty record.

string
startPickupDropOffWindow

The start pickup drop off window of the faulty record.

string

Table
missing_prior_day_booking_field_value Deprecated

This rule is deprecated from the validator since version 7.0.0 . It has been replaced by missing_prior_notice_last_day, missing_prior_notice_last_time.
Deprecation reason:

Separated into missing_prior_notice_last_day and missing_prior_notice_last_time notices

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

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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_last_day

This rule is deprecated from the validator since version undefined .
Deprecation reason:

The prior_notice_last_day is required when booking_type=2 (prior day booking) is specified in booking_rules.txt.

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_last_time

This rule is deprecated from the validator since version undefined .
Deprecation reason:

The prior_notice_last_time is required when booking_type=2 (prior day booking) is specified in booking_rules.txt.

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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_stop_times_record

This rule is deprecated from the validator since version undefined .
Deprecation reason:

Only one stop_times record is found where two are required.

Travel within the same location group or GeoJSON location requires two records in stop_times.txt with the same location_group_id or location_id.

Fields
Field name Description Type
csvRowNumber

The row of the faulty record.

integer
locationGroupId

The locationGroupId of the faulty record.

string
locationId

The locationId of the faulty record.

string
tripId

The tripId of the faulty record.

string

Table
missing_timepoint_value

This rule is deprecated from the validator since version undefined .
Deprecation reason:

stop_times.timepoint value is missing for a record.

When at least one of stop_times.arrival_time or stop_times.departure_time are provided, stop_times.timepoint should be defined

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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
overlapping_zone_and_pickup_drop_off_window

This rule is deprecated from the validator since version undefined .
Deprecation reason:

Two entities have overlapping pickup/drop-off windows and zones.

Two entities in stop_times.txt with the same trip_id have the same pickup_type or drop_off_type, overlapping pickup/drop-off windows and overlapping zones in locations.geojson.

Fields
Field name Description Type
endPickupDropOffWindow1

The end_pickup_drop_off_window of the first entity in stop_times.txt.

string
endPickupDropOffWindow2

The end_pickup_drop_off_window of the second entity in stop_times.txt.

string
locationId1

The location_id of the first entity.

string
locationId2

The location_id of the second entity.

string
startPickupDropOffWindow1

The start_pickup_drop_off_window of the first entity in stop_times.txt.

string
startPickupDropOffWindow2

The start_pickup_drop_off_window of the second entity in stop_times.txt.

string
stopSequence1

The stop_sequence of the first entity in stop_times.txt.

integer
stopSequence2

The stop_sequence of the second entity in stop_times.txt.

integer
tripId

The trip_id of the entities.

string

Table
pathway_dangling_generic_node

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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
featureIndex

The index of the feature in the feature collection.

integer
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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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
featureIndex

The index of the feature in the feature collection.

integer
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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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_distance_above_2_km

This rule is deprecated from the validator since version undefined .
Deprecation reason:

The transfer distance from stop to stop in transfers.txt is larger than 2 km.

Fields
Field name Description Type
csvRowNumber

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

integer
distanceKm

The distance between the two stops in km.

number
fromStopId

The ID of the stop in from_stop_id.

string
toStopId

The ID of the stop in to_stop_id.

string

Table
transfer_distance_too_large

This rule is deprecated from the validator since version undefined .
Deprecation reason:

The transfer distance from stop to stop in transfers.txt is larger than 10 km.

Fields
Field name Description Type
csvRowNumber

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

integer
distanceKm

The distance between the two stops in km.

number
fromStopId

The ID of the stop in from_stop_id.

string
toStopId

The ID of the stop in to_stop_id.

string

Table
transfer_with_invalid_stop_location_type

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

A file is unknown.

References

Fields
Field name Description Type
filename

The name of the unknown file.

string

Table
unsupported_feature_type

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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
message

The detailed message describing the error.

string

Table
unsupported_geometry_type

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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 Deprecated

This rule is deprecated from the validator since version 7.0.0 . It has been replaced by unused_station.
Deprecation reason:

Renamed to unused_station

Unused parent station.

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

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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_station

This rule is deprecated from the validator since version undefined .
Deprecation reason:

Unused station.

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

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_trip

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

This rule is deprecated from the validator since version undefined .
Deprecation reason:

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

Summary metadata details

This section provides a detailed breakdown of the key elements in the validator’s JSON summary report. They capture essential information about your dataset and its compliance with GTFS standards, revealing how related fields are structured and interlinked. This section explains the organization and purpose of the elements found in the summary section of the report so you can understand the underlying data architecture and how each component contributes to the overall summary.
Field name Type Description
validatorVersion String

The version of the validator used to produce the report, e.g 6.0.

validatedAt String

Datetime of the validation.

gtfsInput String

File or URL used for the validation.

threads int

Number of threads used for the validation.

outputDirectory String

Output directory used to save the validation report.

systemErrorsReportName String

Filename of the report containing system errors generated during validation.

validationReportName String

Filename of the JSON validation report.

htmlReportName String

Filename of the HTML validation report

countryCode String

The ISO 3166-1 Alpha 2 country code for the region input by a validator user before the report is generated. Specifying the region is optional and used to check the invalid_phone_number rule.

dateForValidation String

Date of the validation.

feedInfo JsonReportFeedInfo

Information about the dataset.

agencies JsonReportAgencyMetadata[]

List of agencies in the feed based on agency.txt.

files Set

List of GTFS files in the feed.

validationTimeSeconds Double

The time it took to run the validation in seconds. This value is used internally for performance metrics, and it can change in future versions. Example of internal use.

memoryUsageRecords MemoryUsage[]

List of details for the memory usage of the validation. These values are used internally for performance metrics, and it can change in future versions. Example of internal use.

counts JsonReportCounts

Number of entities in the feed.

gtfsFeatures String[]

List of features in the dataset based on https://gtfs.org/getting-started/features/overview/. You can review how the validator detects features here.

Summary metadata custom classes

Table
feedInfo

Type of JsonReportFeedInfo

Information about the dataset.

Field name Type Description
publisherName String

feed_publisher_name from `feed_info.txt. Full name of the organization that publishes the dataset.

publisherUrl String

feed_publisher_url from feed_info.txt. URL of the dataset publishing organization's website.

feedLanguage String

feed_lang from feed_info.txt. Default language used for the text in this dataset.

feedStartDate String

feed_start_date from feed_info.txt. The dataset provides complete and reliable schedule information for service in the period from the beginning of the feed_start_date day to the end of the feed_end_date day.

feedEndDate String

feed_end_date from feed_info.txt. See above.

feedEmail String

feed_contact_email from feed_info.txt. Email address for communication regarding the GTFS dataset and data publishing practices.

feedServiceWindowStart String

The start date of the service, based on the earliest date referenced in calendar.txt or calendar_dates.txt that is used by a trip_id in trips.txt.

feedServiceWindowEnd String

The end date of the service, based on the latest date referenced in calendar.txt or calendar_dates.txt that is used by a trip_id in trips.txt.

Table
agencies

Type of JsonReportAgencyMetadata[]

List of agencies in the feed based on agency.txt.

Field name Type Description
name String

agency_name from agency.txt. Full name of the transit agency.

url String

agency_url from agency.txt. URL of the transit agency.

phone String

agency_phone from agency.txt. A voice telephone number for the transit agency.

email String

agency_email from agency.txt. Email address actively monitored by the agency’s customer service department.

timezone String

agency_timezone from agency.txt. Timezone where the transit agency is located.

Table
memoryUsageRecords

Type of MemoryUsage[]

List of details for the memory usage of the validation. These values are used internally for performance metrics, and it can change in future versions. Example of internal use.

Field name Type Description
key String

The key value associated with the method is the registered memory usage. Example, GtfsFeedLoader.loadTables

totalMemory long

The total amount of memory currently available for current and future objects, measured in bytes. Reference

freeMemory long

The total amount of memory currently available for future allocated objects, measured in bytes. Reference

maxMemory long

The maximum amount of memory that the virtual machine will attempt to use, measured in bytes. Reference

diffMemory Long

This is only applicable when the memory snapshot has the reference of its “previous” register, for example, at the start and end of a method. The value reflects the free memory minus the memory of the previous register(freeMemory - previousFreeMemory), measured in bytes. This supports negative and positive values. Negative values mean the memory decreased at the end of the method. Positive values mean the memory increased.

Table
counts

Type of JsonReportCounts

Number of entities in the feed.

Field name Type Description
Shapes Integer

Number of shapes in shapes.txt.

Stops Integer

Number of stops in stops.txt.

Routes Integer

Number of routes in routes.txt.

Trips Integer

Number of trips in trips.txt.

Agencies Integer

Number of agencies in agency.txt.

Blocks Integer

Number of blocks in blocks.txt.