HTTPfy

Cron schedules

How the five crontab fields work, and 61 common schedules with their next run times computed live in UTC.

The five fields

┌───────────── minute (0-59)
│ ┌─────────── hour (0-23)
│ │ ┌───────── day of month (1-31)
│ │ │ ┌─────── month (1-12 or JAN-DEC)
│ │ │ │ ┌───── day of week (0-7 or SUN-SAT; 0 and 7 are Sunday)
│ │ │ │ │
* * * * *  command to run
OperatorMeaningExample
*every value of the field* * * * * every minute
,a list of values0 9,17 * * * at 09:00 and 17:00
-an inclusive range (ranges cannot wrap, so FRI-MON is invalid)0 9 * * 1-5 weekdays
/a step within the range; */15 = 0,15,30,45*/15 * * * * every 15 minutes

Steps count from the start of the range and restart at each hour, day or month, so only steps that divide the range give even spacing (*/45 and 0 */5 show what happens otherwise).

Special strings

StringSame asSchedule
@yearly0 0 1 1 *Every year on January 1st
@annually0 0 1 1 *Every year on January 1st
@monthly0 0 1 * *First day of every month
@weekly0 0 * * 0Every Sunday at midnight
@daily0 0 * * *Every day at midnight
@midnight0 0 * * *Every day at midnight
@hourly0 * * * *Every hour
@reboot-once, when the cron daemon starts (usually at boot). Not supported by Kubernetes, GitHub Actions or EventBridge.

Rules that surprise people

  • Day-of-month OR day-of-week. If both fields are restricted (neither starts with *), the job runs when either matches. 0 9 1-7 * 1 runs on days 1-7 and on every Monday, not on the first Monday; see first Monday of every month for the working version.
  • Time zone. System cron runs in the daemon's local time zone (some crons accept CRON_TZ= in the crontab). Kubernetes uses the controller manager's zone unless spec.timeZone is set; GitHub Actions and EventBridge rules always use UTC. Times on this site are UTC.
  • Daylight saving. On local-time servers, jobs between 01:00 and 03:00 can be skipped, shifted or squeezed on change days. Run servers in UTC, or avoid that window (02:00 is the classic trap).
  • % is special. In a crontab line an unescaped % ends the command and the rest is sent to stdin. Write date +\%F.
  • Minimal environment. Cron runs with a short PATH and no login shell, so use absolute paths or set PATH= at the top of the crontab, and redirect output or set MAILTO.
  • No catch-up. If the machine is off at run time, classic cron skips the run. anacron, systemd timers with Persistent=true and Kubernetes startingDeadlineSeconds can catch up.
  • Other dialects. AWS EventBridge has six fields with a year and ?; Quartz has seconds first; both number days of the week 1 (Sunday) to 7. Each schedule page below shows the converted form.

61 common schedules

Next run times are computed for 2026-11-11 02:13 UTC.

Every few minutes

ScheduleExpressionNext run (UTC)
Every 5 minutes*/5 * * * *Wed 11 Nov 02:15
Every minute* * * * *Wed 11 Nov 02:14
Every 15 minutes*/15 * * * *Wed 11 Nov 02:15
Every 10 minutes*/10 * * * *Wed 11 Nov 02:20
Every 30 minutes*/30 * * * *Wed 11 Nov 02:30
Every 2 minutes*/2 * * * *Wed 11 Nov 02:14
Every 20 minutes*/20 * * * *Wed 11 Nov 02:20
Every 3 minutes*/3 * * * *Wed 11 Nov 02:15
Every 5 minutes during business hours*/5 9-17 * * 1-5Wed 11 Nov 09:00
Every 45 minutes (not really)*/45 * * * *Wed 11 Nov 02:45
Every 7 minutes*/7 * * * *Wed 11 Nov 02:14
Every minute during business hours* 9-17 * * 1-5Wed 11 Nov 09:00

Hourly and every few hours

