Developer Tools

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.

100% Offline Plain English Next 10 Runs Live Validation

Builder

Cron expression 5 fields
Common presets

Schedule

Waiting for a valid expression

Fill in the fields to see the schedule

What 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

PositionFieldRange
1Minute0–59
2Hour0–23 (24-hour)
3Day of month1–31
4Month1–12 or JAN–DEC
5Day of week0–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

CharMeaningExample
*Every value* in minute = every minute
,List of values1,15,30 = minutes 1, 15 and 30
-Inclusive range1-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

ExpressionMeans
* * * * *Every minute
*/15 * * * *Every 15 minutes
0 * * * *Every hour, on the hour
0 0 * * *Every day at midnight
0 9 * * 1-5Weekdays 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?
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: minute, hour, day of month, month and day of week. Standard Unix cron uses 5 fields. Quartz, Spring and some Linux variants use a 6-field form that adds a leading seconds field. The expression drives a job scheduler that runs a task whenever the current time matches the pattern.
Is this cron generator free?
Yes. It is 100% free, requires no sign-up, and runs entirely in your browser. No watermarks, no expiry, no premium tier.
What is the difference between 5-field and 6-field cron?
Standard Unix crontab uses five fields: minute, hour, day of month, month, day of week. Quartz, Spring and a few Linux distributions use a six-field version that prepends seconds, so the schedule can trigger sub-minute. The field order is otherwise identical. If you paste a 6-field expression where 5 are expected, most Unix systems will reject it — pick the mode that matches your scheduler.
What characters can I use in a cron field?
Asterisk means every value. A single number matches that value. A comma-separated list matches any of those values. A hyphen-separated range matches every value in between. A forward slash adds a step, so */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?
In Unix cron, 0 means Sunday and 6 means Saturday. Some systems accept 7 as an alternative for Sunday. You can use names like 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?
No. The entire cron parser and next-fire-time calculator run in your browser in pure JavaScript. Nothing is uploaded, stored or logged.
Why does my cron expression not fire at the time I expect?
The most common causes are: forgetting that months are 1-indexed while days-of-week start at 0; using OR logic across day-of-month and day-of-week without realizing it; assuming cron handles time zones (it uses the server's local time unless the crontab sets 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?
It lists the next ten times the schedule would trigger, computed from your current local time. The times are calculated minute-by-minute (or second-by-second in 6-field mode) up to a cap of about one year ahead. If the schedule is extremely sparse — for example yearly on the first of January — the list may show fewer than ten entries because fewer fall inside the search window.
How do I run something every 15 minutes?
Use */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?
Use 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?
Standard Unix cron has no built-in way to say "last day of month" — you have to use a range that covers all possible months, or a workaround script. Quartz and Spring support 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?
Standard Unix cron uses the server's local time zone unless a 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.

Related Developer Tools

Done!