Free Cron Expression Generator
Build cron schedules visually — 5-field Unix or 6-field Quartz. See a plain-English description and the next 10 fire times computed against your real current time. All in your browser.
Builder
Schedule
Waiting for a valid expression
Fill in the fields to see the scheduleWhat Is a Cron Expression?
A cron expression is a compact string of five (or six) fields that describes a recurring schedule. Each field specifies a value or pattern for a time unit, and a scheduler fires a job whenever the current time matches the pattern. The name comes from Chronos, the Greek personification of time, and the syntax dates back to Version 7 Unix in the late 1970s.
The five fields
| Position | Field | Range |
|---|---|---|
| 1 | Minute | 0–59 |
| 2 | Hour | 0–23 (24-hour) |
| 3 | Day of month | 1–31 |
| 4 | Month | 1–12 or JAN–DEC |
| 5 | Day of week | 0–6 (0=Sun) or SUN–SAT |
Quartz, Spring and a handful of Linux distributions add a leading seconds field. The field order is otherwise identical, so 0 0 9 * * 1-5 in 6-field mode means the same as 0 9 * * 1-5 in 5-field mode — just with an explicit "fire at second 0".
The four special characters
| Char | Meaning | Example |
|---|---|---|
* | Every value | * in minute = every minute |
, | List of values | 1,15,30 = minutes 1, 15 and 30 |
- | Inclusive range | 1-5 = 1, 2, 3, 4, 5 |
/ | Step | */15 = every 15th value |
They combine naturally: 0-30/5 means every 5th value from 0 to 30, and 1,15,30,45 means those four minutes exactly. Month and day-of-week fields also accept three-letter names — JAN, MON, FRI — which are sometimes easier to read than the numeric equivalents.
The day-of-month vs day-of-week trap
When both the day-of-month and day-of-week fields are restricted (neither is *), classic Unix cron uses OR logic. The expression 0 0 1 * 1 fires on the 1st of the month or on any Monday — not only on Mondays that happen to fall on the 1st. This is the single most common cron surprise.
Quartz handles it differently: you must set one of the two fields to ? to indicate "no constraint", and then the other field alone determines the schedule. This tool focuses on portable Unix syntax; if you need Quartz extensions like L, W or ?, use a scheduler that supports them.
Common patterns at a glance
| Expression | Means |
|---|---|
* * * * * | Every minute |
*/15 * * * * | Every 15 minutes |
0 * * * * | Every hour, on the hour |
0 0 * * * | Every day at midnight |
0 9 * * 1-5 | Weekdays at 9 AM |
0 0 1 * * | First of every month at midnight |
0 0 1 1 * | Once a year, Jan 1 at midnight |
0 */6 * * * | Every 6 hours |
Common use cases
Database Backups
Nightly dumps at 2 AM when traffic is lowest.
Email Digests
Weekly summaries every Monday morning.
Cache Warming
Refresh caches every 15 or 30 minutes.
Report Generation
Monthly analytics run on the 1st of each month.
Log Rotation
Trim old logs every night at 3 AM.
API Polling
Fetch third-party data every hour or every 5 minutes.
Security Scans
Weekly vulnerability scans over the weekend.
Reminders
Daily standup notifications at 9:00 AM on weekdays.
Privacy and security
This cron generator runs entirely in your browser. Parsing, description and next-fire-time calculation all happen locally in pure JavaScript. Nothing is uploaded, stored or logged. Your expressions never leave your device.
Frequently Asked Questions
What is a cron expression?
Is this cron generator free?
What is the difference between 5-field and 6-field cron?
What characters can I use in a cron field?
*/5 means every 5th value starting from the minimum, and 0-30/5 means every 5th value from 0 to 30. Month and day-of-week fields also accept three-letter names like JAN or MON.How does the day-of-week field work?
SUN, MON, TUE. When both the day-of-month and day-of-week fields are restricted (not asterisks), classic Unix cron uses OR logic — the job runs when either field matches. Quartz uses a different rule and requires one of the two to be a question mark.Is my data sent to a server?
Why does my cron expression not fire at the time I expect?
CRON_TZ or TZ); and mistaking 12-hour for 24-hour notation. This tool shows the next fire times so you can verify the schedule immediately.What does the next fire times list show?
How do I run something every 15 minutes?
*/15 * * * * in 5-field mode. This means every 15th minute of every hour of every day. The minute values that match are 0, 15, 30 and 45. If your scheduler is Quartz or Spring, use 0 */15 * * * * — the leading zero is the seconds field.How do I run something on weekdays only?
1-5 in the day-of-week field. To run at 9 AM every weekday, the full expression is 0 9 * * 1-5. In Quartz or Spring it becomes 0 0 9 * * 1-5 — the extra leading zero is the seconds field.How do I run something on the last day of the month?
L in the day-of-month field for the last day. This tool focuses on the portable Unix syntax; if you need L, ? or W you should use a scheduler that supports Quartz-style extensions.What time zone does cron use?
CRON_TZ or TZ variable is set at the top of the crontab. Quartz lets you set a time zone explicitly on the trigger. This tool computes fire times in your browser's local time zone, which is shown at the top of the results panel.