Cron Expression Explainer
Decode any cron expression into plain English and see the next run timesMinuteHourDayMonthWeekday
Syntax reference
| Symbol | Meaning | Example | Expands to |
|---|---|---|---|
* | Any value | * (minute) | Every minute (0–59) |
*/n | Every n units | */15 (minute) | 0, 15, 30, 45 |
n | Specific value | 9 (hour) | 9 AM |
n-m | Range | 1-5 (weekday) | Mon through Fri |
n,m | List | 1,15 (day) | 1st and 15th |
n-m/s | Range with step | 0-12/3 (hour) | 0, 3, 6, 9, 12 |
@daily | Preset alias | @daily | 0 0 * * * |
Frequently Asked Questions
What is a cron expression?
A cron expression is a 5-field string that defines a recurring schedule for automated tasks: minute, hour, day-of-month, month, and day-of-week. The expression 0 9 * * 1-5 means "at 9:00 AM every weekday". Cron drives scheduled tasks in Unix systems, CI/CD pipelines, and cloud schedulers.
What is the difference between a standard crontab expression and a Quartz cron expression?
Standard Unix cron has 5 fields (minute, hour, day-of-month, month, day-of-week). Quartz cron (used in Java Spring @Scheduled and many cloud schedulers) adds a seconds field at the start and an optional year field at the end — 6 or 7 fields total. The same expression can mean something completely different in each system. Check which format your scheduler expects.
How do I run a cron job every 5 minutes?
Use */5 in the minute field: */5 * * * * runs at :00, :05, :10, ..., :55 of every hour. The */ syntax means "every N units". For every 5 minutes starting at :03: 3-58/5 * * * *. In Quartz 6-field format: 0 */5 * * * *.
Why did my cron job not run at the expected time?
Common causes: the server's timezone differs from your expected timezone (cron uses the system timezone, not UTC by default); the job ran but exited with an error silently; the system was in maintenance when the job was scheduled; the crontab was edited but not reloaded; or the user's crontab was installed under a different user. Check the cron log (/var/log/syslog or journalctl -u cron).
Can cron jobs run more frequently than once per minute?
Standard Unix cron has minute-level granularity. For sub-minute scheduling, use systemd timers (which support second precision) on Linux, or a dedicated task scheduler like Celery Beat or APScheduler in application code. Cloud schedulers like AWS EventBridge also support minute-level granularity as the minimum.
About Cron Expression Explainer
Paste any cron expression — standard 5-field or a preset alias like @daily — and instantly see a human-readable description of the schedule and the next 8 upcoming run times. Includes a full syntax reference and 8 preset examples. Runs entirely in your browser.