Static validation errors and warnings

Stay organized with collections Save and categorize content based on your preferences.

This page provides a list of validation errors and warnings for the Static Transit feed, as well as tips on how to troubleshoot these issues.

Static validation errors

Validation errors are critical blocking issues that you must fix before Google can correctly process your feed.

To debug these errors, use the information in the following table.

  • The "Error message" column provides the message that displays in the validation report in the Transit Partner Dashboard. It summarizes the error.
  • The "Relevant file" column provides the files that you need to open and troubleshoot.
  • The "Troubleshooting tips" column provides the major steps you need to take to resolve the error.
Error message Relevant file Troubleshooting tips
Agencies With Different Languages agency.txt In the agency_lang column, verify that all agencies use the same agency_lang value.
Agencies With Different Timezones agency.txt In the agency_timezone column, verify that all agencies use the same agency_timezone value.
Agency Language And Feed Language Mismatch agency.txt, feed_info.txt

Verify that the languages codes in the following columns of both files are the same:

  • agency_lang column in the agency.txt file
  • feed_lang column in the feed_info.txt file
Feed Has No Language Specified agency.txt, feed_info.txt

Verify that the following columns provide a language code in one of the files:

  • agency_lang column in the agency.txt file
  • feed_lang column in the feed_info.txt file
Missing Required Column Any Add the missing column into the corresponding text (.txt) file.
Deprecated Column In attributions.txt attributions.txt Delete the deprecated attribution_text column.
Expired Feed Has Very Short Service calendar.txt Verify that the start_date and end_date columns in the feed are up to date and have meaningful start dates and end dates.
Fare Rule With Both Route Id References fare_rules.txt Examine the route_id and contains_id columns. You can define the fare rules using either route_id or contains_id. Therefore, it's not necessary to fill values into both the columns.
More Than One Feed Info Entry feed_info.txt Ensure that there's only one entry in the feed_info.txt file.
Overlapping Frequency-Based Trips frequencies.txt Examine the trip_id, start_time, and end_time columns. Ensure that the rows with the same trip_id value don't have any overlapping start_time and end_time intervals.
Frequency-Based Trip Transfer frequencies.txt, transfers.txt Verify that the from_stop_id and to_stop_id columns in the transfers.txt file don't reference any trips with an entry of exact_times=0 in the frequencies.txt file.
Missing Required Column For Pathways pathways.txt Verify that the pathways.txt file includes both the pathway_mode and is_bidirectional columns.
Missing Required Value For Pathways pathways.txt Verify that both the pathway_mode and is_bidirectional columns have valid values.
Route Short Name Or Long Name Required routes.txt Examine the route_short_name and route_long_name columns. Ensure that each route includes a value in at least one of these columns.
Too Many Entries routes.txt, stops.txt Verify that the entries in routes.txt and stops.txt contain accurate information that reflects a real-world transit system.
Shape With Partial Shape-Distance-Traveled Values shapes.txt Examine the shape_dist_traveled column. If there’s any shape_dist_traveled values defined, you must define this value for all shape points. Otherwise, leave these values empty.
Point Location Too Close To Origin (0,0) shapes.txt, stops.txt

Verify that the following columns have accurate values for the latitude and longitude instead of (0,0):

  • shape_pt_lat and shape_pt_lon columns in the shapes.txt file
  • stop_lat and stop_lon columns in the stops.txt file
Point Location Too Close To North/South Pole shapes.txt, stops.txt

Verify that the following columns have accurate values for the latitude and longitude instead of (90,0) or (-90,0):

  • shape_pt_lat and shape_pt_lon columns in the shapes.txt file
  • stop_lat and stop_lon columns in the stops.txt file
