Cron Expression Builder — Online Cron Generator & Tester
🔒 Runs in your browser — nothing is sent to a serverCron expression builder for designing, parsing and validating any 5-field cron schedule. Paste an existing expression — `0 9 * * 1-5`, `*/15 * * * *`, `@daily` — and the cron tester shows a plain-English description plus the next ten fire times in your chosen timezone, or build one field by field with hint-driven inputs and preset chips like "Every minute" or "Weekdays at 09:00". Powered by `cron-parser` for the schedule maths and `cronstrue` for the human-readable description. Everything runs 100% inside your browser; the expression and results never leave your device, nothing is uploaded, logged or sent to any server.
Human-readable: At 09:00, Monday through Friday
- #14/30/2026, 09:00:00
- #25/1/2026, 09:00:00
- #35/4/2026, 09:00:00
- #45/5/2026, 09:00:00
- #55/6/2026, 09:00:00
- #65/7/2026, 09:00:00
- #75/8/2026, 09:00:00
- #85/11/2026, 09:00:00
- #95/12/2026, 09:00:00
- #105/13/2026, 09:00:00
Cron syntax cheatsheet
┌── minute (0–59)
│ ┌── hour (0–23)
│ │ ┌── day of month (1–31)
│ │ │ ┌── month (1–12, JAN–DEC)
│ │ │ │ ┌── day of week (0–6, SUN–SAT)
│ │ │ │ │
* * * * *
*— any value5— exactly 51,15,30— list of values1-5— inclusive range*/5— every 5 starting at 00-30/10— step within range (0, 10, 20, 30)@daily— shortcut for0 0 * * *@hourly— shortcut for0 * * * *
Why use a live cron expression builder
Cron syntax is famously easy to misread. `*/15` and `0/15` look almost identical and behave identically only in some fields. The day-of-month and day-of-week fields combine with OR semantics. Steps in the hour field rarely mean what English suggests. A live builder removes the doubt: change a character, watch the human description and the next ten fire times update on the spot. The page does not call any backend, so production cron lines — including ones that contain server hostnames or environment hints — can be pasted without leaving your device. Use it when wiring a Kubernetes CronJob, drafting a GitHub Actions `schedule:` clause, debugging why a Jenkins pipeline fires twice on autumn fall-back day, or convincing yourself that "weekly on Sunday at midnight" is `0 0 * * 0` and not `0 0 * * 7`.
How the parser handles edge cases and timezones
The cron tester runs `cron-parser` with the timezone you select. That matters because cron expressions are interpreted as wall-clock times in some timezone — usually the one the scheduler runs in. On the spring forward day a `2:30` daily job in `Europe/Berlin` is *skipped*, because 02:30 does not exist; on the autumn fall-back day it fires *twice* because 02:30 happens twice. The next-run list shows both behaviours faithfully. For schedules expressed in named shortcuts (`@daily`, `@weekly`) the parser expands them to the canonical 5-field form, so the description and the timestamps come from the same source of truth. If your downstream scheduler runs in UTC, switch the timezone dropdown to `UTC` to verify the schedule there before saving the expression.
Examples
0 9 * * 1-5At 09:00, Monday through Friday*/15 * * * *Every 15 minutes@dailyAt 00:00 (every day) — equivalent to 0 0 * * *0 0 1 */3 *At 00:00 on day-of-month 1, every 3rd month