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.