Cron Expression
Explain a Cron expression and preview the next N firings (5 / 6 field syntax).
- minute
- 0 — 0
- hour
- 9 — 9
- day
- * — every day
- month
- * — every month
- weekday
- 1-5 — 1-5
at minute 0, at hour 9, Mon-Fri
- 2026-09-09 09:00
- 2026-09-10 09:00
- 2026-09-11 09:00
- 2026-09-14 09:00
- 2026-09-15 09:00
- 2026-09-16 09:00
- 2026-09-17 09:00
- 2026-09-18 09:00
- 2026-09-21 09:00
- 2026-09-22 09:00
How to use
Purpose
Cron expression online generator, validator, and visualizer. Supports Linux crontab (5 fields) and Quartz/Spring (6-7 fields) formats. Drag-to-configure minute/hour/day/month/weekday and auto-generate the cron string. Reverse-parses cron expressions into human-readable descriptions ("every day at 9 AM"). Shows the next 10 execution times for verification. Common for Linux crontab, Spring @Scheduled, Quartz, Kubernetes CronJob, GitHub Actions. All computation runs locally.
Steps
- Pick format: crontab (5 fields, most common), Quartz (6 fields with seconds), Spring 6-field
- Drag UI to set specific minute/hour/day/month/weekday
- Tool generates the cron string in real time
- Reverse: paste an existing cron expression for a readable description
- Future execution preview: next 5 / 10 / 30 firing times
- Templates: every minute, hourly, daily 0 AM, Monday weekly, monthly 1st
- Complex expressions (step/range/list) supported: */5 1-5 1,3,5
- Cross-timezone preview
FAQ
- crontab 5-field vs Quartz 6-field?
- crontab (Linux) 5 fields: minute hour day month weekday. Quartz (Java) 6-7 fields: second minute hour day month weekday [year]. Quartz adds "second" (1-second granularity) and optional "year". Spring @Scheduled also uses 6 fields. Caution: Quartz day and weekday cannot both be specific (one must be ? or *).
- Is */5 * * * * really every 5 minutes?
- Yes. */5 = step 5 starting at 0: 0, 5, 10, ..., 55. Full syntax: min hour day month weekday = every 5 minutes (288 firings/day). Note: */5 starts from 0, not "every 5 minutes from any start". For 3, 8, 13... use 3-59/5.
- How to write cron for Spring @Scheduled?
- Spring uses 6 fields (second minute hour day month weekday). Every minute: 0 * * * * *. Hourly on the hour: 0 0 * * * *. Daily 9 AM: 0 0 9 * * *. Weekday: 0-7 (0 and 7 both Sunday), Monday = 1.
- Why does my Kubernetes CronJob not run on time?
- 1) Timezone — K8s CronJob defaults to UTC. 0 9 * * * is 9 AM UTC. K8s 1.27+ supports spec.timeZone. 2) Window — startingDeadlineSeconds passed → skipped. 3) Concurrency policy — Forbid skips if previous run is in progress. 4) Pod scheduling — node resources insufficient.
- How to test Linux crontab without waiting?
- Run the command directly in a terminal first (many cron failures are env vars or paths). Modify the time to a few minutes from now and wait. Or use the "next execution times" feature to verify schedule.
Use cases
- Linux crontab system tasks: backups, log cleanup, monitoring alerts
- Spring @Scheduled: business jobs (order timeout, report generation)
- Quartz: complex business scheduling (variable-frequency, timezone-aware)
- Kubernetes CronJob: containerized scheduled tasks
- GitHub Actions schedule: scheduled builds, docs publishing
Use cases
Linux crontab, Spring Scheduled, Quartz, K8s CronJob, GitHub Actions. Backend, ops, DevOps, SRE. Multi-format, visual generation, future-execution preview, timezone display are the differentiators.