A GTFS feed that contains errors will be rejected by Google Maps, Apple Maps, and other trip planners — or worse, it will be accepted but display incorrect information to riders. Validation is the safety check that ensures your data is complete, correctly formatted, and ready to publish.
The good news: most GTFS errors are simple to fix once you know where to look. This guide walks you through the entire validation process so your feed passes on the first submission.
A GTFS validator examines your feed files against the official GTFS specification. It looks for:
agency.txt, stops.txt, routes.txt, trips.txt, stop_times.txt, and calendar.txt (or calendar_dates.txt).stops.txt must include a stop_lat and stop_lon for every stop.trip_id in stop_times.txt must exist in trips.txt. Every route_id in trips.txt must exist in routes.txt.shapes.txt, each shape must have valid coordinates that trace a plausible path.Your GTFS feed should be a ZIP archive containing all required text files. If you built your feed with AddTransit, the platform assembles and zips this for you automatically. If you built it manually, ensure every required .txt file is present in the root of the ZIP — not inside a sub-folder.
Upload your ZIP to a GTFS validator. The validator produces a detailed report categorising issues as errors (must fix), warnings (should fix), and informational notices. AddTransit runs this validation automatically every time you export your feed, so you never need to run it separately.
Work through the errors in priority order. Errors will cause your feed to be rejected outright. Warnings may cause data to display incorrectly. Start with any "missing required field" errors, then fix referential integrity issues, then address data type problems. Each error message names the specific file and row number so you know exactly where to look.
After making fixes, re-upload and run the validator again. Repeat until you have zero errors. Aim to eliminate warnings too, especially if you are submitting to Google Maps — a clean feed is processed faster.
Once validation passes, you are ready to publish. Upload your feed to a publicly accessible URL and submit it to Google Maps, Apple Maps, and other trip planners. See our guide on how to publish your GTFS feed to Google Maps for the next steps.
If you have run a validator and are looking at the output, the error names can look intimidating — codes like stop_time_with_only_arrival_or_departure_time or decreasing_stop_time_distance are written for software developers, not transit managers. The table below translates the most common ones into plain language so you know exactly what needs fixing. That said, if decoding technical error messages is not how you want to spend your time, this is precisely the problem AddTransit is designed to eliminate — see the section below.
| Error | Cause | Fix |
|---|---|---|
missing_required_field |
A mandatory column is absent from a file | Add the missing column with correct values for every row |
invalid_url |
Agency website URL is malformed | Include the full URL starting with https:// |
stop_time_with_only_arrival_or_departure_time |
A stop has arrival time but no departure time, or vice versa | Provide both arrival_time and departure_time for every stop |
decreasing_stop_time_distance |
Shape distances are not increasing along the route | Ensure shape_dist_traveled increases with each stop |
service_date_range_too_long |
Calendar extends more than one year into the future | Limit your service dates to a rolling 12-month window |
With AddTransit, validation is built into the workflow — not a separate step you have to remember. As you enter stops, routes, and schedules into the platform, it checks your data in real time and flags problems before they reach the export stage. When you are ready to publish, you download a feed that is already validated and ready to submit.
This means you spend less time troubleshooting spreadsheet errors and more time running your service. Agencies using AddTransit typically have their GTFS feed created and ready within a single day. Each journey planner then has its own submission, review, and publishing process before routes appear publicly.