Cron Expression Generator and Parser
Runs locallyDecode cron expressions in plain English and preview the next runs.
Next 8 runs
Shown in your local timezone.
Presets
The cron rule that catches almost everyone
Five fields: minute, hour, day-of-month, month, day-of-week. The trap is what happens when you restrict both day fields at once. When day-of-month and day-of-week are both something other than *, Vixie cron — and therefore Linux, and therefore most schedulers — runs the job when EITHER matches, not both. To turn a run time into the epoch seconds a log shows, use the Unix timestamp converter.
So 0 0 13 * 5 does not mean "midnight on Friday the 13th". It means midnight on the 13th of every month, and also midnight every Friday. If you want Friday the 13th you need a day-of-week-only schedule plus a date check inside the job.
Expression
30 2 * * 1-5 0 */4 * * * 0 0 13 * 5 15 9 1 * *
What it actually does
02:30, Monday to Friday Every 4 hours: 00:00, 04:00, 08:00, 12:00, 16:00, 20:00 Every 13th of the month AND every Friday — not Friday the 13th 09:15 on the 1st of every month
| Position | Field | Range | Notes |
|---|---|---|---|
| 1 | Minute | 0–59 | */15 gives :00, :15, :30, :45 |
| 2 | Hour | 0–23 | 24-hour clock; no AM/PM, no 24 |
| 3 | Day of month | 1–31 | A job set for the 31st skips short months entirely |
| 4 | Month | 1–12 or JAN–DEC | Names are case-insensitive but not portable everywhere |
| 5 | Day of week | 0–7 or SUN–SAT | Both 0 and 7 mean Sunday |
Where people get caught
Daylight saving eats and duplicates jobs
A job scheduled at 02:30 local time runs twice on the day the clocks go back and not at all on the day they go forward. Anything in the 01:00–03:00 window should run in UTC, or be made idempotent.
Steps do not wrap around the end of a field
*/7 in the day-of-month field restarts at 1 each month, so the gap between the 29th and the next run is not seven days. Steps are only evenly spaced inside a single field cycle.
Five fields or six is a different expression
Unix cron takes five fields; Quartz, Spring and several cloud schedulers put seconds first and take six or seven. A five-field expression pasted into Spring shifts every field by one and runs at a time you did not ask for.
Cron does not read your shell profile
No PATH from .bashrc, no nvm, no locale, often no HOME. A script that works in your terminal and silently fails under cron is almost always an absolute-path problem. Log stdout and stderr somewhere you will look.
An overrunning job gets a second copy, not a queue
If the run takes longer than the interval, cron simply starts another. Wrap the command in flock, or make the job take a lock itself, before you schedule anything every minute.
The weekday abbreviations are not a schedule
0 9 * * 1-5 is weekdays. 0 9 * * 1,5 is Mondays and Fridays. The comma and the dash are one character apart and produce very different on-call weeks.
About the cron expression parser
How it works in 4 steps · 4 common use cases · 4 questions answered
About the cron expression parser
How it works in 4 steps · 4 common use cases · 4 questions answered
How it works
- 1.Paste a cron expression, or start from one of the presets.
- 2.Read the plain-English description of what it means, with each of the five fields broken out and its valid range shown.
- 3.Check the next eight run times, in IST, SAST, UTC or your local timezone.
- 4.Adjust a field and watch the description and the schedule update immediately.
Common use cases
- •Confirming what an inherited cron line in a Kubernetes CronJob actually does
- •Checking that a nightly job in UTC lands at the intended local hour in India or South Africa
- •Writing a new schedule and verifying the next runs before deploying it
- •Explaining a schedule to someone who does not read cron syntax
FAQ
Which cron format does it use?
The standard five-field format: minute, hour, day of month, month, day of week. That is what Linux cron, Kubernetes CronJobs and most CI schedulers accept.
Why does my expression run more often than I expected?
Almost always because day-of-month and day-of-week are both set to something other than *. Standard cron treats those two as OR, not AND, so the job fires on either match.
Are seconds supported?
No. Six-field expressions with a leading seconds column are a Quartz and Spring extension, not standard cron, and are not parsed here.
Does it handle daylight saving time?
The preview uses the timezone rules your browser has, so a schedule shown in a zone that observes DST reflects the shift. IST and SAST do not observe DST at all.