Type or paste a standard five-field cron expression to see it explained in plain English as you type, or pick a common schedule from the dropdown. Everything runs locally in your browser, so nothing is sent to a server.
—
Cron field order
A standard five-field cron expression always reads left to right in this order:
| Field | Allowed values | Special characters |
|---|---|---|
| Minute | 0-59 | * , - / |
| Hour | 0-23 (0 is midnight) | * , - / |
| Day of month | 1-31 | * , - / |
| Month | 1-12 or JAN-DEC | * , - / |
| Day of week | 0-7 or SUN-SAT (0 and 7 are Sunday) | * , - / |
What the symbols mean
*matches every value in the field, for example every minute or every month.5matches one value only.1-5matches a range, inclusive of both ends.1,15matches a list of values.*/15matches every 15th value starting from the minimum;9-17/2every second value inside that range.
Examples and what they mean
| Expression | Plain English |
|---|---|
* * * * * | Every minute. |
*/15 * * * * | Every 15 minutes, all day. |
0 9 * * 1-5 | At 9:00 AM, Monday through Friday. |
30 2 * * * | At 2:30 AM every day. |
0 0 1 * * | At midnight on the 1st of every month. |
0 0 1 1 * | At midnight on January 1. |
*/15 9-17 * * 1-5 | Every 15 minutes from 9:00 AM to 5:45 PM, weekdays only. |
Cron gotchas worth knowing
When both day fields are set, cron uses OR
This surprises almost everyone. If you set both day of month and day of week, standard cron runs the job when either field matches, not only when both match. For example, 0 9 1 * 1 runs at 9:00 AM on the 1st of the month and on every Monday. Leave one of the two as * unless you specifically want that behaviour.
0 and 7 both mean Sunday
Day of week accepts 0 through 7, where both 0 and 7 are Sunday. Monday is 1, so weekdays are 1-5 and weekends are 6,0. Some systems only accept 0, so 0 is the safer choice.
Cron uses the server time zone
A cron expression has no time zone of its own. 0 9 * * * means 9:00 AM in whatever time zone the cron daemon uses, usually the server local time. If the server runs on UTC, 9:00 AM UTC is not 9:00 AM for your users. Set the time zone explicitly on systems that support it, such as systemd timers or the CRON_TZ variable, or convert the time yourself.
There is no seconds field
Standard five-field cron cannot run more often than once per minute. Expressions like */10 * * * * * with six fields are not valid in a normal crontab; the sixth field may be rejected or interpreted as the year by other schedulers. For sub-minute jobs use a loop, a systemd timer, or a scheduler that supports seconds.
Steps start at the minimum, not at your range
In */15 the step starts at the field minimum, so minute */15 fires at 0, 15, 30 and 45. In 10-40/15 it starts at 10, so it fires at 10, 25 and 40. The value after the slash is a step, not an interval measured from the last run.
Missed runs are not queued
If the machine is off or the cron daemon is stopped at the scheduled time, the job does not run later. Tools built on cron may offer catch-up behaviour, but plain cron does not.
Frequently asked questions
How do I run a job every 5 minutes?
Use */5 * * * *. It runs at minutes 0, 5, 10, 15 and so on, every hour of every day.
How do I run something only on weekdays?
Set day of week to 1-5. For 9:00 AM Monday through Friday the full expression is 0 9 * * 1-5. Remember that the server time zone decides what 9:00 AM means.
How do I run a job once a month?
Pick the day and set the rest: 0 0 1 * * runs at midnight on the 1st of every month. 0 0 15 * * runs on the 15th. Avoid picking a day number that some months do not have, such as the 31st, or the job will be skipped in shorter months.
Can I use names like JAN or MON?
Yes in the month and day-of-week fields, for example 0 0 * JAN MON or 0 0 * JAN-JUN *. Names are case-insensitive on common implementations. Numeric values are the most portable, so prefer them if a scheduler rejects names.
Is this the same as Quartz, Kubernetes or Spring cron?
Not exactly. This page parses the standard five-field Unix cron format. Quartz and Spring accept six fields including seconds; Kubernetes CronJob also uses five fields but adds its own time zone and deadline rules. Check the syntax of the scheduler you are actually deploying to.