How to translate a cron expression
- Paste the expression into the box above. A bare schedule such as
*/10 * * * *works, and so does a full crontab line; the command is shown separately. - Choose the format if it isn't Unix cron. Quartz and Spring start with a seconds field and AWS EventBridge adds a year, so the same text can mean different things.
- Read the translation in English and Arabic, and the field-by-field breakdown under the input.
- Check the next five run times. They are the quickest way to confirm that the schedule does what you meant.
Cron translation examples
Click an expression to load it into the translator.
| Cron expression | Schedule |
|---|---|
| Every 5 minutes. | |
| At 0 minutes past the hour, every 2 hours. | |
| At 9:00 AM, Monday through Friday. | |
| At 10:00 PM, Monday through Friday. | |
| At 2:15 PM, on day 1 of the month. | |
| At 12:00 AM, on day 1 of the month, only in January, April, July, and October. | |
| At 4:05 AM, only on Sunday. | |
| At 23 minutes past the hour, every 2 hours, between 12:00 AM and 8:59 PM. | |
| At 12:00 AM and 12:00 PM, on day 1 of the month, only in January, March, May, July, September, and November. | |
| At 12:00 AM, only on Sunday. |
How to read a cron expression by hand
A Unix cron expression has five fields, always in the same order: minute, hour, day of month, month and day of week. Take 30 4 1,15 * 5:
| Field | Value | Meaning |
|---|---|---|
| Minute | 30 | at minute 30 |
| Hour | 4 | at 4 AM |
| Day of month | 1,15 | on the 1st and the 15th |
| Month | * | in every month |
| Day of week | 5 | on Friday |
Put together, the job runs at 4:30 AM on the 1st and 15th of every month and on every Friday. When both day fields are restricted, Unix cron runs the job if either one matches. The translator flags this, because it is the most common misreading of cron.
Three habits make cron easier to read:
- Read the time first (minute and hour), then the days, then the months.
*/nmeans “every n”,a-bis an inclusive range anda,bis a list.- In the day-of-week field,
0and7are both Sunday, and1-5is Monday to Friday.
The cron syntax cheat sheet lists every operator and special string.
Cron checker: errors and warnings
The translator also works as a cron validator. It rejects expressions that cron would refuse, and warns about ones that are valid but probably wrong:
- Out-of-range values, such as
60in the minute field or24in the hour field. The error names the field. - Missing or extra fields, for example four fields instead of five.
- Quartz-only characters (
L,W,#) in a Unix crontab. - Schedules that never run, such as
0 0 30 2 *: there is no February 30. - Days 29–31, which shorter months skip.
- Both day fields set, where Unix cron uses OR instead of AND.
- Six fields in Unix mode: the first is read as seconds, which plain crontab doesn't support.
Cron calculator: next run times
Below the translation, the tool calculates the next five times the schedule fires, in your browser's time zone and across daylight-saving changes. That makes it a quick cron calculator: change a field and watch the dates move.
The server decides the time zone, though. Linux cron uses the system time zone, often UTC on cloud servers (check it with timedatectl), and AWS EventBridge rules always run in UTC, so the tool shows UTC for that format.
Convert cron expressions between formats
Switching the format in the translator rewrites the expression for the new scheduler whenever the meaning can be kept exactly:
| Unix cron | Quartz | Spring | AWS EventBridge |
|---|---|---|---|
0 9 * * 1-5 | 0 0 9 ? * MON-FRI | 0 0 9 * * MON-FRI | 0 9 ? * MON-FRI * |
*/5 * * * * | 0 */5 * * * ? | 0 */5 * * * * | */5 * * * ? * |
0 0 1 * * | 0 0 0 1 * ? | 0 0 0 1 * * | 0 0 1 * ? * |
0 0 * * 0 | 0 0 0 ? * SUN | 0 0 0 * * SUN | 0 0 ? * SUN * |
Some schedules can't be converted. 30 4 1,15 * 5 relies on Unix cron's OR rule, which Quartz, Spring and AWS don't have, so the tool tells you instead of producing a wrong expression. Each format has its own generator:
0 0 8 ? * MON-FRI
Spring Cron Expression Generator
0 0 8 * * MON-FRI
AWS Cron Expression Generator
0 8 ? * MON-FRI *
Jenkins Cron Expression Generator
H 2 * * 1-5
Salesforce Cron Expression Generator
0 0 8 ? * MON-FRI
Hangfire Cron Expression Generator
0 8 * * 1-5
Airflow Cron Expression Generator
0 6 * * 1-5
node-cron Expression Generator
0 30 8 * * 1-5
Frequently asked questions
What does * * * * * mean in cron?
Every minute. Each asterisk means “every value” for its field, so the job runs every minute of every hour of every day.
What does */5 mean in a cron expression?
It is a step: every fifth value of the field. In the minute field, */5 runs at minutes 0, 5, 10 … 55, which is every 5 minutes.
What does 0 0 * * * mean?
Every day at midnight (00:00 server time). It is the same as the @daily and @midnight shortcuts.
How do I check if a cron expression is valid?
Paste it into the translator above. An invalid expression gets an error that names the field and the problem; a valid one gets a plain-English translation and its next run times. crontab -e also refuses to install a file with a syntax error.
Is Sunday 0 or 7 in cron?
Both. Unix cron accepts 0 and 7 for Sunday, so 0 9 * * 0 and 0 9 * * 7 are the same. Quartz and Salesforce are different: there 1 is Sunday and 7 is Saturday.
Can it translate Quartz, Spring and AWS cron expressions?
Yes. Pick the format above the input: Unix, Quartz, Spring, AWS EventBridge, Jenkins, Salesforce, Hangfire, Airflow or node-cron. Each has its own fields and special characters, and the translator applies the right rules.
Is my cron expression sent to a server?
No. The translator runs entirely in your browser, and nothing you type leaves your device.