Stop Times with Arrival Before Previous Departure Time stop_times.txt Examine the stop_sequence, arrival_time, and departure_time columns. Ensure that each departure_time value for an earlier entry isn't later than the arrival_time value of a subsequent entry.
Stop Times with Only Arrival or Departure Time Specified stop_times.txt Specify the values for both the arrival_time and departure_time columns.
Trip Departure Time Is Too Long stop_times.txt Sort the stop_sequence column in ascending order. To verify the trip, use the trip_id column in the first entry. Verify that its associated departure_time column has a reasonable value.
Trip Is Too Long stop_times.txt Verify that the departure_time and arrival_time columns have reasonable values that reflect real-world conditions.
Trip With Out-of-Order Arrival Time stop_times.txt Examine the arrival_time and stop_sequence columns. There might be one or more values out of order with the previous entry. The arrival_time and stop_sequence values always need to be greater than the value in the previous trip's entry.
Trip With Out-of-Order Departure Time stop_times.txt Examine the departure_time and stop_sequence columns. There might be one or more values out of order with the previous entry. The departure_time and stop_sequence values always need to be greater than the value in the previous trip's entry.
Trip With Out-of-Order Shape-Distance-Traveled stop_times.txt Examine the shape_dist_traveled column. There might be one or more values out of order with the previous entry of a particular trip_id value. The shape_dist_traveled values always need to be greater than the value in the previous trip's entry.
Location Without Parent Station stops.txt Examine the location_type column with values 2 (entrance), 3 (generic node), or 4 (boarding area). Ensure that each of these values has an associated value in the parent_station column.
Parent Station with Wrong Location Type stops.txt Examine the parent_station and location_type columns. Verify that the stations have a location_type value of 1.
Station With Parent Station stops.txt Examine the location_type and parent_station columns. Verify that each station (location_type=1) doesn't have a parent_station value.
Stop With Parent Station And Timezone stops.txt Examine the parent_station and stop_timezone columns. If a stop has a parent station, it inherits the parent station's timezone. Therefore, if there's a value for parent_station, leave the stop_timezone value empty.
Unable to Find Any Stops stops.txt Verify that the stops.txt file is present and has one or more rows with valid values.
Location With Stop Time Overrides stops.txt, stop_times.txt

Verify that the following columns all reference locations that must be stops (location_type=0):

  • location_type column in the stops.txt file
  • stop_id column in the stop_times.txt file
Location With Stop Times stops.txt, stop_times.txt

Verify that the following columns all reference locations that must be stops (location_type=0):

  • location_type column in the stops.txt file
  • stop_id column in the stop_times.txt file
Transfer With Invalid Route and Trip transfers.txt Examine the from_route_id, to_route_id, from_trip_id, and to_trip_id columns. Verify that each entry that references a route and a trip has the trip belong to the specified route.
Duplicate Transfers transfers.txt Verify that each column in the transfers.txt file has no duplicate entries.
Min Transfer Time With Invalid Transfer Type transfers.txt Verify that the values in the min_transfer_time column match with a transfer_type value of 2. That's because only this transfer type requires a minimum amount of time between the trip's arrival and departure.
Transfer Between Stop And Station transfers.txt Examine the from_stop_id and to_stop_id columns. Ensure that the transfers.txt file doesn’t have any ambiguous stop-to-station and station-to-stop transfers. Specifically, if a transfer is found from a first station to a stop contained in a second station, and a different transfer is found from a stop contained in the first station to the second station.
Translation Unexpected Value translations.txt Verify in all columns that the fields that must be empty don't have any values.
Block Trips With Overlapping Stop Times trips.txt Examine the block_id column to see if any stop times overlap each other. Two trips in the same block can't have overlapping stop times if both trips are active on the same service date. Specifically, the last departure time of a trip in a block needs to be less than or equal to the first arrival time of the next trip in the block.
Duplicate GTFS File The zip file that contains all of the text (.txt) files Avoid uploading duplicate zip files to your Transit Partner Dashboard. Only upload a zip file when it contains new data.
Unable to Open GTFS The zip file that contains all of the text (.txt) files Compress all of the text files directly into a zip file and upload it to your Transit Partner Dashboard again.

Static validation warnings

Validation warnings are messages that indicate potential problems with your feed. It’s important to troubleshoot these warnings. If you leave them unresolved, the data in your feed might display incorrectly on Google Maps.

To debug the warning, use the information from the following table.

  • The "Warning message" column provides the message that displays in the validation report in the Transit Partner Dashboard. It summarizes the warning.
  • The "Relevant file" column provides the file that you need to open and troubleshoot.
  • The "Troubleshooting tips" column provides the major steps you need to take to resolve the warning.
Warning message Relevant file Troubleshooting tips
Feed Has No Language Specified agency.txt Add an agency_lang column in the agency.txt file. Alternatively, add a feed_info.txt file.
Invalid Phone Number agency.txt and attributions.txt

Verify that the values in the following columns are compliant with phone number naming conventions:

  • agency_phone column in agency.txt
  • attribution_phone column in attributions.txt
