Cron Expression Converter
This converter turns cron into plain English and plain English into cron, in the same box. Paste 30 8 * * 1-5 to read it as “At 8:30am on Monday, Tuesday, Wednesday, Thursday and Friday”, or type “every monday at 8am” to get 0 8 * * 1.
At 8:30am on Monday, Tuesday, Wednesday, Thursday and Friday.
30 8 * * 1-5Standard 5-field crontab syntax. Day of month and day of week are OR'd when both are set.
One box, two directions
You don't pick a direction — the converter works it out from what you type. Input made of five fields of numbers and cron symbols is read as an expression and explained; anything else is treated as English and translated. The badge above the input shows which way it's converting: CRON → ENGLISH or ENGLISH → CRON.
Either way you get the same result: the expression, a plain-English description, the value of each field and the next five run times in your timezone. That makes a round trip easy — translate a phrase into cron, then read the description back to make sure it says what you meant.
Cron to English: reading an expression
The description is assembled field by field. Take 30 8 * * 1-5: minute 30 and hour 8 make the time 8:30am; day of month and month are *, so they don't restrict anything; and day of week 1-5 limits it to Monday through Friday. Steps become intervals (*/15 is “every 15 minutes”), lists become “and” (8,17 is 8am and 5pm), and names such as MON or JAN are accepted as input.
English to cron: what gets translated
The English side recognises scheduling vocabulary — intervals, day names, times, ordinal dates like “15th”, month names, and words such as hourly, daily, midnight and noon. It won't understand every sentence, and it's deliberately strict: if a phrase can't be expressed exactly in standard cron, such as “every 30 seconds” or “the last day of the month”, it explains why rather than guessing. The cron expression generator lists the phrases it understands.
Converting between cron dialects
Not every scheduler uses the same five fields, and copying an expression from one to another is a common source of bugs. The main differences:
| SCHEDULER | FIELDS | NOTES |
|---|---|---|
| Standard cron — crontab, Kubernetes, GitHub Actions | minute hour day-of-month month day-of-week | Day of week 0–6 with Sunday = 0; most crons also accept 7 for Sunday. |
| Quartz | second minute hour day-of-month month day-of-week [year] | Seconds come first; one day field must be ?; day of week is 1–7 with Sunday = 1. |
| AWS EventBridge | minute hour day-of-month month day-of-week year | Written as cron(...); one day field must be ?; day of week is 1–7 with Sunday = 1. |
To bring a Quartz expression back to standard cron, drop the seconds field (and the year, if there is one), replace ? with *, and subtract one from any day-of-week numbers — Quartz 2 is Monday, which is 1 in standard cron. Going the other way, add a leading 0 for the seconds and put ? in whichever day field you aren't using.
Day names avoid the numbering problem entirely: MON means Monday in all three formats. For everything else, the cron syntax cheatsheet lists what each field accepts.
Frequently asked questions
Can I convert a Quartz cron expression here?
Not directly — the converter reads standard five-field cron, so a six- or seven-field Quartz expression is reported as having too many fields. Drop the seconds (and year) field, replace ? with *, shift day-of-week numbers down by one, then paste it in.
Does converting a cron expression change its timezone?
No. A cron expression has no timezone of its own; it runs in whatever timezone the scheduler uses. The run times shown here are in your browser's timezone, as a preview.
Why does the converter say my expression isn't valid?
Usually a value is out of range (minute 60, hour 24), a range runs backwards, or there aren't exactly five fields. The message names the value and the problem so you can fix that field.
Does the converter support @daily and other shortcuts?
Yes — @yearly, @annually, @monthly, @weekly, @daily, @midnight and @hourly are expanded to their five-field equivalents and explained. @reboot isn't a time schedule, so there's nothing to convert.