From English to cron
Writing cron by hand is error-prone, especially when you only remember the field order roughly. This tool goes the other way from a reader: you describe the schedule in plain English and it builds a valid 5 field cron expression, then explains in one line how it interpreted your words so there are no silent surprises.
How it works
The converter scans your phrase for a few well-defined patterns and fills the
five cron fields accordingly. Interval phrases such as “every 15 minutes” or
“every 2 hours” map directly to a step expression like */15 * * * *. A clock
time, whether 9am, 18:30, noon, or midnight, sets the minute and hour
fields. Keywords drive the day fields: “weekday” becomes 1-5, “weekend”
becomes 0,6, and named days such as “Monday” become their numbers.
Month names and an ordinal day-of-month such as “on the 1st” are recognised too. Frequency words fill in sensible defaults: “weekly” without a named day becomes Sunday, “monthly” becomes the 1st, and “yearly” becomes January 1.
Every weekday at 9am -> 0 9 * * 1-5
Every 15 minutes -> */15 * * * *
On the 1st at noon -> 0 12 1 * *
Worked examples
Here are common scheduling phrases and the expressions they produce:
| Phrase | Cron expression | Meaning |
|---|---|---|
every day at midnight | 0 0 * * * | Runs at 00:00 every day |
every Monday at 6:30 | 30 6 * * 1 | Mondays 06:30 |
every 15 minutes | */15 * * * * | 00, 15, 30, 45 past every hour |
on the 1st at noon | 0 12 1 * * | 12:00 on the 1st of each month |
every weekday at 9am | 0 9 * * 1-5 | Mon–Fri at 09:00 |
every hour | 0 * * * * | Top of each hour |
every Sunday at 2am | 0 2 * * 0 | Sunday 02:00 |
Understanding the five cron fields
The classic Unix cron format is: minute hour day-of-month month day-of-week. A * means “every value”, a step like */15 means “every 15 units”, and a list like 1-5 covers a range. The most common confusion is that setting both day-of-month and day-of-week causes the job to fire when either matches — not both. The converter flags this with a note so you are not caught out.
Common mistakes and how to avoid them
Forgetting the time: If you write only “daily” or “weekly” without a time, the tool defaults to midnight and says so in the note. Update the expression if you need a specific hour.
Wrong day numbering: Sunday is 0 (or 7 in some implementations), Monday is 1, through Saturday as 6. This tool uses 0 for Sunday throughout.
Mixing day-of-month and day-of-week: Phrases like “every Wednesday on the 15th” set both the 4th field and the 5th field. Classical cron treats this as OR, so the job fires on every Wednesday and also on every 15th. If you truly want the 15th only when it falls on a Wednesday, you need to handle that in the script, not the cron expression.
Tips and notes
Be explicit when it matters. If you only say “weekly” the result targets Sunday; add the day name to change it. After generating an expression, paste it into the companion cron reader tool to confirm it describes exactly the schedule you intended before you ship it.