How to use the cron expression builder
Start from whichever side you prefer. If you already have an expression from a crontab, a Kubernetes manifest or a GitHub Actions workflow, paste it into the box at the top and the tool parses it straight away: the plain-English sentence underneath tells you what it means, and the list further down shows the next five times it will fire. If you are starting from scratch, pick a preset such as "weekdays at 09:00" or set each of the five fields by hand. Each field offers every value, every N values, specific values you tick off, or a from-to range, and the builder and the expression box always stay in sync.
Mistakes are flagged inline the moment they happen, with the field named and the accepted range shown, so "60 * * * *" or a six-field Quartz schedule will not slip through. Use the time zone menu to see the run times as your server will experience them; a schedule of "0 2 * * *" means 02:00 in whatever zone the daemon runs in, which for most cloud hosts is UTC rather than your local time. The Copy button puts the result on the clipboard.
Why check a cron schedule before deploying it
Cron syntax is compact enough that small slips look plausible. Swapping the hour and minute fields turns "run at 03:15" into "run every day at 15:03"; writing "1-5" in the day-of-month column instead of the day-of-week column schedules a job for the first five days of every month rather than Monday to Friday; and combining a date and a weekday triggers on both, not on the intersection. None of these produce an error on the server. The job simply runs at the wrong time, often for weeks before anyone notices a missing backup.
Seeing the next five run times is the quickest sanity check there is, particularly for rare schedules where the first run may be months away. A leap-day job such as "0 0 29 2 *" is easy to write and hard to test on a live system; here you can confirm it lands on 29 February 2028 in a few seconds. The parser and scheduler run entirely in your browser, so it is safe to paste expressions that reference internal job names, and it keeps working offline once the page has loaded.