Cron Expression Explainer
Paste a standard five-field cron expression to see what it means in plain English, how each field is read, and exactly when it will run next. Everything is calculated in your browser. Crontabs often reveal job names, paths and schedules, so nothing is uploaded.
minute hour day-of-month month day-of-week
Try an example
What a cron expression is
A cron expression is a compact schedule: five fields separated by spaces that say which minutes, hours, days and months a job should run. The cron daemon checks the schedule every minute and starts any job whose fields all match the current time.
| Position | Field | Allowed values |
|---|---|---|
| 1 | Minute | 0–59 |
| 2 | Hour | 0–23 |
| 3 | Day of month | 1–31 |
| 4 | Month | 1–12 or JAN–DEC |
| 5 | Day of week | 0–7 or SUN–SAT (0 and 7 are both Sunday) |
Special characters
| Symbol | Meaning | Example |
|---|---|---|
| * | Every value in the field | * * * * * runs every minute |
| , | A list of values | 0,30 * * * * at minute 0 and 30 |
| - | An inclusive range | 0 9-17 * * * every hour from 9 to 17 |
| / | A step through a range | */15 * * * * every 15 minutes |
| JAN, MON… | Names for months and weekdays | 0 0 * JAN-MAR MON Mondays in Q1 |
| @daily… | Shortcuts: @yearly, @monthly, @weekly, @daily, @hourly | @daily same as 0 0 * * * |
Common schedules
| Expression | Runs |
|---|---|
| * * * * * | Every minute |
| 0 * * * * | Every hour, on the hour |
| 0 0 * * * | Every day at midnight |
| 30 2 * * 0 | Sundays at 02:30 |
| 0 9 * * 1-5 | Weekdays at 09:00 |
| 0 0 1 * * | The first of every month |
| 0 0 1 1 * | Once a year, at midnight on 1 January |
| */10 * * * * | Every 10 minutes |
Gotchas that cause missed and surprise runs
- Day of month and day of week combine with OR.
0 0 13 * 5runs on the 13th and on every Friday, not only on Friday the 13th. It's only an AND when one of the two fields is*. - Steps restart with each cycle.
*/7 * * * *runs at minutes 0, 7, 14 … 56 and then at 0 again, so the last gap in each hour is only 4 minutes. - Time zones. Cron uses the time zone of the machine running it, and containers and cloud schedulers are usually UTC. A job set for 09:00 "local" may run at a different hour than you expect, and twice-a-year daylight-saving shifts can skip or repeat an hour.
- Sunday is 0 and 7. Both mean Sunday in standard cron, but other systems number the week differently (see below).
- Percent signs in crontab commands. An unescaped
%in a crontab command line is treated as a newline, sodate +%Fmust be writtendate +\%F. - Missed runs are not made up. If the machine is off or the daemon is down at the scheduled minute, plain cron simply skips that run.
Cron dialects: why some expressions won't paste in
This tool explains standard five-field cron, the
format used by crontab, Kubernetes CronJobs
and GitHub Actions schedules (which run in UTC). Other systems use variations that look
similar but mean different things:
- Quartz and Spring add a leading seconds field (and
sometimes a trailing year), use
?,L,Wand#, and number the days of the week 1–7 starting from Sunday. - AWS EventBridge cron has six fields ending in a year,
requires
?in either the day-of-month or day-of-week field, and also numbers weekdays from Sunday = 1. - systemd timers use an entirely different
OnCalendarsyntax.
Pasting one of those here gives an error that names the difference, rather than a confident but wrong explanation.
FAQ
How do I run a job every 90 minutes?
One expression can't express it, because cron steps restart each hour or day. Use two lines: 0 0-23/3 * * * (at :00 every third hour) and 30 1-23/3 * * * (at :30 in the hours between).
How do I run a job on the last day of the month?
Standard cron has no "last day" symbol. A common workaround is to run on days 28–31 and let
the command check whether tomorrow is the 1st, for example
[ "$(date -d tomorrow +\%d)" = 01 ] && run-job
with GNU date.
Why did my job not run when this tool says it should?
Check the machine's time zone first, then that the cron daemon is running, then that the
command works with cron's minimal environment (a short PATH, no shell profile). Cron reports failures by mail or in the system log, not on screen.
Can cron run every few seconds?
No. The smallest unit is one minute. For shorter intervals, run a long-lived process, or a job that loops with a sleep, or use a scheduler that supports seconds.
Related tools
- Timestamp Converter — Unix timestamps to readable dates and back, in UTC and your local time.
- chmod Calculator — Convert 755 ↔ rwxr-xr-x and see exactly who can do what.
- Format Identifier — Paste anything to find out what it is (a JWT, JSON, a certificate, Base64, a cron schedule and more), then open it in the right tool.