Cron Expression Generator & Explainer

Build a 5-field crontab expression with Every, Every N, Specific and Range pickers, or paste one to explain it. A valid expression shows a plain-English sentence and the next 5 run times in your local timezone; an invalid one shows cron-parser's exact error. Nothing is scheduled and nothing is sent anywhere.

Expression

5-field crontab: minute, hour, day of month, month, day of week.

Fields
Minute*/15
= 0, 15, 30, 45
Hour9-17
(9 of 24 values)
Day of month*

Fires every day of the month.

Month*

Fires every month.

Day of week1-5
(5 of 7 values)
In plain English

Every 15 minutes, between 09:00 AM and 05:59 PM, Monday through Friday

Next 5 runs (local time)

Calculating...

ValidParsed on this device

Runs in this tab · nothing is uploaded · Verify in 10 seconds →

What the Cron explainer does

Cron expressions schedule recurring jobs with five fields: minute, hour, day of month, month, day of week. This tool works in both directions. Build assembles a crontab expression from pickers: every value, every N, specific values or a range, per field. Explain & test takes an expression you paste, checks it with the cron-parser library, translates it into an English sentence and lists the next five times it would fire.

How the Cron explainer works

Both modes edit one expression, so switching never loses your text. In Build, each field has Every, Every N, Specific and Range pickers; the expression, the sentence and the next runs update as you click, and a field the builder cannot represent (like 1,5-10/2) is shown as Custom and left untouched. In Explain & test, paste any 5-field expression, or 6 with a leading seconds field: an invalid one shows the parser's exact error, a valid one shows Valid with its next run time. The sentence comes from cronstrue and the run times from cron-parser, which walks the calendar from now in your browser's timezone. Nothing is scheduled and nothing is sent anywhere.

Limits

5-field crontab, or 6 with a leading seconds field. No @reboot and no Quartz year field.

~/faq

Frequently asked questions

How do I write a cron expression for every 5 minutes?

*/5 * * * *. The minute field steps through 0, 5, 10 … 55 while the other four fields stay *, so the job fires 12 times an hour and 288 times a day (1440 minutes ÷ 5). Press Every 5 min in the quick schedules row, or set the minute field to Every N = 5 in Build.

How do I validate a cron expression?

Paste it under Explain & test. The expression is parsed with cron-parser: if it is invalid, the status bar shows the parser's exact message, for example “Constraint error, got value 60 expected range 0-59”; if it is valid, you see Valid plus the next run time. An expression with the wrong number of fields is rejected too, since crontab needs exactly 5.

Is this a crontab generator?

Yes. Build produces the 5-field crontab format (minute, hour, day of month, month, day of week) that cron, Kubernetes CronJobs, GitHub Actions schedules and most other schedulers accept. Copy the expression and paste it in front of the command on your crontab line.

Which cron syntax is supported?

Standard 5-field crontab syntax, plus 6 fields when the first is seconds. Ranges (1-5), steps (*/15), lists (1,15) and names (MON, JAN) all work. Non-standard extensions like @reboot are not supported.

Does it support Quartz or AWS 6- and 7-field expressions?

Only partly. Explain & test reads 5 fields, or 6 when the first field is seconds, which covers Quartz-style seconds; L (last day) and # (nth weekday) work, ? is read as *, W is not supported. There is no year field: a 7-field Quartz expression is rejected as too many fields, and AWS EventBridge's 6-field format, which ends in a year, would be misread as seconds-first, so do not paste it. The builder is 5-field only.

What timezone are the next runs shown in?

Your browser's local timezone. A real cron daemon fires in the server's timezone, so a job written for a UTC server can show different wall-clock times here.

What does it mean when both day-of-month and day-of-week are set?

In classic cron the job runs when either field matches, 0 0 1 * 1 fires on the 1st of the month and on every Monday. Some schedulers (like Quartz) instead require one of the two to be *, so double-check your platform.

Is 0 0 * * 0 Sunday or Saturday?

Sunday. Day-of-week runs 0–6 starting at Sunday, and most implementations also accept 7 for Sunday.