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:
|
Feed Has No Language Specified | agency.txt , feed_info.txt |
Verify that the following columns provide a language code in one of the files:
|
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 (
|
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 (
|
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 With Stop Times | stops.txt , stop_times.txt |
Verify that the following columns all reference locations that must be stops
(
|
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:
|
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:
|
Look for any invalid URL values in the following columns:
|
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:
|
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:
|
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 |
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 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 Equals Long Name | routes.txt |
Examine the |
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 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 approximately 100 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
|
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 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
|
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:
|
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:
|