Cron expression parser
Paste a 5-field cron expression and see what it means in plain English and exactly when it will fire next, in your timezone, UTC, or any other. That matters because a server's crontab runs on the server's clock, not yours. For example, 0 9 * * 1-5 means 09:00 every Monday to Friday, and on a server set to New York time that is 13:00 UTC in summer and 14:00 UTC in winter. Ranges, steps, lists, names (MON, JAN), and @daily-style aliases are all supported, along with cron's most misunderstood rule: when both day-of-month and day-of-week are restricted, a day matches if either one does.
In plain English
At minutes 0, 15, 30, and 45 past every hour.
Common questions
- What do the five fields mean?
- In order: minute (0–59), hour (0–23), day of month (1–31), month (1–12 or JAN–DEC), and day of week (0–7 or SUN–SAT, where both 0 and 7 are Sunday). A star means “every”; 6-field variants with seconds exist in Quartz and some libraries but classic cron has five.
- Why does “0 0 13 * 5” fire more often than I expected?
- Because when day-of-month and day-of-week are both restricted, Vixie cron treats them as OR, not AND, so that expression runs on the 13th and on every Friday. To get only Friday-the-13th you need a condition inside the job itself, like a date check in the script.
- What happens to a 2:30 am job when DST skips 2:30?
- On the spring-forward night that wall time never occurs. This parser follows strict wall-clock semantics and shows no run for that day (modern cron daemons like Vixie/cronie compensate by running skipped jobs shortly after the jump; check your daemon's manual). Scheduling daily jobs at 03:00 or later, or in UTC, avoids the question entirely.
- What happens on the night clocks fall back?
- That night one wall-clock hour happens twice, so a job set for 02:00 in Berlin could land on either 00:00 UTC or 01:00 UTC. This parser follows Vixie cron and cronie: a job with a fixed minute and hour fires once, at the first occurrence, and the repeat an hour later is skipped. A job whose minute or hour field starts with a star, like */15 * * * * or 0 * * * *, keeps its normal rhythm straight through the repeated hour and fires in both. The list above shows each run with its numeric offset and its UTC instant so you can see which one it is, and the JSON API marks a fixed-time run that fell in a repeated hour with ambiguous: true.
- What timezone does my crontab actually use?
- The daemon's, usually the server's system timezone, unless your cron supports a CRON_TZ or TZ variable. That's why this page lets you preview a schedule in an arbitrary zone: set it to your server's zone and read the runs in your own local time above.