ScheduleExpressionNext run (UTC)
Every hour0 * * * *Wed 11 Nov 03:00
Every hour during business hours0 9-17 * * 1-5Wed 11 Nov 09:00
Every 2 hours0 */2 * * *Wed 11 Nov 04:00
Every 6 hours0 */6 * * *Wed 11 Nov 06:00
Every 12 hours0 */12 * * *Wed 11 Nov 12:00
Every 3 hours0 */3 * * *Wed 11 Nov 03:00
Every 4 hours0 */4 * * *Wed 11 Nov 04:00
Every hour at half past30 * * * *Wed 11 Nov 02:30
Every 8 hours0 */8 * * *Wed 11 Nov 08:00
Every 5 hours (uneven)0 */5 * * *Wed 11 Nov 05:00
Every 6 hours at a quiet minute17 */6 * * *Wed 11 Nov 06:17

Once or twice a day

ScheduleExpressionNext run (UTC)
Every day at midnight0 0 * * *Thu 12 Nov 00:00
Every day at noon0 12 * * *Wed 11 Nov 12:00
Every day at 2am0 2 * * *Thu 12 Nov 02:00
Every day at 1am0 1 * * *Thu 12 Nov 01:00
Every day at 3am0 3 * * *Wed 11 Nov 03:00
Every day at 6am0 6 * * *Wed 11 Nov 06:00
Every day at 8am0 8 * * *Wed 11 Nov 08:00
Every day at 9am0 9 * * *Wed 11 Nov 09:00
Every day at 5pm0 17 * * *Wed 11 Nov 17:00
Every day at 6pm0 18 * * *Wed 11 Nov 18:00
Every day at 11:59pm59 23 * * *Wed 11 Nov 23:59
Twice a day0 0,12 * * *Wed 11 Nov 12:00
Twice a day at 9am and 5pm0 9,17 * * *Wed 11 Nov 09:00
Every other day0 0 */2 * *Fri 13 Nov 00:00
Every day at 4am0 4 * * *Wed 11 Nov 04:00
Every day at 10pm0 22 * * *Wed 11 Nov 22:00

Weekdays and weekly

ScheduleExpressionNext run (UTC)
Every weekday at 9am0 9 * * 1-5Wed 11 Nov 09:00
Every Monday at 9am0 9 * * 1Mon 16 Nov 09:00
Every Sunday at midnight0 0 * * 0Sun 15 Nov 00:00
Every weekday at midnight0 0 * * 1-5Thu 12 Nov 00:00
Every Friday at 5pm0 17 * * 5Fri 13 Nov 17:00
Every Saturday at midnight0 0 * * 6Sat 14 Nov 00:00
Every Monday at midnight0 0 * * 1Mon 16 Nov 00:00
Every Friday at midnight0 0 * * 5Fri 13 Nov 00:00
Every Saturday and Sunday at midnight0 0 * * 6,0Sat 14 Nov 00:00
Every Sunday at 3am0 3 * * 0Sun 15 Nov 03:00
Every Monday, Wednesday and Friday at 9am0 9 * * 1,3,5Wed 11 Nov 09:00
Every Tuesday and Thursday at 9am0 9 * * 2,4Thu 12 Nov 09:00
Every weekday at 6pm0 18 * * 1-5Wed 11 Nov 18:00

Monthly, quarterly and yearly

ScheduleExpressionNext run (UTC)
First day of every month0 0 1 * *Tue 01 Dec 00:00
Twice a month (1st and 15th)0 0 1,15 * *Sun 15 Nov 00:00
Every month on the 15th0 0 15 * *Sun 15 Nov 00:00
Last day of every month0 0 28-31 * *Mon 30 Nov 00:00
On the 31st of the month0 0 31 * *Thu 31 Dec 00:00
Every quarter0 0 1 */3 *Fri 01 Jan 00:00
Every 6 months0 0 1 1,7 *Fri 01 Jan 00:00
Every year on January 1st0 0 1 1 *Fri 01 Jan 00:00
First Monday of every month0 9 1-7 * *Mon 07 Dec 09:00

Build your own

The Crontab Generator turns a preset or custom fields into a crontab line with the command and output handling.