How the CrossTowner Trip Planner works

The planner compares any Chicago-area rail trip as it is today against how it would work with the proposed CrossTowner tunnel (plus the CTA Red Line Extension, which is under construction). Type or pick a start and end, and it shows both trips side by side.

Where the numbers come from

Every trip is computed in advance with r5r, the R interface to Conveyal R5 — an open-source transit routing engine used by transportation planners. Because the set of rail stations is fixed, we precompute the travel time between every pair of stations ahead of time and ship the results as static data. That's why the site is instant: your browser is looking up a precomputed answer, not routing live.

Two networks are compared:

How we handle walking to and from stations

A trip is more than the train ride — you have to walk to the first station and from the last one. Here's how that's estimated:

  1. Your typed address (or a picked example) is turned into a point on the map.
  2. We find the nearest rail stations to each end of your trip (up to a few candidates).
  3. The walk to each station is estimated from the straight-line distance, multiplied by 1.3 to approximate real streets (you rarely walk in a perfectly straight line), then divided by a walking speed of 2.75 mph (4.43 km/h).
  4. If the nearest station is more than a 20-minute walk away, that end is considered out of reach and the trip isn't shown.
  5. The total is walk to station + train time + walk from station, and the planner keeps the fastest combination.

The 2.75 mph figure is a deliberately unhurried pace grounded in US walking-speed studies, so estimates aren't rosy. The train time itself (station to station) also includes any transfers and waiting, computed by R5 from the actual schedules.

Walking that happens between stations

The station-to-station time R5 gives us is measured between two station points, but R5 is free to walk you from that point to a different station nearby if that's genuinely the faster trip — and to walk you between stations at a transfer. That walking is already inside the total; what the step list now does is name it. So a trip whose time is looked up under "Morse" may tell you to walk over to Rogers Park and board there, and a trip that rides to Cermak-Chinatown will say plainly that McCormick Place is a 20-odd-minute walk from that platform rather than pretending you've arrived.

Those in-trip walks are R5's own street-network times, stored leg by leg alongside the ride times, so the steps add up to the total at the top of the card. The one walk still estimated straight-line is the one between your own address and a station: R5 measures from a station point, and your front door isn't in its network. Note also that the 20-minute walking limit applies to each walk separately, not to the trip as a whole, so a trip can legitimately contain more than 20 minutes of walking in total.

The waiting time shown

The headline number is a median over a 30-minute window around the departure, while the leg-by-leg detail comes from a single departure at the top of the hour. Waiting is what differs between those two — the walking and the riding don't change — so the wait shown against each train is whatever the total has left over once the walking and riding are accounted for. Read it as a typical wait for that trip, not as the wait you'd get by arriving at exactly 8:00.

Which route it shows in the future scenario

In the future scenario, when more than one reasonable trip exists, the planner prefers the CrossTowner route even if it's a little slower. Specifically: among all the options that are within 12 minutes of the fastest, it picks the one that spends the most time on a CrossTowner X-route. If no near-fastest option uses an X-route, it simply shows the fastest trip.

This reflects a real rider's likely choice — most people will take a direct CrossTowner train over a marginally quicker trip that adds a transfer to a bus — and it keeps the future card focused on what the tunnel changes. The travel time shown is always the time of the trip actually displayed, so the number and the route always match.

Getting to O'Hare's terminals

O'Hare is a special case. Its terminals aren't rail stations, and two very different rail nodes serve them: the CTA Blue Line "O'Hare" station, right in the terminal core, and "O'Hare Transfer" (Metra and the proposed CrossTowner) out at the Multi-Modal Facility (MMF) — one end of the airport's Airport Transit System (ATS) people mover. Where you end up depends on which you take, so instead of forcing every airport trip onto one station, the planner lets you pick your terminal (1, 2, 3, 5, or the MMF) and then routes to both stations, adding the time it takes to reach your terminal from each. Each network uses whichever station serves it — the Blue Line today, the CrossTowner in the future scenario — which is a fairer head-to-head than the older behavior of snapping every O'Hare trip to a single station.

