AI-generated Key Takeaways
- 
          The Static Transit Feed specification requires specific formatting and data validation for Google Maps to process it correctly. 
- 
          Errors in the feed must be fixed, or Google Maps will not be able to process the feed. 
- 
          Warnings indicate potential issues that, while not preventing processing, could lead to incorrect or incomplete data display on Google Maps. 
- 
          Common errors and warnings involve data inconsistencies, missing information, and format violations across various files like agency.txt,stops.txt,routes.txt, and others.
- 
          Refer to the detailed table within the document for a comprehensive list of errors and warnings, along with their descriptions and troubleshooting tips to ensure your feed's accuracy and compatibility. 
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_langcolumn, verify that all agencies use the sameagency_langvalue. | 
| Agencies With Different Timezones | agency.txt | In the agency_timezonecolumn, verify that all agencies use the sameagency_timezonevalue. | 
| 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_textcolumn. | 
| Expired Feed Has Very Short Service | calendar.txt | Verify that the start_dateandend_datecolumns 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_idandcontains_idcolumns. You can define the
        fare rules using eitherroute_idorcontains_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.txtfile. | 
| Overlapping Frequency-Based Trips | frequencies.txt | Examine the trip_id,start_time, andend_timecolumns. Ensure that the rows with the sametrip_idvalue don't have any
        overlappingstart_timeandend_timeintervals. | 
| Frequency-Based Trip Transfer | frequencies.txt,transfers.txt | Verify that the from_stop_idandto_stop_idcolumns in thetransfers.txtfile don't reference any trips with an entry ofexact_times=0in thefrequencies.txtfile. | 
| Missing Required Column For Pathways | pathways.txt | Verify that the pathways.txtfile includes both thepathway_modeandis_bidirectionalcolumns. | 
| Missing Required Value For Pathways | pathways.txt | Verify that both the pathway_modeandis_bidirectionalcolumns
        have valid values. | 
| Route Short Name Or Long Name Required | routes.txt | Examine the route_short_nameandroute_long_namecolumns. 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.txtandstops.txtcontain
        accurate information that reflects a real-world transit system. | 
| Shape With Partial Shape-Distance-Traveled Values | shapes.txt | Examine the shape_dist_traveledcolumn. If there’s anyshape_dist_traveledvalues 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, anddeparture_timecolumns. Ensure that eachdeparture_timevalue for
        an earlier entry isn't later than thearrival_timevalue of a subsequent
        entry. | 
| Stop Times with Only Arrival or Departure Time Specified | stop_times.txt | Specify the values for both the arrival_timeanddeparture_timecolumns. | 
| Trip Departure Time Is Too Long | stop_times.txt | Sort the stop_sequencecolumn in ascending order. To verify the trip, use thetrip_idcolumn in the first entry. Verify that its associateddeparture_timecolumn has a reasonable value. | 
| Trip Is Too Long | stop_times.txt | Verify that the departure_timeandarrival_timecolumns have
        reasonable values that reflect real-world conditions. | 
| Trip With Out-of-Order Arrival Time | stop_times.txt | Examine the arrival_timeandstop_sequencecolumns. There might
        be one or more values out of order with the previous entry. Thearrival_timeandstop_sequencevalues 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_timeandstop_sequencecolumns. There
        might be one or more values out of order with the previous entry. Thedeparture_timeandstop_sequencevalues 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_traveledcolumn. There might be one or more values out
        of order with the previous entry of a particulartrip_idvalue. Theshape_dist_traveledvalues always need to be greater than the value in the
        previous trip's entry. | 
| Location Without Parent Station | stops.txt | Examine the location_typecolumn with values2(entrance),3(generic node), or4(boarding area). Ensure that each of these
        values has an associated value in theparent_stationcolumn. | 
| Parent Station with Wrong Location Type | stops.txt | Examine the parent_stationandlocation_typecolumns. Verify
        that the stations have alocation_typevalue of1. | 
| Station With Parent Station | stops.txt | Examine the location_typeandparent_stationcolumns. Verify
        that each station (location_type=1) doesn't have aparent_stationvalue. | 
| Stop With Parent Station And Timezone | stops.txt | Examine the parent_stationandstop_timezonecolumns. If a stop
        has a parent station, it inherits the parent station's timezone. Therefore, if there's a
        value forparent_station, leave thestop_timezonevalue
        empty. | 