Unknown Column Any Open the file mentioned in the warning, examine it for typos in the column name, or delete the column if it's redundant.
Unknown File Any Open the file mentioned in the warning, examine it for typos in the filename, or delete the redundant file.
Leading Or Trailing Whitespaces Any Examine the affected columns and delete all leading or trailing whitespaces from the values.
Empty Column Name Any Examine the affected file. Ensure that there are no empty column names.
Empty Row Any Examine the affected file and ensure that each row contains valid values.
Translation Unexpected Value Any Examine the affected file. Ensure that any columns that must be empty in fact have no value.
Invalid URL

Any of the following files:

  • agency.txt
  • attributions.txt
  • feed_info.txt
  • routes.txt
  • stops.txt

Look for any invalid URL values in the following columns:

  • stop_url column in stops.txt
  • route_url column in routes.txt
  • feed_publisher_url column in feed_info.txt
  • agency_fare_url column in agency.txt
  • agency_url column in agency.txt
Deprecated Column In attributions.txt attributions.txt Find the deprecated column and remove it.
Feed Has No Calendar Date Exceptions calendar_dates.txt If the service is inactive on any days such as holidays, be sure to provide the date information.
Calendar Has No Active Days Of Week calendar.txt Examine the monday to sunday columns to ensure that each calendar entry has at least one active day of the week.
Feed Expiration calendar.txt Verify in the feeds that the end_date column includes the current date along with dates in the near future.
Feed Has Very Short Service calendar.txt Verify that the feed's start_date and end_date columns have at least 14 days of service.
Calendar Service Id Has No Active Days calendar.txt and calendar_dates.txt Verify that the service_id values for each service have at least some active service dates.
Feed Has No Service Dates calendar.txt and calendar_dates.txt

Verify that the following columns have active service dates:

  • The start_date and end_date columns in the calendar.txt file
  • The date and exception_type columns in the calendar_dates.txt file
Service Date Gap calendar.txt and calendar_dates.txt

Verify that there are no major gaps in the services dates in the following columns. Large gaps indicates a break in transit service:

  • The start_date and end_date columns in the calendar.txt file
  • The date and exception_type columns in the calendar_dates.txt file
Fares With and Without Rules fare_attributes.txt and fare_rules.txt Examine the fare_id column to verify that all of the fares in the fare_attributes.txt file are associated with rules in the fare_rules.txt file.
Multiple Fares Without Rules fare_attributes.txt and fare_rules.txt Examine the fare_id column to verify that all fares in the fare_attributes.txt file are associated with rules in the fare_rules.txt file.
Feed Info Early Start feed_info.txt Examine the feed_start_date column to verify that the services in this feed start at an appropriate time.
Future Service feed_info.txt

Examine the feed_start_date column to verify that the services in this feed start at a reasonable time.

Missing Feed Info Date feed_info.txt Examine the feed_start_date and feed_start_end columns. If one column contains a value, be sure to enter a value into the other column.
Frequency Headway Longer Than Interval frequencies.txt Examine each entry in the frequencies.txt file to verify that the headway_secs value isn't greater than the difference between the end_time value and the start_time value.
Inconsistent exact times frequency frequencies.txt Verify that the values of the exact_times column are the same for all the rows with the same trip_id.
Low Frequency frequencies.txt Examine the headway_secs column to make sure the value is no greater than 1800 seconds. To increase the frequency, shorten this time interval based on real-world conditions. You could model the trip with exact times (using exact_times=1 in frequencies.txt) or model the individual trips in trips.txt.
Overlapping Frequency-Based Trips frequencies.txt Examine all of the rows with the same trip_id value to verify that there's no overlapping in the start_time and end_time interval.
Too Frequent frequencies.txt Verify that the recommended headway in the headway_secs column is longer than one minute, which means the value must be higher than 60.
Missing Reciprocal Pathways pathways.txt Verify that the is_bidirectional column is present and has values that are valid. Verify that no entry has reversed values in the from_stop_id and to_stop_id columns.
Missing required value for pathways pathways.txt

Verify that these columns aren't empty and have values:

  • pathway_mode
  • is_bidirectional
Pathway Is A Loop pathways.txt Examine the from_stop and to_stop columns and verify that in each entry, these columns contain different values. This defines useful pathways for the passengers.
Route Color Contrast routes.txt Verify that the route_text_color and route_color columns use contrasting colors, as they're often used as text and background colors to display route names. Learn more about accessible color contrast ratios (4.5:1 for text).
Route name has special characters routes.txt Examine the route_long_name and the route_short_name columns. Remove or replace any special characters, such as ! $ % \ * = _.
Route Name Reused routes.txt

