← All tools

Stays in your browser

Cron Expression Explainer Online

Free cron expression explainer. Parse standard five-field schedules (minute hour day month weekday).

  • Minute:0
  • Hour:9
  • Day of month:every value
  • Month:every value
  • Day of week:1, 2, 3, 4, 5

Uses common 5-field Unix cron. Systems with a seconds field may differ.

Reading and writing cron expressions

Five fields, in order: minute, hour, day of month, month, day of week. Two things catch people out. A five-field expression runs at that minute rather than every minute, and when both day-of-month and day-of-week are restricted they are OR'd, so 0 0 1 * 1 fires on the first of the month and on every Monday.

The syntax is small: steps written as */5, ranges with a hyphen, lists with a comma, and names such as MON. The step is the part that surprises people: */5 in the minute field is every five minutes, but */5 in the day-of-month field means days 1, 6, 11 and so on, which is rarely what was intended.

Implementations differ. Some accept a sixth seconds field, some number the days of the week from 0 and others from 1, and shortcuts such as @daily are not universal. When a job fires at the wrong time, check the server timezone first and the field count second.

FAQ

What are the five fields?
Minute, hour, day of month, month, day of week (0 = Sunday).
Are steps like */5 supported?
Yes — */n, ranges a-b, and comma lists.
What about 6-field cron with seconds?
This tool targets five fields; drop the seconds field first.
How do I run something every five minutes?
*/5 * * * * does it. If it seems to run more often than that, the expression probably has a sixth field that the server reads as seconds, or a wrapper is retrying a failing job and each attempt looks like a separate run.
Why does my cron job run at the wrong time?
The timezone is almost always the cause. Cron uses the system timezone, not the timezone of whoever wrote the expression and not necessarily UTC, so a job intended for 09:00 local can land an hour or more away after a daylight-saving change.
What is the difference between * and */1?
They describe the same schedule for that field: both mean every value. Using * is clearer for every, and reserving the step form for values above one makes an expression easier to review, since a stray step is the most common way a schedule ends up firing far less often than intended.

Related tools