| Unable to Find Any Stops | stops.txt | Verify that the stops.txtfile 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, andto_trip_idcolumns. 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.txtfile has no duplicate
        entries. | 
| Min Transfer Time With Invalid Transfer Type | transfers.txt | Verify that the values in the min_transfer_timecolumn match with atransfer_typevalue of2. 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_idandto_stop_idcolumns. Ensure that thetransfers.txtfile 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_idcolumn 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_langcolumn in theagency.txtfile. Alternatively,
        add afeed_info.txtfile. | 
| Invalid Phone Number | agency.txtandattributions.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 mondaytosundaycolumns 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_datecolumn includes the current date along
        with dates in the near future. | 
| Feed Has Very Short Service | calendar.txt | Verify that the feed's start_dateandend_datecolumns have at
        least 14 days of service. | 
| Calendar Service Id Has No Active Days | calendar.txtandcalendar_dates.txt | Verify that the service_idvalues for each service have at least some active
        service dates. | 
| Feed Has No Service Dates | calendar.txtandcalendar_dates.txt | Verify that the following columns have active service dates: 
 | 
| Service Date Gap | calendar.txtandcalendar_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.txtandfare_rules.txt | Examine the fare_idcolumn to verify that all of the fares in thefare_attributes.txtfile are associated with rules in thefare_rules.txtfile. | 
| Multiple Fares Without Rules | fare_attributes.txtandfare_rules.txt | Examine the fare_idcolumn to verify that all fares in thefare_attributes.txtfile are associated with rules in thefare_rules.txtfile. | 
| Feed Info Early Start | feed_info.txt | Examine the feed_start_datecolumn 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_dateandfeed_start_endcolumns. 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.txtfile to verify that theheadway_secsvalue isn't greater than the difference between theend_timevalue and thestart_timevalue. | 
| Inconsistent exact times frequency | frequencies.txt | Verify that the values of the exact_timescolumn are the same for all the
        rows with the sametrip_id. | 
| Low Frequency | frequencies.txt | Examine the headway_secscolumn 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 (usingexact_times=1infrequencies.txt) or model the individual trips intrips.txt. | 
| Overlapping Frequency-Based Trips | frequencies.txt | Examine all of the rows with the same trip_idvalue to verify that there's no
        overlapping in thestart_timeandend_timeinterval. | 
| Too Frequent | frequencies.txt | Verify that the recommended headway in the headway_secscolumn is longer than
        one minute, which means the value must be higher than60. | 
| Missing Reciprocal Pathways | pathways.txt | Verify that the is_bidirectionalcolumn is present and has values that are
        valid. Verify that no entry has reversed values in thefrom_stop_idandto_stop_idcolumns. | 
| 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_stopandto_stopcolumns 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_colorandroute_colorcolumns 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_nameand theroute_short_namecolumns.
        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_nameorroute_long_namecolumns. | 
| 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_namecolumn contains meaningful values instead of
        short names. | 
| Route Name Equals Description | routes.txt | Verify that the route_short_nameandroute_long_namecolumns
        don't contain any overlapping values from theroute_desccolumn. | 
| Block Trips with Inconsistent Route Types | routes.txtandtrips.txt | Trips with the same block_idvalues in thetrips.txtfile need
        to have consistentroute_typevalues in theroutes.txtfile. | 
| Non-Increasing shape_dist_traveledAlong A Shape | shapes.txt | Verify that each pair of consequent points in the shape_dist_traveledcolumn
        has increasing values. | 
| Stop does not match shape_dist_traveledvalue | shapes.txtandstop_times.txt | Verify that the stop entries in the stop_times.txtfile aren't away from the
        stop location as defined byshape_dist_traveledvalues inshapes.txt. | 
| Stop Too Far From Shape | shapes.txtandstop_times.txt | Examine the stop entries in the stop_times.txtfile and the shape entries in
        theshapes.txtfile. 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.txtandstop_times.txt | Verify that the stop entries in the stop_times.txtfile are consistent with
        the arrival-departure order as defined by the shape in theshapes.txtfile. | 
| Stop Has Too Many Matches For Shape | shapes.txtandstop_times.txt | Examine the stop entry in stop_times.txtand reduce the potential matches to
        the trip's path of travel, as defined by the shape entry inshapes.txt. | 
