Cron Expression Generator (Build, Explain & Preview)
Build cron schedules visually, paste any expression for a plain-English explanation, and preview the next 10 runs in any timezone — 5-field and Quartz 6-field, all in your browser.
Build your schedule
0 9 * * *At 09:00 every day.
Next 10 runs
- 1
Sat, 17 Oct 2026, 09:00:00in 3h 23m - 2
Sun, 18 Oct 2026, 09:00:00in 1 day - 3
Mon, 19 Oct 2026, 09:00:00in 2 days - 4
Tue, 20 Oct 2026, 09:00:00in 3 days - 5
Wed, 21 Oct 2026, 09:00:00in 4 days - 6
Thu, 22 Oct 2026, 09:00:00in 5 days - 7
Fri, 23 Oct 2026, 09:00:00in 6 days - 8
Sat, 24 Oct 2026, 09:00:00in 7 days - 9
Sun, 25 Oct 2026, 09:00:00in 8 days - 10
Mon, 26 Oct 2026, 09:00:00in 9 days
crontab line: 0 9 * * * /path/to/your-command.sh
TL;DR
A cron expression is a 5-field string — minute hour day-of-month month day-of-week — that schedules recurring jobs. Use the visual builder above to click a schedule together, or paste any expression into the explainer for a plain-English translation, smart validation, and the next 10 run times in your timezone.
What is a cron expression?
A cron expression is a compact schedule written as five space-separated fields. Each field is a small pattern — a number, a range, a list, or a step — and together they pin down exactly when a job runs. The format dates back to Unix cron in the 1970s (standardized by Paul Vixie’s widely-used implementation), and it has survived because it is both human-readable and precise: 0 9 * * 1-5 is instantly recognizable to any DevOps engineer as “9 AM on weekdays.”
Cron expressions power an enormous amount of invisible infrastructure: nightly database backups, hourly log rotation, CI pipelines, certificate renewals, report emails, cache warming. Anywhere you see “runs every night at 2 AM,” there is usually a cron expression behind it. Getting the expression right matters — a wrong field can mean a backup that never runs, or a job that hammers your API every minute instead of every hour.
What do the 5 fields mean, in order?
| # | Field | Allowed values | Special characters |
|---|---|---|---|
| 1 | Minute | 0–59 | , - * / |
| 2 | Hour | 0–23 | , - * / |
| 3 | Day of month | 1–31 | , - * / ? |
| 4 | Month | 1–12 or JAN–DEC | , - * / |
| 5 | Day of week | 0–7 (0 & 7 = Sunday) or MON–SUN | , - * / ? |
The special characters: * means “every value,” , separates list items, - defines ranges (1-5), and / steps through values (*/15 = every 15). ? is Quartz-only and means “no specific value.”
Common cron expressions, decoded
| Expression | Meaning |
|---|---|
| */5 * * * * | Every 5 minutes |
| 0 * * * * | At the top of every hour |
| 0 0 * * * | Every day at midnight |
| 0 9 * * * | Every day at 9:00 AM |
| 0 9 * * 1-5 | Weekdays (Mon–Fri) at 9:00 AM |
| 0 22 * * 0 | Every Sunday at 10:00 PM |
| 0 0 1 * * | On the 1st of every month at midnight |
| 0 0 1 1 * | Once a year — midnight on January 1st |
| 30 2 * * 6 | Every Saturday at 2:30 AM |
| 0 */6 * * * | Every 6 hours at minute 0 |
The day-of-month vs day-of-week trap
This is the single most misunderstood part of cron. When both day-of-month and day-of-week are restricted (neither is *), the job runs when either matches — it’s OR, not AND. 0 0 13 * 5 runs on the 13th of every month and every Friday. It does not mean “Friday the 13th.” There is no way to express “Friday the 13th” in cron alone — put the extra check inside your script. The validator in the tool above flags this pattern automatically.
Cron vs Quartz: 5 fields or 6?
Standard cron (Vixie/ISC, Linux crontab, most CI systems) uses 5 fields starting with the minute. Quartz — the Java scheduler — prepends a seconds field, making 6 (with an optional 7th for year). So Quartz 0 30 9 * * ? means 09:30:00, and Quartz schedules like */10 * * * * * (every 10 seconds) are impossible in standard cron, whose finest resolution is one minute. Toggle Quartz mode in the builder above — the validator, explainer, and run preview all adapt.
This generator vs crontab.guru
| Capability | This tool | crontab.guru |
|---|---|---|
| Paste cron → plain English | Yes | Yes (its core strength) |
| Visual click-to-build generator | Yes — presets + per-field builder | No — type the expression yourself |
| Upcoming runs preview | Next 10, any timezone | Next 1, no timezone choice |
| Quartz 6-field mode | Yes | No |
| Smart warnings (OR trap, Feb 30) | Yes | No |
| Shareable link | Yes — expression in the URL hash | Yes |
Related developer tools
Pair this with ToolsOfWeb's Unix Timestamp Converter to translate the run times into epoch values for logs and APIs, the JSON Formatter for the payloads your scheduled jobs produce, or the Regex Tester when your cron jobs involve log parsing.
FAQs
What is a cron expression?+
A cron expression is a short string — usually 5 fields: minute, hour, day of month, month, day of week — that tells a scheduler when to run a job. For example, "0 9 * * 1-5" means "at 9:00 AM, Monday through Friday." The format comes from Unix cron (Vixie cron), and most servers, CI systems, and job schedulers understand the same 5-field syntax.
What is the order of the 5 cron fields?+
Minute (0–59), hour (0–23), day of month (1–31), month (1–12), day of week (0–7, where both 0 and 7 mean Sunday). A handy mnemonic: they go from smallest time unit to largest, except day-of-week sits at the end. The field table on this page lists every allowed value.
What does */5 mean in a cron expression?+
"*/5" means "every 5" — the star means "every possible value" and "/5" steps through them. So "*/5 * * * *" runs every 5 minutes (at :00, :05, :10 …). Similarly "0 */2 * * *" runs at the top of every 2nd hour, and "5/15" in the minute field means minutes 5, 20, 35, 50.
Why did my cron job run on days I did not expect?+
The classic trap: when day-of-month AND day-of-week are both restricted, cron uses OR logic, not AND. "0 0 13 * 5" runs on every 13th of the month AND every Friday — not just Friday the 13th. If you want only Friday the 13th, cron cannot express it directly; check the date inside your script instead.
Does cron use UTC or my local time?+
Cron runs in the system timezone of the machine running the cron daemon — which is often UTC on servers and containers, but local time on laptops. This is a top cause of "my cron ran at the wrong hour." Always verify the server timezone, and use the timezone preview in the tool above to see exactly when your schedule fires in any zone.
What is the difference between 5-field cron and Quartz 6-field cron?+
Standard (Vixie) cron has 5 fields starting with minute. Quartz — used by Java schedulers — adds a seconds field at the front, making 6 fields (7 with an optional year). So Quartz "0 30 9 * * ?" means 9:30:00, and Quartz accepts "?" as "no specific value" for day-of-month/day-of-week. Toggle Quartz mode in the builder above.
What do @daily, @hourly, and @reboot mean?+
They are Vixie cron shorthands: @yearly/@annually = "0 0 1 1 *", @monthly = "0 0 1 * *", @weekly = "0 0 * * 0", @daily/@midnight = "0 0 * * *", @hourly = "0 * * * *", and @reboot = run once at system startup. Quartz and most cloud schedulers (AWS EventBridge, Kubernetes CronJobs) do not accept them — use explicit fields there.
Why didn’t my cron job run?+
Checklist: (1) the cron daemon is actually running; (2) the schedule is valid — "0 0 30 2 *" (Feb 30) never fires; (3) timezone — the server may be UTC; (4) environment — cron runs with a minimal PATH, so use absolute paths; (5) a bare % in the command becomes a newline in crontab — escape it as \%. The validator above flags impossible dates automatically.
Can cron run a job every second?+
No — standard cron’s finest resolution is one minute. For sub-minute scheduling use a systemd timer with AccuracySec, a loop with sleep in your script, or a scheduler with a seconds field like Quartz ("*/10 * * * * *" = every 10 seconds).
Is this a crontab.guru alternative?+
crontab.guru is a beloved, excellent explainer — this tool covers the same "paste a cron, get plain English" use case, then goes further: a visual click-to-build generator, the next 10 run times (guru shows one), a timezone preview with DST handling, Quartz 6-field mode, and smart warnings for traps like the day-of-month/day-of-week OR logic and impossible dates. Everything runs 100% in your browser.
More free tools
Want guides and tips? Visit the ToolsOfWeb blog or go back to the homepage.