The ATS isn't in our schedule data, so we model the trip from each station to each terminal as a fixed number of minutes: the ATS wait (about half of its 3–5 minute headway), the ride (~2.5 min per hop along the T1–T2–T3–T5–MMF line, which the CDA times end-to-end at 10 minutes), and a short platform walk. The terminal-core walk times from the Blue Line are hand estimates, not street-routed. These assumptions are debatable — that's the point of publishing them here.

Minutes added to reach each terminal:
Destinationfrom Blue Line "O'Hare"
(terminal core)
from "O'Hare Transfer"
(MMF)
Terminal 19 (walk)13 (ATS)
Terminal 25 (walk)11 (ATS)
Terminal 38 (walk)9 (ATS)
Terminal 512 (walk + ATS)6 (ATS)
MMF / O'Hare Transfer14 (walk + ATS)3 (walk)
Because the Blue Line drops you in the terminal core, it wins for Terminals 1–3; because O'Hare Transfer sits at the MMF, it wins for Terminal 5 and the MMF. Think these are off? Send feedback — the numbers are easy to change.

Reaching the South Shore Line

The South Shore Line (NICTD's electric interurban to northwest Indiana and South Bend) isn't in the precomputed matrices — it runs east, outside the six-county grid the routing engine covers. Rather than rebuild the whole network, the planner grafts it on: it recognizes when your origin or destination is a South Shore station, routes you through a station that both the CrossTowner/Metra network and the South Shore serve, and then rides the South Shore the rest of the way.

The transfer happens at whichever shared hub gives the fastest overall trip — the primary one is 55th–56th–57th St. in Hyde Park (where a CrossTowner rider meets the South Shore without backtracking downtown), with the downtown Metra Electric stops (Millennium, Van Buren, Museum Campus) as alternates. The South Shore portion — its in-vehicle minutes and how often trains run — comes straight from NICTD's published GTFS schedule. A trip is therefore time to the hub (from the matrix) + a short platform transfer + the South Shore leg (typical wait + ride). Because the South Shore itself is identical today and in the scenario, the CrossTowner comparison shows exactly one thing: how much faster you can reach the hub — the tunnel never speeds up the South Shore itself.

Two honest caveats. First, morning service is uneven and modeled with a typical wait of about half the headway: trains toward Indiana run roughly hourly at 8 AM (so a ~30-minute wait), while trains toward Chicago run every ~30 minutes. Second, the Indiana stations are regional park-and-rides reached by car or bus, so the planner treats your endpoint as being at the station rather than adding a walk to it. The new Monon (Munster/Dyer) branch is reached with a timed transfer at Hammond Gateway.

Departure time

Trips are precomputed for a single weekday departure — 8 AM. The result is a median over a 30-minute departure window, so a single lucky (or unlucky) connection doesn't skew it.

Where you can travel

Trips must start and end within the six Metra-service counties: Cook, DuPage, Lake, Kane, McHenry, and Will. Addresses outside that area are declined — with one exception, the South Shore Line stations in Indiana (see above), which route in via a shared transfer hub.

Data sources

What to keep in mind

Your privacy

Trips are computed in your browser from precomputed data. To learn which trips people care about most, we log each planned trip's origin and destination stations and its two travel times — but not the address you type: only the nearest rail station to each end is recorded, never your exact location. If you choose to enter your email, it's saved only so Build the Tunnel can reach you.

One exception: when a search finds no rail trip (both ends are too far from any station), we also keep the places you entered and their map coordinates, so we can see and map where the rail network is missing and where new service would help. This applies only to searches that return no trip — a successful trip is still logged with stations only, never the typed place or its coordinates.

Your browser also stores a random, anonymous ID (a UUID in local storage) that's sent with each logged trip, so we can gauge roughly how many people use the planner and how many trips each looks up. It isn't tied to your identity and isn't shared with other sites; clearing your browser storage resets it.

Each logged trip also notes how you arrived (the site that linked you here and any campaign tags in the link) and a coarse device type (phone, tablet, or desktop), so we can understand the planner's reach. None of this identifies you.

Credit

Made by Steven Vance, using the Star:Line Chicago CrossTowner map and synthetic schedule as input to Conveyal R5 trip-planning software. This tool is otherwise unaffiliated with Star:Line Chicago. Fuller technical documentation lives in the project's analysis/METHODOLOGY.md.

← Back to the planner