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.
agency.txt
agency_lang
column, verify that all agencies use the same agency_lang
value.agency.txt
agency_timezone
column, verify that all agencies use the same agency_timezone
value.agency.txt
, feed_info.txt
Verify that the languages codes in the following columns of both files are the same:
-
agency_lang
column in theagency.txt
file -
feed_lang
column in thefeed_info.txt
file
agency.txt
, feed_info.txt
Verify that the following columns provide a language code in one of the files:
-
agency_lang
column in theagency.txt
file -
feed_lang
column in thefeed_info.txt
file
.txt
) file.attributions.txt
attributions.txt
attribution_text
column.calendar.txt
start_date
and end_date
columns in the feed are
up to date and have meaningful start dates and end dates.fare_rules.txt
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.feed_info.txt
feed_info.txt
file.frequencies.txt
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.frequencies.txt
, transfers.txt
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.pathways.txt
pathways.txt
file includes both the pathway_mode
and is_bidirectional
columns.pathways.txt
pathway_mode
and is_bidirectional
columns
have valid values.routes.txt
route_short_name
and route_long_name
columns. Ensure
that each route includes a value in at least one of these columns.routes.txt
, stops.txt
routes.txt
and stops.txt
contain
accurate information that reflects a real-world transit system.shapes.txt
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.shapes.txt
, stops.txt
Verify that the following columns have accurate values for the latitude and longitude
instead of ( 0
, 0
):
-
shape_pt_lat
andshape_pt_lon
columns in theshapes.txt
file -
stop_lat
andstop_lon
columns in thestops.txt
file
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
andshape_pt_lon
columns in theshapes.txt
file -
stop_lat
andstop_lon
columns in thestops.txt
file
stop_times.txt
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.txt
arrival_time
and departure_time
columns.stop_times.txt
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.stop_times.txt
departure_time
and arrival_time
columns have
reasonable values that reflect real-world conditions.stop_times.txt
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.stop_times.txt
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.stop_times.txt
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.stops.txt
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.stops.txt
parent_station
and location_type
columns. Verify
that the stations have a location_type
value of 1
.stops.txt
location_type
and parent_station
columns. Verify
that each station ( location_type=1
) doesn't have a parent_station
value.stops.txt
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.stops.txt
stops.txt
file is present and has one or more rows with valid
values.stops.txt
, stop_times.txt
Verify that the following columns all reference locations that must be stops
( location_type=0
):
-
location_type
column in thestops.txt
file -
stop_id
column in thestop_times.txt
file
stops.txt
, stop_times.txt
Verify that the following columns all reference locations that must be stops
( location_type=0
):
-
location_type
column in thestops.txt
file -
stop_id
column in thestop_times.txt
file
transfers.txt
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.transfers.txt
transfers.txt
file has no duplicate
entries.transfers.txt
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.transfers.txt
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.translations.txt
trips.txt
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..txt
) files.txt
) filesStatic 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.
agency.txt
agency_lang
column in the agency.txt
file. Alternatively,
add a feed_info.txt
file.agency.txt
and attributions.txt
Verify that the values in the following columns are compliant with phone number naming conventions:
-
agency_phone
column inagency.txt
-
attribution_phone
column inattributions.txt
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 instops.txt
-
route_url
column inroutes.txt
-
feed_publisher_url
column infeed_info.txt
-
agency_fare_url
column inagency.txt
-
agency_url
column inagency.txt
attributions.txt
attributions.txt
calendar_dates.txt
calendar.txt
monday
to sunday
columns to ensure that each
calendar entry has at least one active day of the week.calendar.txt
end_date
column includes the current date along
with dates in the near future.calendar.txt
start_date
and end_date
columns have at
least 14 days of service.calendar.txt
and calendar_dates.txt
service_id
values for each service have at least some active
service dates.calendar.txt
and calendar_dates.txt
Verify that the following columns have active service dates:
- The
start_date
andend_date
columns in thecalendar.txt
file - The
date
andexception_type
columns in thecalendar_dates.txt
file
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
andend_date
columns in thecalendar.txt
file - The
date
andexception_type
columns in thecalendar_dates.txt
file
fare_attributes.txt
and fare_rules.txt
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.fare_attributes.txt
and fare_rules.txt
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.txt
feed_start_date
column to verify that the services in this feed
start at an appropriate time.feed_info.txt
Examine the feed_start_date
column to verify that the services in this feed
start at a reasonable time.
feed_info.txt
feed_start_date
and feed_start_end
columns. If one
column contains a value, be sure to enter a value into the other column.frequencies.txt
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.frequencies.txt
exact_times
column are the same for all the
rows with the same trip_id
.frequencies.txt
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
.frequencies.txt
trip_id
value to verify that there's no
overlapping in the start_time
and end_time
interval.frequencies.txt
headway_secs
column is longer than
one minute, which means the value must be higher than 60
.pathways.txt
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.pathways.txt
Verify that these columns aren't empty and have values:
-
pathway_mode
-
is_bidirectional
pathways.txt
from_stop
and to_stop
columns and verify that in
each entry, these columns contain different values. This defines useful pathways for the
passengers.routes.txt
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).routes.txt
route_long_name
and the route_short_name
columns.
Remove or replace any special characters, such as ! $ % \ * = _
.routes.txt
Examine the route_short_name
and route_long_name
columns. We
recommended that they have unique values.
routes.txt
Examine the route_short_name
and route_long_name
columns. Route
short names need to be different from the route long names.
routes.txt
route_short_name
or route_long_name
columns.routes.txt
Verify that the short route names in the route_short_name
column have no more
than six characters.
routes.txt
route_long_name
column contains meaningful values instead of
short names.routes.txt
route_short_name
and route_long_name
columns
don't contain any overlapping values from the route_desc
column.routes.txt
and trips.txt
block_id
values in the trips.txt
file need
to have consistent route_type
values in the routes.txt
file.shape_dist_traveled
Along A Shapeshapes.txt
shape_dist_traveled
column
has increasing values.shape_dist_traveled
valueshapes.txt
and stop_times.txt
stop_times.txt
file aren't away from the
stop location as defined by shape_dist_traveled
values in shapes.txt
.shapes.txt
and stop_times.txt
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.shapes.txt
and stop_times.txt
stop_times.txt
file are consistent with
the arrival-departure order as defined by the shape in the shapes.txt
file.shapes.txt
and stop_times.txt
stop_times.txt
and reduce the potential matches to
the trip's path of travel, as defined by the shape entry in shapes.txt
.shapes.txt
and stop_times.txt
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.shapes.txt
and stop_times.txt
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.shapes.txt
and trips.txt
shape_id
column in both shapes.txt
and trips.txt
. Verify that the trips.txt
file references each shape_id
value from shapes.txt
.stop_times.txt
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.stop_times.txt
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_times.txt
stop_headsign
column. Remove or replace any special characters,
such as ! $ % \ * = _
.stop_times.txt
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.txt
departure_time
and arrival_time
columns. Verify that
the time between departure and the next possible arrival is no more than 24 hours.stop_times.txt
departure_time
column is
no more than 36 hours.stop_times.txt
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.stop_times.txt
shape_dist_traveled
column. Include distance values for either
all stops or none.stop_times.txt
arrival_time
and departure_time
columns contain
valid timepoints.stop_times.txt
pickup_type
and drop_off_type
columns have valid
values, or remove the columns if they don’t contain any values.stop_times.txt
and trips.txt
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
.stop_times.txt
and trips.txt
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.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.
stops.txt
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.stops.txt
parent_station
column. A station ( location_type=1
)
needs to have a group of child stops linked to the station.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.
stops.txt
stop_name
column. Remove or replace any special characters, such
as ! $ % \ * = _
.stops.txt
stop_name
column doesn't contain any stop_code
or stop_id
values.stops.txt
parent_station
column.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.txt
stop_name
and stop_desc
columns contain
different values for each stop.stops.txt
parent_station
field contains valid values for platforms that
contain the platform_code
column.stops.txt
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.stops.txt
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
).stops.txt
and stop_times.txt
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.transfers.txt
min_transfer_time
column are reasonable; that
is, not much longer than the actual transfer time that a passenger takes by walking.transfers.txt
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 walkstransfers.txt
min_transfer_time
column are reasonable; that
is, not much shorter than the actual transfer time that a passenger takes by walking.translations.txt
table_name
column is present and contains valid values.trips.txt
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.trips.txt
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.trips.txt
trip_headsign
column. Remove or replace any special characters,
such as ! $ % \ * = _
.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 theblock_id
,trip_id
, andservice_id
columns. - In the
stop_times.txt
file, examine thetrip_id
,arrival_time
, anddeparture_time
columns. - In the
calendar.txt
andcalendar_dates.txt
files, examine the active service dates.
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 theblock_id
,trip_id
, andservice_id
columns. - In the
stop_times.txt
file, examine thetrip_id
,arrival_time
, anddeparture_time
columns. - In the
calendar.txt
andcalendar_dates.txt
files, examine the active service dates.