Examine the route_short_name and route_long_name columns. We recommended that they have unique values.

Route Short Name Equals Long Name routes.txt

Examine the route_short_name and route_long_name columns. Route short names need to be different from the route long names.

Route Short Name Is Contained In Long Name routes.txt Verify that there are no overlapping values in the route_short_name or route_long_name columns.
Route Short Name Is Too Long routes.txt

Verify that the short route names in the route_short_name column have no more than six characters.

Route Long Name Is Short routes.txt Verify that the route_long_name column contains meaningful values instead of short names.
Route Name Equals Description routes.txt Verify that the route_short_name and route_long_name columns don't contain any overlapping values from the route_desc column.
Block Trips with Inconsistent Route Types routes.txt and trips.txt Trips with the same block_id values in the trips.txt file need to have consistent route_type values in the routes.txt file.
Non-Increasing shape_dist_traveled Along A Shape shapes.txt Verify that each pair of consequent points in the shape_dist_traveled column has increasing values.
Stop does not match shape_dist_traveled value shapes.txt and stop_times.txt Verify that the stop entries in the stop_times.txt file aren't away from the stop location as defined by shape_dist_traveled values in shapes.txt.
Stop Too Far From Shape shapes.txt and stop_times.txt Examine the stop entries in the stop_times.txt file and the shape entries in the shapes.txt file. Each stop must not be more than 150 meters away from the trip's path of travel.
Stops Match Shape In Wrong Order shapes.txt and stop_times.txt Verify that the stop entries in the stop_times.txt file are consistent with the arrival-departure order as defined by the shape in the shapes.txt file.
Stop Has Too Many Matches For Shape shapes.txt and stop_times.txt Examine the stop entry in stop_times.txt and reduce the potential matches to the trip's path of travel, as defined by the shape entry in shapes.txt.
Trip With Shape-Distance-Traveled Values But None For Shape shapes.txt and stop_times.txt Examine the shape_dist_traveled column in the stop_times.txt file. Be sure to specify the shape_dist_traveled values in the shapes.txt file for the shape associated with the trip.
Trip With Shape-Distance-Traveled Values But No Shape shapes.txt and stop_times.txt Examine the shape_dist_traveled column in stop_times.txt and shape_id column in trips.txt. Verify that the trip has shape_dist_traveled values and corresponding shape_id values.
Unused Shape shapes.txt and trips.txt Examine the shape_id column in both shapes.txt and trips.txt. Verify that the trips.txt file references each shape_id value from shapes.txt.
Fast Travel Between Far Stops stop_times.txt Examine the arrival_time and departure_time columns in the stop_times.txt file. Verify that the average speed of the transit vehicle is within the appropriate range, and calculate the time to reach the far stops accordingly.
Fast Travel Between Stops stop_times.txt Examine the arrival_time and departure_time columns in the stop_times.txt file. Verify that the average speed of the transit vehicle is within the appropriate range, and calculate the time accordingly.
Stop headsign has special characters stop_times.txt Examine the stop_headsign column. Remove or replace any special characters, such as ! $ % \ * = _.
Stop Times with Long Arrival Interval stop_times.txt Examine the arrival_time column. Verify that any two consecutive stops that belong to the same trip have arrival times separated by no more than 24 hours.
Stop Times with Long Departure-Arrival Interval stop_times.txt Examine the departure_time and arrival_time columns. Verify that the time between departure and the next possible arrival is no more than 24 hours.
Suspicious trip first departure time stop_times.txt Verify that the trip's first departure time in the departure_time column is no more than 36 hours.
Too Many Consecutive Stop Times With Same Time stop_times.txt Examine the departure_time and arrival_time columns. Verify that consecutive stops that are far from each other don't have the same arrival and departure times.
Trip With Partial Shape-Distance-Traveled Values stop_times.txt Examine the shape_dist_traveled column. Include distance values for either all stops or none.
Stop Time Timepoint Without Time Specified stop_times.txt Verify that the arrival_time and departure_time columns contain valid timepoints.
Trip With No Pickup Or Dropoff stop_times.txt Verify that the pickup_type and drop_off_type columns have valid values, or remove the columns if they don’t contain any values.
Unusable Trip stop_times.txt and trips.txt Examine the trip_id column in both trips.txt and stop_times.txt. Verify that each trip_id value has at least two entries in stop_times.txt.
Unused Trip stop_times.txt and trips.txt Examine the trip_id column in both trips.txt and stop_times.txt. Verify that the stop_times.txt file references each trip_id value from the trips.txt file.
Location Too Far From Its Parent stops.txt

