Skip to content

Cron Explainer

Paste a cron expression to see what it means in plain English, how each field is read, and exactly when it will run next.

RunsIn browser
Sign-upNone
UploadsZero
In plain English
Field by field
FieldValueMatches
Next 10 runs
#DateTimeFrom now

Cron syntax

A standard cron expression has five fields separated by spaces: 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). Some schedulers, such as Spring, Quartz-style libraries and node-cron, add a sixth field for seconds at the front; this tool accepts both.

Each field takes * (any value), a number, a list (1,15), a range (9-17) or a step (*/15 for every 15th value, 10-50/10 for every 10th within a range). Macros like @hourly, @daily, @weekly, @monthly and @yearly are shorthand for common schedules.

The day-of-month / day-of-week rule

When both day fields are restricted, cron runs if either one matches, not both. So 0 0 13 * 5 runs on every 13th and every Friday, not only on Friday the 13th. If either field starts with *, only the other one counts. This explainer follows that rule, which matches Vixie cron and cronie on Linux.

Next run times are calculated in your browser for your local time zone or UTC. Around daylight saving changes, real cron daemons differ in how they handle skipped or repeated hours, so check those dates against your system.

Questions

How do I run a cron job every 5 minutes?

Use */5 * * * *. The step divides the minute field, so it runs at :00, :05, :10 and so on.

How do I run a job on weekdays only?

Use 1-5 (or MON-FRI) in the fifth field. For example, 0 9 * * 1-5 runs at 09:00 Monday to Friday.

What time zone does cron use?

The system time zone of the machine running the cron daemon, unless a CRON_TZ or TZ variable is set. Hosted schedulers like GitHub Actions and most cloud platforms use UTC; switch the run list to UTC to check.

Can cron run every 30 seconds?

Classic crontab cannot go below one minute. Schedulers with a seconds field can: */30 * * * * *. With plain cron, a common workaround is two entries, one of which sleeps 30 seconds first.

What do L, W and # mean?

They are Quartz extensions (last day, nearest weekday, nth weekday of the month). Standard Unix cron does not support them, so this tool reports them as errors rather than guessing.