CRON Syntax Quick Reference
| Pattern | Meaning | Example |
|---|---|---|
* | Every value | * in hour = every hour |
*/n | Every n-th value | */5 in minute = every 5 min |
n | Specific value | 9 in hour = 9 AM |
n-m | Range | 1-5 in weekday = Mon–Fri |
n,m,p | List | 1,15 in dom = 1st and 15th |
n-m/p | Range with step | 0-12/2 in hour = every 2h, midnight–noon |
Quick answer
A cron expression is five space-separated fields — minute, hour, day-of-month, month, day-of-week — that describe when a job repeats. This tool parses your expression into plain English and the next five run times, entirely in your browser. Type an expression or click a preset, adjust the individual fields, and read the description and upcoming runs below.
About CRON Expressions
CRON is a time-based job scheduler used in Unix-like systems. A CRON expression is a compact string of five fields that defines when a task should run: minute, hour, day of month, month, and day of week.
- Use
*to mean "every" —* * * * *runs every minute - Use
*/nfor intervals —*/15 * * * *runs every 15 minutes - Use
n-mfor ranges —0 9 * * 1-5runs at 9 AM on weekdays - Separate multiple values with commas —
0 9,17 * * *runs at 9 AM and 5 PM
Learn more in the companion guide: Understanding CRON Expressions with Examples.
Worked example
Take the weekday-morning schedule 0 9 * * 1-5 and read it field by field:
0 9 * * 1-5
│ │ │ │ └── day-of-week: 1-5 (Monday through Friday)
│ │ │ └──── month: * (every month)
│ │ └────── day-of-month:* (every day)
│ └──────── hour: 9 (09:00)
└────────── minute: 0 (on the hour)
Reads as
"At 09:00, Monday through Friday" — i.e. every weekday at 9:00 AM. The next runs would be the coming weekdays at 09:00, skipping Saturday and Sunday.
Change one field
0 9 * * 1-5→*/30 9 * * 1-5fires at 9:00 and 9:30 on weekdays (step in the minute field).0 9 * * 1-5→0 9,17 * * 1-5fires at 9:00 and 17:00 on weekdays (a list in the hour field).
Edge cases & gotchas
- Day-of-month and day-of-week is OR, not AND. When both fields are set, the job runs when either matches.
0 0 13 * 5runs on the 13th or every Friday — not "Friday the 13th". That specific case needs a check inside the job. - Step values align to fixed points.
*/15fires at 0, 15, 30, 45 — not 15 minutes after you added it. And*/40fires at 0 and 40, then resets at the next hour, so the gap is 40 minutes then 20, not a steady 40. - Sunday is 0 (and often 7 too). This tool uses 0–6 with 0 = Sunday. Many Unix crons also accept 7 for Sunday; some tools and Quartz number the week differently, so double-check when copying an expression between systems.
- Standard cron is 5 fields. A leading seconds field (6 fields) or a Quartz-style expression won't parse here — this tool expects minute, hour, day-of-month, month, day-of-week.
- Cron runs in the server's timezone. A "9 AM" job fires at 9 AM wherever the cron daemon lives, which may not be your local time. This tool shows the next runs in your local time so you can see the real-world moments.
Frequently Asked Questions
What is a CRON expression?
A CRON expression is a string with five space-separated fields that defines a recurring schedule: minute (0–59), hour (0–23), day-of-month (1–31), month (1–12), and day-of-week (0–6, where 0 = Sunday). For example, 0 9 * * 1-5 means every weekday at 9:00 AM.
What does * mean in CRON?
An asterisk (*) means "every valid value" for that field. For example, * in the minute field means every minute, and * in the hour field means every hour.
How do I run a CRON job every 5 minutes?
Use */5 * * * *. The / syntax means "step" — */5 means every 5th value starting from 0 (so 0, 5, 10, 15, …).
Can CRON run on a specific day-of-month and day-of-week at the same time?
Not with AND logic. When both the day-of-month and day-of-week fields are restricted (neither is *), most CRON implementations combine them with OR — the job runs when either matches. So 0 0 13 * 5 runs on the 13th of every month or every Friday, not only on Friday the 13th. To get a true "Friday the 13th" schedule you need logic inside the job itself.
Does */n really run every n minutes from when I add the job?
No. Step values are aligned to fixed points in the field, not to when the job was created. */15 in the minute field fires at 0, 15, 30, and 45 past every hour. A value that doesn't divide evenly, like */40, fires at 0 and 40 and then resets at the top of the next hour — giving an uneven 40-then-20-minute gap rather than a steady 40-minute interval.
Why does my 6-field cron expression fail here?
This tool uses the standard 5-field Unix cron format: minute, hour, day-of-month, month, day-of-week. Some schedulers add a leading seconds field (6 fields) or, like Quartz, use 6 to 7 fields with different day-of-week rules. Remove the extra seconds field to use a 6-field expression here, and check your scheduler's own docs for non-standard formats.