About
What CronCalc does, which cron dialect it speaks, and why it runs entirely in your browser.
CronCalc answers one question well: “when does this cron line actually fire?” Type a standard 5-field expression and you get a plain-English description — “At 09:30 on weekdays” — plus the next run times computed with real cron semantics.
What “real semantics” means
Plenty of cron explainers are regex prettifiers: they expand the fields but skip the parts that actually cause incidents. This one was built around the traps instead:
- The dom/dow OR rule — when both day fields are restricted, standard cron fires when either matches.
0 0 13 * 5means “13th or Friday”, and the tool says so in a warning chip instead of letting you discover it at 00:05 on a Saturday. - Impossible schedules are called impossible —
0 0 31 2 *can never fire (February tops out at 29), and the tool says “never” rather than printing plausible-looking dates.0 0 29 2 *fires, but the list honestly shows the leap-year wait — including the 8-year gap around century years like 2100. - The dialect is declared, not guessed — this is standard POSIX/Vixie cron. Quartz-isms (
L,W,#, seconds and year fields) get explicit errors explaining they’re a different dialect;?is accepted in the day fields because so many real-world expressions carry it. - Timezone honesty — the predicted times are in your browser’s zone, and the page says that plainly, because a real daemon schedules in the server’s local time. DST edge behavior is flagged as implementation-defined rather than smoothed over.
How it works
The whole thing is client-side JavaScript: parser, describer and next-run engine all execute in your tab. There’s no backend, no expression history, nothing uploaded — load the page, drop your network, keep working.
Who’s behind it
CronCalc is maintained by a small independent team that builds focused utility sites on nxtolerance.com. The standard we hold it to: the next-run times should match what your daemon will do — and where cron implementations genuinely diverge, the tool should name the divergence instead of picking a winner. Found a case we handle wrong? Contact us — correctness reports get answered first.