Skip to content
Utilboxes

Cron Expression Explainer

Paste a cron expression such as 0 9 * * 1-5 to see it in plain English — here, “At 09:00 on weekdays” — with each field explained and the next ten run times in your time zone. It reads standard five-field cron, including ranges, steps, names like MON and shortcuts like @daily. It runs in your browser.

Runs entirely in your browser

Updated

How to use Cron Expression Explainer

  1. 1Type or paste a cron expression, or pick an example.
  2. 2Read the plain-English description and the field-by-field table.
  3. 3Check the next ten run times, shown in your own time zone.
  4. 4Adjust the expression until the schedule matches what you want.

How it works

Standard cron has five fields: minute (0–59), hour (0–23), day of month (1–31), month (1–12 or JAN–DEC) and day of week (0–6 or SUN–SAT, with 7 also meaning Sunday). Each field can be * for every value, a list (1,15), a range (1-5), a step (*/15 or 0-30/10) or a combination.

The shortcuts @hourly, @daily (or @midnight), @weekly, @monthly and @yearly (or @annually) are expanded to their five-field equivalents. @reboot has no schedule, so it is explained rather than expanded.

When both the day-of-month and day-of-week fields are restricted, standard cron runs on days that match either one, not both. 0 0 13 * 5 therefore runs on every 13th and on every Friday. If either field starts with *, only the other one counts.

Upcoming runs are calculated in this device's time zone by checking each day for up to five years ahead, so schedules that run rarely — such as 29 February — are still found. Times that do not exist on a daylight-saving change day are skipped.

Quartz and Spring schedulers use six or seven fields (adding seconds and a year) and symbols such as ?, L, W and #. Those are reported as not standard cron rather than guessed at.

Everything runs in this page. Nothing you paste is transmitted, logged or stored, which is what makes it safe to drop a production payload in here while you are debugging.

Worked example

*/15 9-17 * * 1-5

  1. Minute */15 → 0, 15, 30, 45
  2. Hour 9-17 → 09:00 to 17:59
  3. Day of week 1-5 → Monday to Friday

Result: Every 15 minutes between 09:00 and 17:59 on weekdays — the last run each day is 17:45.

Tips and common mistakes

  • Write minute first: 30 2 * * * is 02:30, not 30 past 2 in the afternoon.
  • Spread heavy jobs away from minute 0, when many other schedules fire.
  • Use explicit times for daily jobs so daylight-saving changes do not surprise you; 02:30 does not exist on some change days.
  • Comment each crontab line with its plain-English meaning.

Frequently asked questions

What does * * * * * mean?
Every minute of every day. Each * means “every value” for its field.
How do I run a job every 5 minutes?
Use */5 * * * *. The step /5 means every fifth value, starting from 0.
Which time zone does cron use?
The time zone of the machine or service running it, which on servers and many cloud schedulers is UTC. The run times here are shown in your own time zone, so adjust if your server differs.
Why does my schedule run on more days than I expected?
If you restricted both day of month and day of week, cron runs when either matches. To run on the 13th only if it is a Friday, schedule the 13th and check the weekday inside the job.
Does it support seconds?
No. Standard cron's smallest unit is a minute. Six- or seven-field expressions belong to Quartz, Spring or similar schedulers, and are flagged so you can remove the extra fields.
Is 0 or 7 Sunday?
Both. Standard cron accepts 0 and 7 for Sunday, and names such as SUN, MON and FRI.