Cron Expression Generator
Type a 5-field cron expression to see it in plain English and preview the next run times — or start from a preset below.
Reading a cron line by hand
A cron expression is five (or six) fields: minute, hour, day of month, month, day of week (optional seconds). You can draft one from a schedule description without the UI.
- Write the schedule in plain words (for example, every weekday at 09:00).
- Map each part to a field: minute, hour, day-of-month, month, weekday.
- Use
*for “any”, lists like1,15, ranges like1-5, and steps like*/15. - Confirm weekday numbering for your target system (0/7 Sunday vs Monday-first variants).
- Spot-check the next few run times against a known reference clock.
Example: “Every day at 06:30” is often 30 6 * * * (minute 30, hour 6, any day/month/weekday).
What a 5-field cron expression is
A Unix crontab line starts with five fields, in this order: minute (0-59), hour (0-23), day of month (1-31), month (1-12), day of week (0-7). Spaces separate the fields. This page reads that expression, turns it into a sentence, lists the five fields back to you, and walks your device clock minute by minute to find the next five times the expression would fire.
Each field can be a single number, a comma-separated list, a range such as 1-5, a star meaning every legal value, or a star (or range) with a step such as */15. Month names jan through dec and weekday names sun through sat are accepted. Both 0 and 7 mean Sunday, which matches Vixie cron.
Worked example: an office-hours job that runs later than expected
A teammate's crontab has */10 8-18 * * mon-fri, and the comment says "every 10 minutes during office hours, 8 to 6". Paste it into the field and press Explain.
The sentence reads "At 66 times a day on Monday, Tuesday, Wednesday, Thursday, Friday". Sixty-six is the giveaway: 6 runs per hour across 11 hours. The hour range 8-18 is inclusive, so hour 18 is part of the schedule, and every minute step inside it fires too. The last run of the day is 18:50, not 18:00.
If the job should stop at 18:00 sharp, there are two honest fixes. */10 8-17 * * mon-fri runs 60 times a day, from 08:00 to 17:50. Adding a separate line 0 18 * * mon-fri gives the single 18:00 run if it is really needed. Cron has no way to say "from 08:00 until 18:00" in one field, because each field is matched on its own.
The month and weekday names work here because this dialect accepts three-letter names in any case. MON-FRI and 1-5 give the same result.
How to use the presets and Explain
- Type a five-field expression in the left pane, or click a preset. The presets write a known-good expression into the pane:
Every 15 minis*/15 * * * *,Hourlyis0 * * * *,Daily 9:00is0 9 * * *,Weekdays 8:00is0 8 * * 1-5, and1st of monthis0 0 1 * *. - The page explains as you type (after a short pause) and also when you press Enter or click
Explain. You do not have to click Explain for a preset; the click already runs it. - Read the right pane. It has three blocks: a plain-English sentence, a field-by-field echo, and
Next 5 runsstamped with your offset, such asUTC-03:00. - The readout repeats the soonest run under Next run, how many of the five were found, and Your zone. Status reads
Valid cron expressionwhen the five fields parse. Copy resultcopies the whole explanation.Clearempties the panes and returns status toWaiting for input.
The next-run walk starts at the beginning of the next local minute and steps one minute at a time, up to a year of minutes. Times use your device clock, not UTC, unless your zone happens to be UTC. If nothing matches in that year, the list says so and Found is 0. The expression can still be called valid. February 31 is the usual way to hit that case.
More expressions, decoded
Weekdays at 09:00. Expression: 0 9 * * 1-5. Plain English: At 09:00 on Monday, Tuesday, Wednesday, Thursday, Friday. Field breakdown: minute 0, hour 9, day of month *, month *, day of week 1-5. The next five lines are the next five weekday mornings in your zone.
Every quarter hour. Expression: */15 * * * * (the Every 15 min preset). Plain English: At minute 0, 15, 30, 45 of every hour every day. The step is applied across 0-59, so the minutes are exactly those four values, not 1, 16, 31, 46.
The either-or date rule. Expression: 0 0 1,15 * 5. This is midnight on the 1st, the 15th, or Friday. The sentence ends with on day-of-month 1, 15 and on Friday (whichever comes first). It is not “Friday the 1st and Friday the 15th only.” If you need both constraints at once, this 5-field dialect cannot say that. Split the job or move the extra filter into the script.
Mistakes that make jobs fire at the wrong time
- Writing six fields (seconds first) or seven (a year at the end). The page rejects anything that is not exactly five tokens.
- Using Quartz tokens such as
L,W, or#, or macros such as@daily. Those are different dialects. - Treating
0 9 * * 1-5as “9 AM UTC.” The preview is local. A server crontab is usually the server zone. - Expecting day-of-month 31 in February to be flagged. The fields are legal. The year-long search simply finds no date.
- Numbering Monday as 0. Here 0 and 7 are Sunday, 1 is Monday, 6 is Saturday.
When this page helps
Reach for it when you inherited a crontab and cannot picture the schedule, or when you are about to add a job and want to see the next few local run times before you save. It is also useful for checking the odd rule that trips people up: if both day-of-month and day-of-week are restricted, the job runs when either field matches, not when both do.
- Reading someone else's crontab after an on-call handoff
- Confirming a weekday-only job will not fire on Saturday
- Checking that a first-of-month job really means day 1, not Monday
What the generator leaves out
It does not install a crontab, talk to systemd timers, or evaluate AWS cron() / rate() expressions (those are UTC and the cron form has an extra year field). It does not support seconds, last-day-of-month, or nth-weekday. It does not convert a sentence you type in English into an expression; the presets are the only generator, and the rest is an explainer.
Where the expression goes
Parsing and the minute-by-minute preview run in this tab against your clock. The expression is not sent to a server. Closing the tab clears it.
Cron questions
Five fields or six?
Many Unix crontabs use five fields; some platforms add seconds. Count fields before pasting into production.
Why did my job not fire?
Check time zone (often UTC), impossible dates, and whether day-of-month and day-of-week interact on your runner.
Does this schedule run on Fieldkit servers?
No. The page only helps you build or decode an expression. Your own cron daemon or cloud scheduler runs the job.