| Trip With Shape-Distance-Traveled Values But None For Shape | shapes.txtandstop_times.txt | Examine the shape_dist_traveledcolumn in thestop_times.txtfile. Be sure to specify theshape_dist_traveledvalues in theshapes.txtfile for the shape associated with the trip. | 
| Trip With Shape-Distance-Traveled Values But No Shape | shapes.txtandstop_times.txt | Examine the shape_dist_traveledcolumn instop_times.txtandshape_idcolumn intrips.txt. Verify that the trip hasshape_dist_traveledvalues and correspondingshape_idvalues. | 
| Unused Shape | shapes.txtandtrips.txt | Examine the shape_idcolumn in bothshapes.txtandtrips.txt. Verify that thetrips.txtfile references eachshape_idvalue fromshapes.txt. | 
| Fast Travel Between Far Stops | stop_times.txt | Examine the arrival_timeanddeparture_timecolumns in thestop_times.txtfile. 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_timeanddeparture_timecolumns in thestop_times.txtfile. 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_headsigncolumn. Remove or replace any special characters,
        such as! $ % \ * = _. | 
| Stop Times with Long Arrival Interval | stop_times.txt | Examine the arrival_timecolumn. 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_timeandarrival_timecolumns. 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_timecolumn is
        no more than 36 hours. | 
| Too Many Consecutive Stop Times With Same Time | stop_times.txt | Examine the departure_timeandarrival_timecolumns. 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_traveledcolumn. Include distance values for either
        all stops or none. | 
| Stop Time Timepoint Without Time Specified | stop_times.txt | Verify that the arrival_timeanddeparture_timecolumns contain
        valid timepoints. | 
| Trip With No Pickup Or Dropoff | stop_times.txt | Verify that the pickup_typeanddrop_off_typecolumns have valid
        values, or remove the columns if they don’t contain any values. | 
| Unusable Trip | stop_times.txtandtrips.txt | Examine the trip_idcolumn in bothtrips.txtandstop_times.txt. Verify that eachtrip_idvalue has at least two
        entries instop_times.txt. | 
| Unused Trip | stop_times.txtandtrips.txt | Examine the trip_idcolumn in bothtrips.txtandstop_times.txt. Verify that thestop_times.txtfile references
        eachtrip_idvalue from thetrips.txtfile. | 
| Location Too Far From Its Parent | stops.txt | Examine the  
 | 
| Platform code is missing | stops.txt | Examine the stop_nameandplatform_codecolumns. Verify that anystop_namecolumn that contains a platform code has a corresponding value in theplatform_codecolumn. | 
| Station Unused | stops.txt | Examine the parent_stationcolumn. 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_namecolumn. Remove or replace any special characters, such
        as! $ % \ * = _. | 
| Stop name has stop code or id | stops.txt | Verify that the stop_namecolumn doesn't contain anystop_codeorstop_idvalues. | 
| 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_stationcolumn. | 
| Stops Too Close | stops.txt | Examine the  
 | 
| Stops With Same Name And Description | stops.txt | Verify that the stop_nameandstop_desccolumns contain
        different values for each stop. | 
| Platform Without Parent Station | stops.txt | Verify that the parent_stationfield contains valid values for platforms that
        contain theplatform_codecolumn. | 
| Unreachable Location In A Station | stops.txt | Examine the location_typecolumn. 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_typecolumn. A generic node
        (location_type=3) links pathways together, so it must have two or more incident
        locations (defined infrom_stop_idandto_stop_idinpathways.txt). | 
| Stop Unused | stops.txtandstop_times.txt | Examine the stop_idcolumn instops.txtandstop_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_timecolumn 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_idandto_stop_idcolumns. 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_timecolumn 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_namecolumn is present and contains valid values. | 
| Trip Headsign Contains Route Long Name | trips.txt | Examine the trip_headsignandroute_long_namecolumns. Because
        they both display on Google Maps, ensure that thetrip_headsigncolumn doesn't
        contain theroute_long_namevalues. | 
| Trip Headsign Contains Route Short Name | trips.txt | Examine the trip_headsignandroute_short_namecolumns. Because
        they both display on Google Maps, ensure that thetrip_headsigncolumn doesn't
        contain theroute_short_namevalues. | 
| Trip headsign has special characters | trips.txt | Examine the trip_headsigncolumn. Remove or replace any special characters,
        such as! $ % \ * = _. | 
| Trip Duplicates | trips.txt, and possiblycalendar.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 possiblycalendar.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: 
 |