About this tool
A cron expression is the compact syntax that Linux/Unix crontab and most schedulers (Spring, Quartz, Kubernetes CronJob, CI systems) use to describe *when* a job runs. It is a handful of space-separated fields, one per time dimension — but reading a string like `0 2 * * 1-5` back out is genuinely error-prone. This tool translates the expression into plain English and projects the next several real fire times from a given start, so you can confirm it behaves as intended before you ship it.
Standard crontab uses 5 fields: minute, hour, day-of-month, month, day-of-week. Frameworks like Quartz and Spring often use 6 fields (a leading "seconds" field). Every field accepts `*` (any), `,` (a list such as `1,15`), `-` (a range such as `9-17`) and `/` (a step such as `*/5`, every 5th unit). One gotcha: when both day-of-month and day-of-week are restricted, they combine with OR, not AND. All parsing happens in your browser — the expression is never uploaded.
How to use
- Paste or type your cron expression, e.g. `0 9 * * 1` for 9 AM every Monday.
- Check the field count: 5 fields is standard crontab; 6 fields is the Quartz/Spring style with a leading seconds field, and the tool parses accordingly.
- Read the generated plain-English description and verify it matches what you meant.
- Review the "next run times" list to confirm the upcoming fire dates and times fit your schedule.
- Tweak any field in place (e.g. change `*/5` to `*/15`) and the description and projected times update live.
When to use it
- Before deploying a scheduled job, confirm what time `0 2 * * *` actually fires so a nightly batch does not run at the wrong hour.
- Inherit someone else’s crontab or Quartz config and quickly decode an unfamiliar expression.
- Validate the cadence when writing periodic jobs such as DB backups, log cleanup or report delivery.
- Debug a "job did not run when expected" issue by comparing the projected times against your assumption.
- Learn cron syntax: change one field and watch the fire times shift in real time.
FAQ
Is a cron expression 5 fields or 6?
It depends on the runtime. Traditional Linux crontab uses 5 fields (minute hour day month weekday). Quartz and Spring’s `@Scheduled(cron=...)` typically use 6 fields with a leading seconds field; Quartz also allows an optional 7th "year" field. Confirm which format your scheduler expects before pasting.
What is the difference between `*/5` and `0/5`?
In the minute field they are usually equivalent — both mean "every 5 minutes starting at 0". `*/5` means "step by 5 across the whole range"; `0/5` means "start at 0, step by 5". The difference shows when the start is non-zero, e.g. `3/10` fires every 10th unit starting from 3.
Why does setting both day-of-month and weekday fire more often than I expect?
Because those two fields combine with OR. `0 0 1 * 1` fires on the 1st of the month OR on every Monday — not only on a 1st that happens to be a Monday. If you want just one condition, set the other field to `*`.
Which timezone are the projected run times in?
This tool computes and displays times in your browser’s local timezone. In production, cron usually runs in the server or container’s system timezone (often UTC), which may differ. Always confirm the server timezone on deploy to avoid an off-by-hours surprise.