Docs · Analysis tools · Cost estimation

Cost estimation Agency

Estimate the operating cost of any GTFS feed — existing service, a proposed alternative, a back-of-envelope sketch — using revenue hours pulled from the trip schedule and a configurable cost-per-revenue-hour. Outputs per-route and system-wide weekly and annual figures, plus the peak vehicle count.

System-level totals are free on every plan. The per-route breakdown and CSV export are an Agency feature.

Costs panel in GTFS·X showing system totals (weekly revenue hours, peak vehicles, weekly and annual cost) and a per-route breakdown for the Sunny Valley feed.
The Costs panel on the Sunny Valley feed. Assumptions up top, system totals in the middle, per-route breakdown below. CSV export is one click.

What it is

For most small and mid-size agencies, "what does this service cost?" gets answered with a spreadsheet someone built once and nobody fully trusts. The Costs panel replaces the spreadsheet with a calculation that reads the feed directly: every revenue hour in the schedule, the peak vehicle count required to operate it, multiplied by a cost-per-revenue-hour you control. It runs in the editor with no setup, recomputes as you edit, and lets you compare an existing service against a proposed change side by side by saving a snapshot.

The output is a budget figure suitable for a board memo, a grant narrative, a service-planning workshop, or a back-of-envelope sanity check — not a substitute for the operator's own cost model, which has to account for benefits, fuel, maintenance, garage capacity, and a hundred other things that don't live in a GTFS feed.

When to use it

How to use it in GTFS·X

  1. Open the feed in the editor and click Costs in the left sidebar. The panel opens on the right.
  2. Set the Cost per Revenue Hour input. The default is $50, which is a placeholder, not a recommendation — every agency should plug in its own loaded labor rate (typically $80–$180/hour for fixed-route bus, depending on geography and the operating model). NTD's per-mode operating expense per vehicle-revenue-hour is a defensible starting point if you don't have an internal number; see "Methodology references" below.
  3. Set the Deadhead Factor input. This is the multiplier on revenue hours to estimate total platform hours (revenue hours + pull-out, pull-in, layover, and reposition time). The default is 1.2 — usable for most urban fixed-route systems with garages close to the network. Long deadhead routes (rural service, one garage serving a wide area) often push this to 1.4 or higher; high-frequency urban networks with garages on the line sometimes sit at 1.1.
  4. For per-route overrides, edit the route in the Routes panel — each route has a cost_per_revenue_hour field that supersedes the global default when set. Useful when one route is contracted out at a different rate.
  5. Read the system summary card and the per-route table. Use the Export CSV button to drop the figures into a spreadsheet for a memo or for combining with non-GTFS cost categories.

Methodology

The tool computes these figures from the open feed:

What it doesn't capture

Methodology references

See also