What is a cron expression?
A cron expression is a compact schedule: five space-separated fields — minute, hour, day of month, month, day of week — that together describe when a job should run. Cron reads it every minute and starts the job when all fields match the current time.
The syntax is dense enough that a wrong character produces a schedule that looks plausible and fires at the wrong time, sometimes for weeks before anyone notices. This tool translates the expression back into a sentence and lists the next five moments it will fire, so the schedule can be checked before it ships rather than after.
The time and date fields are: minute 0-59, hour 0-23, day of month 1-31, month 1-12, day of week 0-7 (0 or 7 is Sunday).
Features
- Plain-language translation
- The expression is rendered as a sentence — "At 09:00, Monday through Friday" — so a review does not depend on anyone remembering field order.
- The next five run times
- Reading a description is not the same as confirming behaviour. The next five firings are computed and shown in your own time zone, which catches off-by-one mistakes that a description hides.
- Field-by-field breakdown
- Each of the five fields is labelled, which resolves the most common confusion: day of month and day of week are both present, and setting both makes cron fire when either matches.
- Catches the six-field mistake
- Quartz and Spring accept a leading seconds field; standard crontab does not. An expression with six fields is flagged rather than silently misread.
- Nothing leaves the page
- Schedules are computed in your browser. No expression, and no hint of what your infrastructure runs, is sent anywhere.
How to use
- 1
Paste the expression
Enter a five-field cron expression such as 0 9 * * 1-5, or pick one of the common schedules.
- 2
Read the sentence
The expression is translated into plain words directly beneath the input.
- 3
Check the next five runs
Confirm that the actual firing times match what you intended, in your own time zone.
- 4
Check the field breakdown
Each field is labelled, so a value in the wrong position is visible immediately.
The hours that happen twice, and the ones that never happen
Cron matches wall-clock time, and wall-clock time is not continuous where daylight saving applies. On the spring transition the local clock jumps from 01:59 to 03:00, so a job scheduled at 0 2 * * * simply does not run that day. On the autumn transition 02:00 occurs twice, and depending on the implementation the job runs once or twice. Vixie cron nudges jobs across the gap; many container schedulers do not.
The reliable fix is to remove the ambiguity rather than reason about it: run the scheduler in UTC, or schedule outside the transition window entirely — nothing between 01:00 and 03:00 local. Note also that the fields in this expression are the portable five. The L (last), W (weekday) and # (nth weekday) characters that appear in many examples are Quartz extensions, and crontab rejects them.
Frequently asked questions
What do the five fields mean?
In order: minute (0–59), hour (0–23), day of month (1–31), month (1–12), and day of week (0–7, where both 0 and 7 mean Sunday). An asterisk means every value, a slash gives a step (*/5 is every fifth), a hyphen gives a range, and a comma gives a list.
How do I run something every 5 minutes?
*/5 * * * * — every fifth minute of every hour. Note that this fires at :00, :05, :10 and so on, aligned to the hour, not five minutes after whenever the job was installed.
Why does my job run more often than expected?
Almost always because both day of month and day of week are set to something other than *. In that case cron fires when either field matches, not both — so 0 0 1 * 1 runs on the first of the month and on every Monday.
What is the sixth field some tools use?
Seconds. Quartz, Spring's @Scheduled, and some cloud schedulers accept a leading seconds field, making six fields in total. Standard Unix crontab has five and rejects six, which is why an expression copied from a Spring config often fails in crontab.
What time zone does cron use?
The system time zone of the machine running it, unless the scheduler is configured otherwise — and containers frequently default to UTC while the developer is thinking in local time. This page shows the next runs in your own time zone so the difference is visible.
Can I use @daily or @reboot?
Those are crontab shorthands, not part of the five-field expression syntax. @daily equals 0 0 * * *, @hourly equals 0 * * * *, and @reboot has no expression equivalent at all because it is triggered by startup rather than by time.
If you hit this
Specifications this follows
- crontab(5) — Linux manual page — Field definitions, the step and range syntax, and the day-of-month / day-of-week OR rule.
- POSIX.1-2024 — the crontab utility — The portable five-field form, which is what standard crontab accepts.
- Quartz — CronTrigger tutorial — The six- and seven-field dialect with seconds and year, and why it is not portable to crontab.