Examine the parent_station column:

  • Verify whether the stop is part of the parent station.
  • Verify that the stop (platform, entrance, generic node, or boarding area) isn't too far from its parent location.
Platform code is missing stops.txt Examine the stop_name and platform_code columns. Verify that any stop_name column that contains a platform code has a corresponding value in the platform_code column.
Station Unused stops.txt Examine the parent_station column. A station (location_type=1) needs to have a group of child stops linked to the station.
Stations Too Close stops.txt

Examine the stop_id, stop_lat, and stop_lon columns of the stations:

  • Verify whether they're actually the same station.
  • Verify that the locations are accurate.
Stop name has special characters stops.txt Examine the stop_name column. Remove or replace any special characters, such as ! $ % \ * = _.
Stop name has stop code or id stops.txt Verify that the stop_name column doesn't contain any stop_code or stop_id values.
Stop Too Close To Station stops.txt Verify whether the stop belongs to the station. If that’s the case, link the stop to the station in the parent_station column.
Stops Too Close stops.txt

Examine the stop_id, stop_lat, and stop_lon columns of the stops:

  • Verify whether they're actually the same stop.
  • Verify that the locations are accurate.
Stops With Same Name And Description stops.txt Verify that the stop_name and stop_desc columns contain different values for each stop.
Platform Without Parent Station stops.txt Verify that the parent_station field contains valid values for platforms that contain the platform_code column.
Unreachable Location In A Station stops.txt Examine the location_type column. Verify that all platforms (location_type=1) and generic nodes (location_type=3) are reachable in at least one direction: from the entrance or to the exit.
Dangling Generic Node stops.txt Examine the location_type column. A generic node (location_type=3) links pathways together, so it must have two or more incident locations (defined in from_stop_id and to_stop_id in pathways.txt).
Stop Unused stops.txt and stop_times.txt Examine the stop_id column in stops.txt and stop_times.txt. Each stop needs to be referenced by a number of stop times, describing the schedule of transit vehicles that are serving that stop.
Min Transfer Time Is Very Large transfers.txt Verify that the values in the min_transfer_time column are reasonable; that is, not much longer than the actual transfer time that a passenger takes by walking.
Transfer Distance Is Very Large transfers.txt Examine the from_stop_id and to_stop_id columns. Verify that the distance between two transfer stops is reasonable; that is, not much larger than the distance that a passenger walks
Transfer Walking Speed Is Too Fast transfers.txt Verify that the values in the min_transfer_time column are reasonable; that is, not much shorter than the actual transfer time that a passenger takes by walking.
Unofficial Translation Format Detected translations.txt Verify that the table_name column is present and contains valid values.
Trip Headsign Contains Route Long Name trips.txt Examine the trip_headsign and route_long_name columns. Because they both display on Google Maps, ensure that the trip_headsign column doesn't contain the route_long_name values.
Trip Headsign Contains Route Short Name trips.txt Examine the trip_headsign and route_short_name columns. Because they both display on Google Maps, ensure that the trip_headsign column doesn't contain the route_short_name values.
Trip headsign has special characters trips.txt Examine the trip_headsign column. Remove or replace any special characters, such as ! $ % \ * = _.
Trip Duplicates trips.txt, and possibly calendar.txt, calendar_dates.txt, stop_times.txt

Verify in the following files that there are no duplicate trips at the same stop times, on the same active service dates:

  • In the trips.txt file, examine the block_id, trip_id, and service_id columns.
  • In the stop_times.txt file, examine the trip_id, arrival_time, and departure_time columns.
  • In the calendar.txt and calendar_dates.txt files, examine the active service dates.
Block Trips with Overlapping Stop Times trips.txt, and possibly calendar.txt, calendar_dates.txt, stop_times.txt

Verify in the following files that there are no overlapping stop times on the same active service dates for the trip:

  • In the trips.txt file, examine the block_id, trip_id, and service_id columns.
  • In the stop_times.txt file, examine the trip_id, arrival_time, and departure_time columns.
  • In the calendar.txt and calendar_dates.txt files, examine the active service dates.