Cron Schedule Calculator
Paste a 5-field cron expression (minute hour day-of-month month day-of-week) and the calculator explains it in plain English, counts runs in the next 24 hours and 7 days, and shows the next actual run times.
Results
Enter data and click Calculate.
What the 5 fields mean
| Field | Range | Meaning |
|---|---|---|
| Minute | 0-59 | Which minute of the hour to run. |
| Hour | 0-23 | Which hour of the day (24h clock). |
| Day of month | 1-31 | A specific day of the month. |
| Month | 1-12 | A specific month of the year. |
| Day of week | 0-7 (0 and 7 = Sunday) | A specific day of the week. |
If both day-of-month and day-of-week are restricted (not *), the job runs when either one matches β a common gotcha in POSIX cron.
5-field vs 6-field (seconds)
This calculator expects classic 5-field cron: minute hour day-of-month month day-of-week (e.g. 0 5 * * *). Some systems (Quartz, Spring, some CI schedulers) use 6 fields with seconds first (second minute hour β¦). Pasting a 6-field expression fails validation β drop the leading seconds field or rewrite it as 5-field cron.
Common patterns
*/5 * * * *β every 5 minutes, around the clock.0 * * * *β every hour, on the hour.0 5 * * *β every day at 5:00 (nightly backups).0 9 * * 1-5β weekdays at 9:00 (reports, business notifications).0 0 1 * *β midnight on the 1st of every month (monthly billing).
Overlapping run risk
If a job takes longer than the schedule interval (e.g. */5, but the job runs for 8 minutes), the next run starts before the previous one finishes. Without a lock (lock file, distributed lock, flock), this leads to parallel copies of the same job, race conditions, and duplicate processing.
Time zone: Linux crontab vs Kubernetes CronJob
- Classic Linux crontab runs on the system time zone (
/etc/timezone) by default, though some implementations (e.g. Vixie cron) let you setCRON_TZper line. - Kubernetes CronJob historically ran in UTC regardless of the nodeβs zone; since Kubernetes 1.24+, the
.spec.timeZonefield lets you set an IANA zone directly in the manifest. - When moving between environments, always check the effective time zone β the same cron pattern means a different wall-clock time in UTC versus, say, America/New_York.
Examples
*/15 9-17 * * 1-5β every 15 minutes, but only 9-17 on weekdays (business-hours monitoring).0 0 * * 0β every Sunday at midnight (weekly cleanup job).30 2 1,15 * *β the 1st and 15th of the month at 2:30 (semi-monthly billing).
FAQ β cron schedules
- Why arenβt "0 0 * * 1,15" and "0 0 1,15 * *" the same?
- The first sets day-of-week (1=Monday; 15 is out of the 0-7 range and invalid), the second sets day-of-month (the 1st and 15th). Field order matters.
- What happens when both day-of-month and day-of-week are set?
- POSIX cron treats this as a logical OR β the job runs when either one matches, not only when both do.
- How do I write "every 10 minutes"?
*/10 * * * *β works cleanly for any divisor of 60 (2, 3, 4, 5, 6, 10, 12, 15, 20, 30).- Can I use month/day names (JAN, MON)?
- Many cron implementations support this (e.g.
MON-FRI), but not all β this calculator expects numbers for predictability. - Why isnβt the weekly run count a multiple of the daily count?
- When a pattern depends on specific weekdays or dates (e.g. weekdays only), the run count differs day to day β 7Γdaily wonβt always match.
- What if my pattern has no run in the next ~139 days?
- Thatβs a sign the expression is likely invalid (e.g. an impossible day/month combination) β check each field individually.
- How do I avoid overlapping runs?
- Use a lock (lock file,
flock, a distributed lock in Redis/a DB) at the start of the job, and exit immediately if a previous instance is still running. - Does this calculator support six-field cron expressions with seconds?
- No. It expects 5 fields (no seconds). If you have Quartz/Spring-style cron with a leading seconds field, remove that field or rewrite it as classic 5-field crontab.
- Do presets run the calculation right away?
- No β presets only fill the expression field. Click Calculate to see the result.