A schedule, read the way your scheduler reads it.
Build or paste a cron schedule in your browser, read it in words, see its next runs in any time zone, and convert it for GitHub Actions, Quartz and more.
By Suraj KumarUpdated 6 min read
Cron has five fields and a dozen dialects. The same line means one thing to crontab, another to Quartz, is refused by EventBridge and runs in UTC on GitHub. A schedule is only right when it is read by the rules of the scheduler that will run it.
Choose the scheduler, then type or build.
Open the cron builder and choose where the schedule will run: Unix cron (cronie and Vixie cron), GitHub Actions, Kubernetes, Jenkins, Quartz, Spring, AWS EventBridge or a systemd timer. Type the schedule, or build it field by field, every value, every few, a range or the values you pick, and it is said in words as you go. Whatever that scheduler would refuse is refused here too, with the field and the reason: GitHub's @daily, EventBridge without a ?, a Kubernetes schedule with TZ= in it.
Jenkins' H is worked out exactly as Jenkins works it out, from the job's name, so the runs shown are the ones Jenkins will make.
The rule that catches people out.
When both the day of the month and the day of the week are set, cron runs on days that match either: 0 9 1 * 1 runs on the 1st and on every Monday. Yet if one of the two starts with *, as */2 does, cronie needs both. Kubernetes reads */2 the other way. Quartz, Spring, Jenkins and systemd always need both. The page says which rule applies to the schedule you typed.
Next runs, in any time zone.
The next runs are listed in the zone you choose, with how far ahead each one is and its time in UTC, and a month calendar shows the days it runs. When clocks go forward or back, a time can be skipped or happen twice: the page marks those runs and says what the scheduler does with them where its documentation says so. cronie runs a job at a set time as soon as clocks jump past it and once when an hour repeats; EventBridge skips it and runs it once.
From one scheduler to another.
Write it for another scheduler converts the schedule, reads the result back by that scheduler's own rules and checks that its next forty runs are the same. What cannot be carried over is said: seconds for crontab, L and W for Kubernetes, the either rule for Quartz, which becomes two schedules. The file that sets it up comes with it: a crontab line, a GitHub workflow, a Kubernetes CronJob, a Jenkinsfile, the Quartz or Spring code, the AWS command, or a systemd timer and service.
Nothing leaves your browser.
Schedules are read and their runs worked out in your browser, with its own time zone data. Nothing is sent anywhere.
Further reading
- cronie: crontab(5) and cron(8) (opens in a new tab)
- GitHub Docs: the schedule event (opens in a new tab)
- Kubernetes: CronJob (opens in a new tab)
- Quartz: CronTrigger tutorial (opens in a new tab)
- Amazon EventBridge Scheduler: schedule types (opens in a new tab)
- systemd.time(7): calendar events (opens in a new tab)
Topics: cron expression generator · crontab syntax · cron every 5 minutes · cron job generator · cron explain · spring cron · quartz cron · github actions cron · kubernetes cronjob · systemd oncalendar
A little less theory. A little more doing.
Try it on your own terms, with a free browser tool.
Try the tool