Visualize cron job schedules.
minute hour day month day-of-week
every minute
Next runs
9/6/2026, 1:27:00 PM
9/6/2026, 1:28:00 PM
9/6/2026, 1:29:00 PM
9/6/2026, 1:30:00 PM
9/6/2026, 1:31:00 PM
All calculations performed locally in your browser. No data sent to server.
Results are for informational purposes. Verify results with other sources.
Reading a cron expression
A cron expression is five fields separated by spaces, read left to right as minute, hour, day of month, month, day of week. Almost every cron mistake is either a field in the wrong position or a misunderstanding of how the two day fields interact.
How it works
- Parses the five fields and describes each in words, then lists the next scheduled run times.
- Handles the standard operators: * for every value, */n for every nth, a-b for ranges, and a,b,c for lists.
- Interprets the expression in your browser's time zone, which is not necessarily the one your server uses.
โโโโโโโโโโ minute (0โ59) โ โโโโโโโโ hour (0โ23) โ โ โโโโโโ day of month (1โ31) โ โ โ โโโโ month (1โ12) โ โ โ โ โโ day of week (0โ6, Sunday = 0) โ โ โ โ โ * * * * *
Worked example
Decoding 30 2 * * 1-5 โ a schedule that trips people up because of the two day fields.
- minute = 30
- hour = 2
- day of month = * (every day)
- month = * (every month)
- day of week = 1-5 (Monday to Friday)
Runs at 02:30 every weekday. Note that day-of-month is * here โ had it been a specific number, cron would run when either day field matched, not both, which is the single most common cron surprise.
Reading the result
- When both day-of-month and day-of-week are restricted, cron uses OR, not AND. 0 0 1 * 1 runs on the 1st of the month AND every Monday, not only on Mondays that fall on the 1st.
- Cron uses the server's time zone unless configured otherwise, and most crontabs do not handle daylight saving gracefully. A job scheduled for 02:30 may run twice or not at all on clock-change nights.
- There is no 'every 90 minutes'. Step values divide the field, so */90 in the minute field is invalid; express it as two entries or move the interval logic into the job.
- Some implementations add a sixth seconds field at the front, and Quartz uses seven with a year. Confirm which dialect your scheduler speaks before copying an expression from elsewhere.
Common questions
- Why does my job run more often than expected?
- Usually the day-of-month / day-of-week OR behaviour, or a step value applied to the wrong field. Reading the expression back in words, as this tool does, catches both quickly.
- How do I schedule something on the last day of the month?
- Standard cron cannot express it. The usual workaround is to run daily and have the job exit immediately unless tomorrow is the 1st. Some dialects add an L character for this.