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. 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 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.