Cron expression explainer
Type a 5-field cron expression to see what it means in plain English and exactly when it will run next.
π Runs entirely in your browser. Nothing you paste is uploaded or sent to a server.
Next 5 runs (your time zone: )
Cron syntax
ββββββββββ minute (0-59)
β ββββββββ hour (0-23)
β β ββββββ day of month (1-31)
β β β ββββ month (1-12 or JAN-DEC)
β β β β ββ day of week (0-7 or SUN-SAT; 0 and 7 are Sunday)
* * * * * command
| Syntax | Meaning | Example |
|---|---|---|
* |
every value | * * * * * every minute |
a,b,c |
list | 0 8,12,18 * * * at 08:00, 12:00 and 18:00 |
a-b |
range (inclusive) | 0 9 * * 1-5 09:00 on weekdays |
*/n |
every n-th value | */10 * * * * every 10 minutes |
a-b/n |
every n-th value in a range | 0 8-18/2 * * * every 2 hours from 08:00 to 18:00 |
@hourly |
0 * * * * |
|
@daily / @midnight |
0 0 * * * |
|
@weekly |
0 0 * * 0 |
|
@monthly |
0 0 1 * * |
|
@yearly / @annually |
0 0 1 1 * |
|
@reboot |
once at startup |
The day-of-month / day-of-week trap
If both day fields are restricted, cron runs when either matches. 0 0 13 * 5 runs on every 13th and every Friday, not only on Friday the 13th. If one of the two fields starts with *, both must match. The explainer and next-run list above follow this rule.
Why a cron job doesn't run
- Different environment. Cron runs with a minimal
PATH(usually/usr/bin:/bin), no shell profile and no virtualenv. Use absolute paths to every program, or you get command not found. - Script not executable or has Windows line endings: see permission denied and bad interpreter.
- Time zone. Cron uses the server's time zone (check
timedatectl), not yours. %in the command is turned into a newline by cron; escape it as\%.- No output. Append
>> /tmp/job.log 2>&1to capture errors, and checkgrep CRON /var/log/syslogorjournalctl -u cron.
Six-field expressions with seconds (Quartz, Spring @Scheduled) are a different dialect and are not standard crontab syntax.
Last updated 2026-11-01.