What This Tool Does
This cron tool parses and validates any standard cron expression (5 fields: minute, hour, day-of-month, month, day-of-week), translates it into human-readable text, and computes the next 5 scheduled run times. Useful for Linux crontab, Jenkins pipelines, GitHub Actions, Kubernetes CronJobs, and any scheduler.
Inputs Explained
- Cron Expression: Five space-separated fields: minute hour day-of-month month day-of-week.
- Presets: Common patterns like hourly, daily, weekly — click to load.
How It Works
The expression is split into 5 fields. Each field is parsed for special characters (*, /, -, ,). The tool validates each field against its valid range, generates a plain-English description, and iterates forward from now to find the next 5 matching times by checking each minute.
Formula / Logic Used
Cron Expression Builder & Validator
Build cron expressions visually and see the next run times and plain English meaning.
Step-by-Step Example
Expression: 0 9 * * 1-5
Meaning: At minute 0, hour 9, every day of month, every month, on Monday through Friday.
Plain English: Runs daily at 9:00 AM on weekdays (Monday to Friday).
Next runs: Monday 9:00 AM, Tuesday 9:00 AM, Wednesday 9:00 AM, etc.
Use Cases
- Linux crontab: Build and validate crontab entries before adding to your server.
- Jenkins pipelines: Schedule builds using cron syntax for periodic jobs.
- GitHub Actions: Schedule workflows with standard cron expressions.
- Kubernetes CronJobs: Define schedule for recurring Kubernetes jobs.
- Database maintenance: Schedule backups, cleanups, and reports at precise times.
Assumptions and Limitations
- Uses standard Unix cron with 5 fields. Some systems use 6 fields (with seconds) — not supported here.
- Special strings like @hourly, @daily, @reboot are not parsed — use the numeric equivalent instead.
- Day-of-month and day-of-week are OR-combined in standard cron (matching either triggers execution).
- Next run times are computed in your browser's local timezone; the actual scheduler may use UTC.
Frequently Asked Questions
What are the 5 cron fields?
Minute (0-59), Hour (0-23), Day of Month (1-31), Month (1-12), Day of Week (0-6 with 0=Sunday). Each field supports *, numbers, ranges (1-5), lists (1,3,5), and step values (*/15).
What does * mean in cron?
Asterisk means 'every possible value' for that field. * * * * * means every minute of every hour of every day — the most frequent possible schedule.
What is */15 in a cron expression?
Step syntax: every 15 units. In the minute field, */15 means at minutes 0, 15, 30, 45 of every hour. You can combine: */10 9-17 * * 1-5 = every 10 minutes during work hours on weekdays.
How do day-of-month and day-of-week interact?
In standard cron, when both are restricted (not *), either matching triggers execution (OR logic). So '0 0 15 * 1' runs on the 15th of every month AND every Monday — not just Mondays that fall on the 15th.
What's the difference between 0 and 7 for day-of-week?
Both mean Sunday in most cron implementations. Monday=1, Tuesday=2, ..., Saturday=6, Sunday=0 or 7. Use 0 to be safe across different systems.
Does cron support seconds?
Standard Unix cron runs with minute precision. Some schedulers (Quartz, Spring, Jenkins) support a 6-field version with seconds. This tool validates standard 5-field cron only.
Why is my GitHub Action cron running at different times?
GitHub uses UTC for cron schedules and may delay runs during peak load. Your 9 AM schedule in IST (UTC+5:30) should be written as 30 3 * * * to match 9 AM IST in UTC.
Can I schedule a job every month on the last day?
Standard cron doesn't have a 'last day' keyword. Some extended cron implementations support L (Quartz) or specific day-of-month like 28-31 with application-level logic to skip invalid dates.
Sources and References
- crontab(5) — Unix Manual — Official Unix cron format reference.
- Wikipedia — Cron — Background and history of cron expressions.
- GitHub Actions — Scheduled Events — GitHub Actions cron syntax (UTC).
- Kubernetes — CronJob — Kubernetes CronJob scheduling.