About njt.live
An independent, live measurement of how punctual NJ Transit's trains actually are, measured independently, all day, every day.
Why
NJ Transit does not publish rail on-time performance in any usable form, and the monthly figures it reports to its board are self-measured averages that hide which trains, which stations and which hours are bad. Riders know the 6:15 is always late; nobody counts. This site counts.
How it works
- Expected. Scheduled times come from NJ Transit's printed timetables (the PDF timetables), parsed automatically, including special-service and holiday-only trains.
- Actual. njt.live independently measures how each train actually ran against that timetable at each of the 107 stations it covers, every train, all day, every day. How we measure it is our own and is not published; the numbers are checked against NJ Transit's own announcements and against each other.
- On time uses NJ Transit's own definition: a train is on time at a stop if it is less than 6 minutes behind the timetable there.
- Two ways to score on-time. By run, the default, scores each train once: on its arrival at New York where njt.live records it, otherwise at the last stop measured before its terminal — what matters to the rider going to the end of the line; a cancelled train, or one that ended early, is a run that didn't get its riders there. By stop counts every scheduled stop on its own, the way NJ Transit does. The toggle on the Today and line pages switches between them and is remembered.
- Cancellations are recorded when NJ Transit announces one, or when a scheduled train never runs. When a cancelled train's stops are served by another train that changed its own stopping pattern to cover them (an express turned local), the run is measured as rolled into that train rather than counted as cancelled: riders got a train, just a later and more crowded one. NJ Transit cancels per station, so a train that keeps running past a cancelled stop is not a cancelled train: the stop stays cancelled (those riders got no train) but the run is shown as skipped that stop, or as having started late or ended early. Stops get skipped when a train is routed onto a track without a platform or is too full to take more riders.
- Express and local. A train tagged local stops at every station between its first and last stop; one tagged express skips at least three of the stations it passes and more than a third of them. Trains that skip only a stop or two carry no tag; each train's page lists what it skips. The tag follows the day: an express that takes over a cancelled local's stops reads local today (dashed border), and the train's page says which stops it picked up.
- From riders. Each run's page takes anonymous reports from riders on the train: that you are on it, when it arrived at or left your stop, and what it was like on board. They are shown as sent, unverified, and kept apart from the measured record; a terminal arrival (New York, Hoboken) is the one thing riders can report that the record cannot. No account, no name: a random id in a cookie keeps one “on board” per run per browser, and a hashed address limits how many reports one connection can send.
- Left early. A train that clearly departs before its timetable time is flagged. NJ Transit counts it as on time; a rider arriving on schedule misses it. Stops the timetable marks “may leave ahead of schedule” are excluded.
What the numbers can and can't say
- Every figure is a train at a station stop, not a whole train, unless labeled otherwise. A train 20 minutes late at Denville that recovers to 5 minutes at New York counts as late at Denville and on time at New York.
- Amtrak trains and lines not yet onboarded are ignored, even where they share a station.
- Measurement began Mon, Aug 31, 2026. Days and stations with gaps in coverage are marked as not covered rather than counted.
- Live projections (“running +7 min”) are estimates against the timetable while a train is still running, and can change.
Lines covered
Not every NJ Transit rail line yet. Covered so far, every station on each:
- M&E Morris & Essex — 39 stations, since Mon, Aug 31
- MOBO Montclair-Boonton — 28 stations, since Mon, Aug 31
- NEC Northeast Corridor — 16 stations, since Thu, Sep 3
- NJCL North Jersey Coast — 27 stations, since Thu, Sep 10
- RVL Raritan Valley — 21 stations, since Mon, Sep 21
Not yet: Main Line, Bergen County, Pascack Valley, Port Jervis, Atlantic City and Princeton Branch. Lines are added one at a time; each needs its timetable parsed and checked before it goes live.
njt.live is a personal project and is not affiliated with NJ Transit.