Docs · Validation & I/O · Import & export

Import & export

GTFS·X reads and writes standards-compliant GTFS ZIPs. Import an existing feed to edit it; export to produce a ZIP you can host or hand to a regulator. Every GTFS file the editor supports round-trips through the cycle unchanged — including the parts it has no editor UI for, like Fares v2.

Export GTFS Feed dialog in GTFS·X, listing every file in the export with row counts and an 'All checks passed' status.
The Export GTFS dialog. Every file that will appear in the ZIP is listed with its row count; the "All checks passed" badge confirms validation cleared.

Export

Click Export GTFS in the top bar. The editor validates first; if any errors are present, export blocks until you fix them (warnings don't block — see Validation). On success you get a ZIP file containing:

The ZIP is named after the project slug, with the export date appended (sunny-valley-transit-20260518.zip). Drop it on a static host, hand it to Google Transit Partners, or use the editor's hosted publishing to serve it from a stable URL.

Import

Click Import in the top bar, select a ZIP. The editor parses every supported file and surfaces an import summary:

After import, the editor loads the feed and you can edit it. Subsequent export produces a ZIP that's structurally identical for every file the editor supports.

Import individual routes from another of your feeds

You don't have to import a whole feed. With a project already open, you can pull a few routes (with their stops, shapes, trips, and service calendars) from any of your other GTFS·X feeds into the current one. This is the fast way to reuse a route you've already built.

  1. Open the feed you want to add the routes to (your current project).
  2. Click Import in the top bar. The dialog title reads Import GTFS feed or routes when a project is loaded.
  3. Switch to the Routes from my feeds tab (available when you're signed in), then pick one of your feeds (published or draft).
  4. Choose Import selected routes, tick the routes you want, and click Import N routes.

The selected routes merge into your open project. IDs are automatically prefixed if they would collide; stops are matched to your existing stops by name and location where they line up; and a service calendar is reused when its weekly day-pattern matches one you already have (for example an imported Mon–Fri service folds into your existing Weekdays). Your other feed is never modified, and the whole import is one undoable step.

To import an entire feed instead, use Replace project (or import from a ZIP, URL, or the public catalog on the other tabs).

Round-trip behavior

The principle: every GTFS file and field the editor supports goes out the way it came in, whether or not the editor has a UI for authoring it. Specifically:

Columns and files the editor doesn't know are dropped, not preserved. The importer reads a fixed set of GTFS files and, within each, a fixed set of spec fields. A custom column your agency added to routes.txt, or a non-GTFS file you shipped alongside the standard ones, will not survive an import-then-export cycle. If you depend on a non-standard field, keep the authoritative copy outside GTFS·X. The one deliberate exception is external_id on agency.txt, which the importer reads onto each agency and the exporter writes back.

Limits

Edge cases and gotchas

See also