Cron Expression Generator
Build a crontab schedule with simple dropdowns, or type any expression to see it explained in plain English. Preview the next run times in your local time or UTC before you ship it.
This schedule means
Every minute.
Quick presets
Build it field by field
Pick from the menus to build your schedule, or type directly into the expression box above — the two stay in sync.
Next 5 runs
The five cron fields, and the operators that fill them
A crontab line is five fields separated by spaces, read left to right. Each field accepts a value, a list, a range, or a step.
| Position | Field | Allowed values | Notes |
|---|---|---|---|
| 1 | Minute | 0–59 | Minute of the hour |
| 2 | Hour | 0–23 | 24-hour clock, 0 is midnight |
| 3 | Day of month | 1–31 | Combined with day of week using OR |
| 4 | Month | 1–12 | JAN–DEC names also work |
| 5 | Day of week | 0–7 | 0 and 7 are both Sunday; SUN–SAT names work |
Common cron examples
Click any example to load it into the generator above.
Build a schedule, read it back, and confirm the run times.
The generator works both ways: build with the menus, or type an expression and have it explained. Either way you see exactly when it will fire.
-
1
Choose a quick preset to start, or set each field with the dropdown menus. The expression box updates instantly, and the coloured field cards show how each part is interpreted.
-
2
Prefer to type? Edit the expression directly. The plain-English summary rewrites as you type, and invalid expressions are flagged immediately with a clear reason, so you never deploy a broken schedule.
-
3
Check the next five run times. Toggle between your local timezone and UTC, because cron on a server almost always runs in the server's timezone — usually UTC. This is the step that catches most scheduling mistakes.
-
4
Copy the expression and paste it into your crontab, CI pipeline, Kubernetes CronJob, or any scheduler that uses standard cron syntax.
Where cron expressions are used
The same five-field syntax drives schedulers across the whole stack.
Servers & scripts
The classic use: a Linux or macOS crontab that runs backups, log rotation, cleanup jobs, or report generation at fixed times.
CI/CD & automation
GitHub Actions, GitLab CI, and Jenkins all use cron syntax to trigger scheduled builds, nightly tests, and dependency checks.
Containers & cloud
Kubernetes CronJobs, AWS EventBridge rules, and serverless schedulers accept the same expressions to run tasks on a recurring basis.
Frequently Asked Questions
What is a cron expression?
A cron expression is a compact string of five fields — minute, hour, day of month, month, and day of week — that tells a scheduler when to run a job. For example, 0 9 * * 1-5 means "at 09:00, Monday through Friday." It comes from the Unix cron daemon and is now the de facto standard for time-based scheduling across servers, CI systems, and cloud platforms.
Why does my job run more often than expected with both a day of month and a day of week?
This is the single most common cron surprise. In standard Unix cron, when both the day-of-month and day-of-week fields are restricted (neither is *), the job runs whenever either condition is true, not when both are. So 0 0 13 * 5 runs at midnight on the 13th of every month and on every Friday. This generator shows a warning whenever both fields are set, and the next-run preview reflects the correct OR behaviour.
What timezone does cron run in?
Cron runs in the timezone of the machine it lives on. On most servers and in most cloud environments that is UTC, which can be several hours off from your local time. That mismatch is a frequent cause of "my job ran at the wrong time" bugs. Use the Local / UTC toggle in the next-runs panel to preview both, and confirm the schedule against the timezone your scheduler actually uses.
Does this tool support seconds or the Quartz six-field format?
This generator uses standard five-field Unix cron, which is what Linux crontab, GitHub Actions, Kubernetes CronJobs, and most modern schedulers expect. Quartz (used by some Java frameworks) adds a leading seconds field and a trailing year field for a six- or seven-field format, and uses ? in the day fields. If your scheduler is Quartz-based, keep that difference in mind when copying expressions across.
Do shortcuts like @daily and @hourly work?
Yes. You can type the named shortcuts @hourly, @daily (or @midnight), @weekly, @monthly, and @yearly (or @annually). The generator expands them to their five-field equivalents so you can see exactly what they mean and when they run.
Is my data sent anywhere?
No. Everything runs in your browser. Parsing, the plain-English translation, and the next-run calculations all happen on your device with no network requests, so your schedules never leave your machine.