Methodology
No black boxes.
Everything here is built from public GTFS feeds — the open schedule data agencies publish. Here's exactly how the numbers are made.
What "frequency" means
For every stop we count boardable departures during a set of time windows, then divide by the window length to get departures per hour. Because each direction is a separate stop, the number reflects what a rider standing at that exact spot actually experiences.
Some agencies — most bus rapid transit, and most operators across Latin America — publish a headway rather than a timetable: one template trip plus "every 8 minutes from 5:15am to 6:30pm". We expand those into the departures they stand for, so a headway-based network is counted the same way a timetabled one is.
Which day we measure
To represent normal service, we take the Wednesday and Saturday within the feed's active range with the most scheduled trips — the busiest, most typical days — resolving exactly which services run from the feed's calendar and its exceptions. The dates sampled are shown on every page.
Cities with several agencies
Where a metro's transit is split across agencies (Seattle's trains and buses come from different ones), we merge every listed agency's official feed and pick the representative day over the combined schedule. Each page names the feeds and versions used. One honest caveat: when two agencies serve the same physical stop, each agency's stop record keeps its own counts — we don't guess at merging them — so a shared stop can read slightly less frequent than a rider standing there actually experiences.
The frequency bands
Stops are colored on a green → blue → red scale — green is frequent, blue is middling, red is sparse — and sized redundantly (more service, larger dot) so the ranking still reads where the colors are hard to tell apart:
- Very frequent — 8+ an hour (every 7 min or better)
- Frequent — 4–8 an hour (8–15 min)
- Moderate — 2–4 an hour (16–30 min)
- Infrequent — 1–2 an hour (31–60 min)
- Sparse — under 1 an hour (worse than hourly)
How the grade is computed
Each city's letter grade is a transparent weighted score (0–100), not a subjective call:
- 50Frequent serviceShare of stops with service every 15 minutes or better
- 25Weekend retentionSaturday service kept, as a share of weekday
- 15Service spanHours from first to last departure
- 10Median headwayThe typical midday wait at a stop
The composite maps to a letter (A ≥ 80, B ≥ 59, C ≥ 45, and so on). The verdict sentence summarizes the strongest and weakest of those four inputs.
Limitations
This is scheduled service, not real-time reliability — it doesn't capture delays, cancellations, or crowding. It counts departures across all routes at a stop, so a busy hub looks frequent even if any single line isn't. And it's a snapshot of one representative day. It's a strong first read on where useful transit reaches — not the last word. Each page notes its feed version and generated date.
Independence
No agency pays to be here, no agency can pay to change a grade, and nothing on this site is sponsored by anyone it scores. The data is free to reuse under CC BY 4.0 — every scorecard links its raw JSON.
The plain-English side — how to actually ride each system — lives at public-rides.com.