Cron tools › Reference
Cron examples
Common cron schedules, ready to copy, each written for Linux crontab, Quartz, AWS EventBridge and Spring. Filter the list, then open any row in the parser to see its next runs in your time zone.
Every few minutes
| Schedule | Unix cron | Quartz | AWS EventBridge | Spring | Parser |
|---|---|---|---|---|---|
| Every minuteEvery minute. | * * * * * |
0 * * * * ? |
cron(* * * * ? *) |
0 * * * * * |
Open |
| Every 2 minutesEvery 2 minutes. | */2 * * * * |
0 0/2 * * * ? |
cron(0/2 * * * ? *) |
0 */2 * * * * |
Open |
| Every 5 minutesEvery 5 minutes. | */5 * * * * |
0 0/5 * * * ? |
cron(0/5 * * * ? *) |
0 */5 * * * * |
Open |
| Every 10 minutesEvery 10 minutes. | */10 * * * * |
0 0/10 * * * ? |
cron(0/10 * * * ? *) |
0 */10 * * * * |
Open |
| Every 15 minutesEvery 15 minutes. | */15 * * * * |
0 0/15 * * * ? |
cron(0/15 * * * ? *) |
0 */15 * * * * |
Open |
| Every 20 minutesEvery 20 minutes. | */20 * * * * |
0 0/20 * * * ? |
cron(0/20 * * * ? *) |
0 */20 * * * * |
Open |
| Every 30 minutesEvery 30 minutes. | */30 * * * * |
0 0/30 * * * ? |
cron(0/30 * * * ? *) |
0 */30 * * * * |
Open |
| Every 5 minutes, offset to :02At minutes 2, 7, 12, 17, 22, 27, 32, 37, 42, 47, 52 and 57 past every hour. | 2-59/5 * * * * |
0 2/5 * * * ? |
cron(2/5 * * * ? *) |
0 2/5 * * * * |
Open |
| At quarter past and quarter toAt minutes 15 and 45 past every hour. | 15,45 * * * * |
0 15,45 * * * ? |
cron(15,45 * * * ? *) |
0 15,45 * * * * |
Open |
Hourly and every few hours
| Schedule | Unix cron | Quartz | AWS EventBridge | Spring | Parser |
|---|---|---|---|---|---|
| Every hour, on the hourEvery hour, on the hour. | 0 * * * * |
0 0 * * * ? |
cron(0 * * * ? *) |
0 0 * * * * |
Open |
| Every hour at :30Every hour at :30. | 30 * * * * |
0 30 * * * ? |
cron(30 * * * ? *) |
0 30 * * * * |
Open |
| Every 2 hoursEvery 2 hours, on the hour (00:00, 02:00, 04:00, 06:00, …). | 0 */2 * * * |
0 0 0/2 * * ? |
cron(0 0/2 * * ? *) |
0 0 */2 * * * |
Open |
| Every 3 hoursEvery 3 hours, on the hour (00:00, 03:00, 06:00, 09:00, …). | 0 */3 * * * |
0 0 0/3 * * ? |
cron(0 0/3 * * ? *) |
0 0 */3 * * * |
Open |
| Every 4 hoursAt 00:00, 04:00, 08:00, 12:00, 16:00 and 20:00. | 0 */4 * * * |
0 0 0/4 * * ? |
cron(0 0/4 * * ? *) |
0 0 */4 * * * |
Open |
| Every 6 hoursAt 00:00, 06:00, 12:00 and 18:00. | 0 */6 * * * |
0 0 0/6 * * ? |
cron(0 0/6 * * ? *) |
0 0 */6 * * * |
Open |
| Every 8 hoursAt 00:00, 08:00 and 16:00. | 0 */8 * * * |
0 0 0/8 * * ? |
cron(0 0/8 * * ? *) |
0 0 */8 * * * |
Open |
| Every 12 hoursAt 00:00 and 12:00. | 0 */12 * * * |
0 0 0/12 * * ? |
cron(0 0/12 * * ? *) |
0 0 */12 * * * |
Open |
| Every odd hourAt minute 0 past hours 01:00, 03:00, 05:00, 07:00, 09:00, 11:00, 13:00, 15:00, 17:00, 19:00, 21:00 and 23:00. | 0 1-23/2 * * * |
0 0 1/2 * * ? |
cron(0 1/2 * * ? *) |
0 0 1/2 * * * |
Open |
Once or a few times a day
| Schedule | Unix cron | Quartz | AWS EventBridge | Spring | Parser |
|---|---|---|---|---|---|
| Every day at midnightAt 00:00. | 0 0 * * * |
0 0 0 * * ? |
cron(0 0 * * ? *) |
0 0 0 * * * |
Open |
| Every day at 01:00At 01:00. | 0 1 * * * |
0 0 1 * * ? |
cron(0 1 * * ? *) |
0 0 1 * * * |
Open |
| Every day at 02:30At 02:30. | 30 2 * * * |
0 30 2 * * ? |
cron(30 2 * * ? *) |
0 30 2 * * * |
Open |
| Every day at 06:00At 06:00. | 0 6 * * * |
0 0 6 * * ? |
cron(0 6 * * ? *) |
0 0 6 * * * |
Open |
| Every day at 09:00At 09:00. | 0 9 * * * |
0 0 9 * * ? |
cron(0 9 * * ? *) |
0 0 9 * * * |
Open |
| Every day at noonAt 12:00. | 0 12 * * * |
0 0 12 * * ? |
cron(0 12 * * ? *) |
0 0 12 * * * |
Open |
| Every day at 18:00At 18:00. | 0 18 * * * |
0 0 18 * * ? |
cron(0 18 * * ? *) |
0 0 18 * * * |
Open |
| Every day at 23:59At 23:59. | 59 23 * * * |
0 59 23 * * ? |
cron(59 23 * * ? *) |
0 59 23 * * * |
Open |
| Twice a day, 08:00 and 20:00At 08:00 and 20:00. | 0 8,20 * * * |
0 0 8,20 * * ? |
cron(0 8,20 * * ? *) |
0 0 8,20 * * * |
Open |
| Three times a dayAt 06:00, 14:00 and 22:00. | 0 6,14,22 * * * |
0 0 6/8 * * ? |
cron(0 6/8 * * ? *) |
0 0 6/8 * * * |
Open |
| Every other day (odd dates)At 00:00, on odd-numbered days (1st, 3rd … 31st). | 0 0 */2 * * |
0 0 0 */2 * ? |
cron(0 0 1/2 * ? *) |
0 0 0 */2 * * |
Open |
Weekdays, weekends and named days
| Schedule | Unix cron | Quartz | AWS EventBridge | Spring | Parser |
|---|---|---|---|---|---|
| Every weekday at 09:00At 09:00, on Monday through Friday. | 0 9 * * 1-5 |
0 0 9 ? * MON-FRI |
cron(0 9 ? * MON-FRI *) |
0 0 9 * * 1-5 |
Open |
| Every weekday at midnightAt 00:00, on Monday through Friday. | 0 0 * * 1-5 |
0 0 0 ? * MON-FRI |
cron(0 0 ? * MON-FRI *) |
0 0 0 * * 1-5 |
Open |
| Every weekday at 17:30At 17:30, on Monday through Friday. | 30 17 * * 1-5 |
0 30 17 ? * MON-FRI |
cron(30 17 ? * MON-FRI *) |
0 30 17 * * 1-5 |
Open |
| Weekends at 10:00At 10:00, on Saturday and Sunday. | 0 10 * * 0,6 |
0 0 10 ? * SUN,SAT |
cron(0 10 ? * SUN,SAT *) |
0 0 10 * * 0,6 |
Open |
| Every Monday at 09:00At 09:00, on Monday. | 0 9 * * 1 |
0 0 9 ? * MON |
cron(0 9 ? * MON *) |
0 0 9 * * 1 |
Open |
| Every Monday at midnightAt 00:00, on Monday. | 0 0 * * 1 |
0 0 0 ? * MON |
cron(0 0 ? * MON *) |
0 0 0 * * 1 |
Open |
| Every Friday at 17:00At 17:00, on Friday. | 0 17 * * 5 |
0 0 17 ? * FRI |
cron(0 17 ? * FRI *) |
0 0 17 * * 5 |
Open |
| Every Sunday at midnightAt 00:00, on Sunday. | 0 0 * * 0 |
0 0 0 ? * SUN |
cron(0 0 ? * SUN *) |
0 0 0 * * 0 |
Open |
| Monday, Wednesday and Friday at 18:00At 18:00, on Monday, Wednesday and Friday. | 0 18 * * 1,3,5 |
0 0 18 ? * MON,WED,FRI |
cron(0 18 ? * MON,WED,FRI *) |
0 0 18 * * 1,3,5 |
Open |
| Tuesday and Thursday at 07:30At 07:30, on Tuesday and Thursday. | 30 7 * * 2,4 |
0 30 7 ? * TUE,THU |
cron(30 7 ? * TUE,THU *) |
0 30 7 * * 2,4 |
Open |
| Every Saturday at 03:00At 03:00, on Saturday. | 0 3 * * 6 |
0 0 3 ? * SAT |
cron(0 3 ? * SAT *) |
0 0 3 * * 6 |
Open |
Monthly, quarterly and yearly
| Schedule | Unix cron | Quartz | AWS EventBridge | Spring | Parser |
|---|---|---|---|---|---|
| First day of every monthAt 00:00, on the 1st of the month. | 0 0 1 * * |
0 0 0 1 * ? |
cron(0 0 1 * ? *) |
0 0 0 1 * * |
Open |
| 15th of every month at noonAt 12:00, on the 15th of the month. | 0 12 15 * * |
0 0 12 15 * ? |
cron(0 12 15 * ? *) |
0 0 12 15 * * |
Open |
| 1st and 15th at 09:00At 09:00, on the 1st and 15th of the month. | 0 9 1,15 * * |
0 0 9 1,15 * ? |
cron(0 9 1,15 * ? *) |
0 0 9 1,15 * * |
Open |
| Every quarterAt 00:00, on the 1st of the month, every 3rd month (Jan, Apr, Jul and Oct). | 0 0 1 */3 * |
0 0 0 1 */3 ? |
cron(0 0 1 1/3 ? *) |
0 0 0 1 */3 * |
Open |
| Every 6 monthsAt 00:00, on the 1st of the month, in January and July. | 0 0 1 1,7 * |
0 0 0 1 JAN,JUL ? |
cron(0 0 1 JAN,JUL ? *) |
0 0 0 1 1,7 * |
Open |
| Once a year, January 1At 00:00, on January 1st. | 0 0 1 1 * |
0 0 0 1 JAN ? |
cron(0 0 1 JAN ? *) |
0 0 0 1 1 * |
Open |
| Every December 25 at 09:00At 09:00, on December 25th. | 0 9 25 12 * |
0 0 9 25 DEC ? |
cron(0 9 25 DEC ? *) |
0 0 9 25 12 * |
Open |
| Last day of the monthAt 00:00, on the last day of the month. | no L or W — shell workaround | 0 0 0 L * ? |
cron(0 0 L * ? *) |
0 0 0 L * * |
Open |
| Last weekday of the monthAt 18:00, on the last weekday (Mon–Fri) of the month. | no L or W — shell workaround | 0 0 18 LW * ? |
cron(0 18 LW * ? *)⚠ not documented by AWS |
0 0 18 LW * * |
Open |
Business hours
| Schedule | Unix cron | Quartz | AWS EventBridge | Spring | Parser |
|---|---|---|---|---|---|
| Every 15 minutes, 09:00-17:00 on weekdaysEvery 15 minutes between 09:00 and 16:59, on Monday through Friday. | */15 9-16 * * 1-5 |
0 0/15 9-16 ? * MON-FRI |
cron(0/15 9-16 ? * MON-FRI *) |
0 */15 9-16 * * 1-5 |
Open |
| Every 30 minutes, 09:00-17:59 on weekdaysEvery 30 minutes between 09:00 and 17:59, on Monday through Friday. | */30 9-17 * * 1-5 |
0 0/30 9-17 ? * MON-FRI |
cron(0/30 9-17 ? * MON-FRI *) |
0 */30 9-17 * * 1-5 |
Open |
| Every hour from 09:00 to 17:00 on weekdaysEvery hour, on the hour, from 09:00 through 17:00, on Monday through Friday. | 0 9-17 * * 1-5 |
0 0 9-17 ? * MON-FRI |
cron(0 9-17 ? * MON-FRI *) |
0 0 9-17 * * 1-5 |
Open |
| Every 2 hours, 08:00-18:00 on weekdaysAt 08:00, 10:00, 12:00, 14:00, 16:00 and 18:00, on Monday through Friday. | 0 8-18/2 * * 1-5 |
0 0 8-18/2 ? * MON-FRI |
cron(0 8-18/2 ? * MON-FRI *) |
0 0 8-18/2 * * 1-5 |
Open |
| Every 5 minutes in office hoursEvery 5 minutes between 09:00 and 17:59, on Monday through Friday. | */5 9-17 * * 1-5 |
0 0/5 9-17 ? * MON-FRI |
cron(0/5 9-17 ? * MON-FRI *) |
0 */5 9-17 * * 1-5 |
Open |
| Weekdays at 09:00, 12:00 and 17:00At 09:00, 12:00 and 17:00, on Monday through Friday. | 0 9,12,17 * * 1-5 |
0 0 9,12,17 ? * MON-FRI |
cron(0 9,12,17 ? * MON-FRI *) |
0 0 9,12,17 * * 1-5 |
Open |
| Hourly outside office hours on weekdaysAt minute 0 past hours 00:00 through 08:00 and 18:00 through 23:00, on Monday through Friday. | 0 0-8,18-23 * * 1-5 |
0 0 0-8,18-23 ? * MON-FRI |
cron(0 0-8,18-23 ? * MON-FRI *) |
0 0 0-8,18-23 * * 1-5 |
Open |
| Every 10 minutes at weekendsEvery 10 minutes, on Saturday and Sunday. | */10 * * * 0,6 |
0 0/10 * ? * SUN,SAT |
cron(0/10 * ? * SUN,SAT *) |
0 */10 * * * 0,6 |
Open |
Odd ones and traps
| Schedule | Unix cron | Quartz | AWS EventBridge | Spring | Parser |
|---|---|---|---|---|---|
| First Monday of the monthAt 09:00, on the 1st Monday of the month. | no # or L — shell workaround | 0 0 9 ? * 2#1 |
cron(0 9 ? * MON#1 *) |
0 0 9 * * 1#1 |
Open |
| Last Friday of the monthAt 17:00, on the last Friday of the month. | no # or L — shell workaround | 0 0 17 ? * 6L |
cron(0 17 ? * 6L *) |
0 0 17 * * 5L |
Open |
| Weekday nearest the 15thAt 09:00, on the weekday nearest the 15th of the month. | no L or W — shell workaround | 0 0 9 15W * ? |
cron(0 9 15W * ? *) |
0 0 9 15W * * |
Open |
| The 1st, and also every MondayAt 00:00, on the 1st of the month and on every Monday. | 0 0 1 * 1 |
0 0 0 1 * ?0 0 0 ? * MON |
cron(0 0 1 * ? *)cron(0 0 ? * MON *) |
0 0 0 1 * *0 0 0 * * 1 |
Open |
| Mondays that fall on an odd dateAt 00:00, on odd-numbered days (1st, 3rd … 31st), but only if it is a Monday. | 0 0 */2 * 1 |
cannot restrict both day fields | cannot restrict both day fields | 0 0 0 */2 * 1 |
Open |
| Every 90 minutesAt minute 0 past hours 00:00, 03:00, 06:00, 09:00, 12:00, 15:00, 18:00 and 21:00. Plus: At minute 30 past hours 01:00, 04:00, 07:00, 10:00, 13:00, 16:00, 19:00 and 22:00. | 0 0-21/3 * * *30 1-22/3 * * * |
0 0 0/3 * * ?0 30 1/3 * * ? |
cron(0 0/3 * * ? *)cron(30 1/3 * * ? *) |
0 0 */3 * * *0 30 1/3 * * * |
Open |
| Every 7 minutes (uneven)Every 7 minutes. | */7 * * * * |
0 0/7 * * * ? |
cron(0/7 * * * ? *)⚠ not documented by AWS |
0 */7 * * * * |
Open |
| Every minute of the 09:00 hourEvery minute from 09:00 to 09:59. | * 9 * * * |
0 * 9 * * ? |
cron(* 9 * * ? *)⚠ not documented by AWS |
0 * 9 * * * |
Open |
| At 04:05 on Sundays in AugustAt 04:05, on Sunday, in August. | 5 4 * 8 0 |
0 5 4 ? AUG SUN |
cron(5 4 ? AUG SUN *) |
0 5 4 * 8 0 |
Open |
| Leap day, February 29At 00:00, on February 29th. | 0 0 29 2 * |
0 0 0 29 FEB ? |
cron(0 0 29 FEB ? *)⚠ not documented by AWS |
0 0 0 29 2 * |
Open |
| Every 30 secondsEvery 30 seconds. | no seconds field | 0/30 * * * * ? |
no seconds field | */30 * * * * * |
Open |
| Once at bootOnce, when the cron daemon starts (usually at boot). | @reboot |
no @reboot | no @reboot | no @reboot | Open |
How to use these cron examples
- Type part of what you need into Filter — "weekday", "15 minutes", "quarterly", "month end". Groups with no match are hidden.
- Copy the expression from the column for your scheduler: Unix for a Linux crontab, Kubernetes, GitHub Actions and most libraries; Quartz, AWS or Spring for those.
- Where a cell holds two expressions, that dialect needs two schedules to say the same thing — add both.
- Click Open to load the row into the parser and check the next runs in your own time zone before you deploy it.
Reading the four columns
- Quartz and Spring start with a seconds field, which is
0here. Quartz also needs?in whichever day field is not used. - AWS is wrapped in
cron( … ), has no seconds but ends with a year field (*), and needs the same?as Quartz. - Weekdays are written as names (
MON-FRI) in Quartz and AWS, because those count 1 = Sunday: the digits1-5would mean Sunday to Thursday there. - "The 1st, and also every Monday" shows Linux cron's OR rule: with both day fields set, it runs when either matches. Quartz and AWS cannot set both, and Spring would require both, so each needs two schedules.
- "Mondays that fall on an odd date" is the opposite: a day field starting with
*makes Linux cron AND the two fields. Spring can say that; Quartz and AWS cannot. - Rows starting from Quartz (
L,W,#, seconds) have no Linux form; the cell links to the shell workaround on the cheat sheet.
To write a schedule that is not here, describe it to text to cron or click it together in the cron generator. To turn one into code for your library, use cron to code.
FAQ
How do I know these conversions are right?
Each Quartz, AWS and Spring cell was converted with cronkit's engine and is re-checked when this page loads: it is parsed with that dialect's rules and must give the same next 60 runs as the Unix (or Quartz) cell. The line above the tables reports the result.
Why does "every 90 minutes" need two lines?
A step such as */90 cannot exceed its field, and steps restart every hour, so no single line keeps a 90-minute rhythm. Two lines — on the hour every three hours from 00:00,
and at :30 every three hours from 01:30 — cover all sixteen runs a day.
Is "every other day" really every 48 hours?
No. */2 in the day-of-month field means the odd dates 1, 3, 5 … 31, restarting each month, so after the 31st the next run is the 1st — the next day.
Why is AWS's LW flagged?
AWS documents L and W in the day-of-month field but does not document the combined LW. cronkit's engine accepts it the way Quartz does; test it in the AWS console before relying on it.