Cron Expression Examples: Cheat Sheet with 20+ Real Schedules

20+ cron expression examples covering every common schedule — every minute, hourly, daily, weekly, monthly, weekdays only, and more. Includes @shorthand strings and timezone notes.

BY ALI HASSAN·

Cron Expression Examples: Cheat Sheet with 20+ Real Schedules

A cron expression is a string of 5 fields that defines a schedule. Get it wrong and your job runs at 3am on a Sunday instead of midnight on a weekday. This cheat sheet covers every common pattern. Use Mizakii's Cron Expression Generator to build, validate, and see the next 5 run times for any expression.

The 5 Fields

┌─── minute (0–59)
│ ┌─── hour (0–23)
│ │ ┌─── day of month (1–31)
│ │ │ ┌─── month (1–12)
│ │ │ │ ┌─── day of week (0–7, 0 and 7 = Sunday)
│ │ │ │ │
* * * * *

Special characters:

  • * — every value
  • , — list of values (e.g. 1,3,5)
  • - — range (e.g. 9-17)
  • / — step (e.g. */15 = every 15 units)

Cron Expression Examples

Every N minutes / seconds

| Expression | Meaning | |------------|---------| | * * * * * | Every minute | | */2 * * * * | Every 2 minutes | | */5 * * * * | Every 5 minutes | | */10 * * * * | Every 10 minutes | | */15 * * * * | Every 15 minutes | | */30 * * * * | Every 30 minutes |

Hourly

| Expression | Meaning | |------------|---------| | 0 * * * * | Every hour (at :00) | | 30 * * * * | Every hour at :30 | | 0 */2 * * * | Every 2 hours | | 0 */6 * * * | Every 6 hours | | 0 */12 * * * | Twice a day (midnight and noon) |

Daily

| Expression | Meaning | |------------|---------| | 0 0 * * * | Daily at midnight | | 0 6 * * * | Daily at 6am | | 0 9 * * * | Daily at 9am | | 0 17 * * * | Daily at 5pm | | 0 23 * * * | Daily at 11pm |

Weekdays and weekends

| Expression | Meaning | |------------|---------| | 0 9 * * 1-5 | 9am Monday–Friday | | 0 9 * * 1 | 9am every Monday | | 0 0 * * 6,0 | Midnight Saturday and Sunday | | 0 0 * * 6 | Midnight every Saturday | | 30 8 * * 1-5 | 8:30am weekdays |

Monthly and yearly

| Expression | Meaning | |------------|---------| | 0 0 1 * * | Midnight on the 1st of every month | | 0 0 15 * * | Midnight on the 15th of every month | | 0 0 1 1 * | Midnight on 1 Jan (once a year) | | 0 0 L * * | Last day of every month (some platforms support L) |

Specific time combinations

| Expression | Meaning | |------------|---------| | 0 8-17 * * 1-5 | Every hour from 8am–5pm, weekdays | | 0 0,12 * * * | Midnight and noon every day | | 0 9,13,17 * * 1-5 | 9am, 1pm, and 5pm on weekdays |


@Shorthand Strings

Most cron implementations accept these aliases instead of the 5-field syntax:

| Shorthand | Equivalent | Meaning | |-----------|------------|---------| | @yearly | 0 0 1 1 * | Once a year, midnight 1 Jan | | @annually | 0 0 1 1 * | Same as @yearly | | @monthly | 0 0 1 * * | Midnight on the 1st of each month | | @weekly | 0 0 * * 0 | Midnight every Sunday | | @daily | 0 0 * * * | Midnight every day | | @midnight | 0 0 * * * | Same as @daily | | @hourly | 0 * * * * | Start of every hour | | @reboot | (special) | Once at startup (Linux cron only) |


Timezone Gotchas by Platform

Cron by default runs in the server's local timezone — which is often UTC in cloud environments.

Linux crontab

Set CRON_TZ at the top of the crontab:

CRON_TZ=America/New_York
0 9 * * 1-5 /usr/bin/script.sh

GitHub Actions

Always UTC. No timezone setting. Convert your target time to UTC before writing the expression:

on:
  schedule:
    - cron: '0 14 * * 1-5'  # 9am ET = 14:00 UTC (during EST)

AWS EventBridge (CloudWatch Events)

Always UTC. Set the expression in the console — note AWS uses 6-field cron syntax with an additional year field:

cron(0 14 ? * MON-FRI *)

Kubernetes CronJob

Kubernetes 1.27+ supports .spec.timeZone:

spec:
  schedule: "0 9 * * 1-5"
  timeZone: "America/New_York"

Earlier versions use UTC only.


Common Mistakes

Off-by-one on day-of-week — some systems use 0=Sunday, others 1=Monday. Always check your platform's docs. Linux cron uses 0 and 7 both for Sunday.

Mixing up fields — beginners sometimes write 0 * * * 1-5 thinking it means "every hour on weekdays" (it does), but they often intended 0 9 * * 1-5 (9am on weekdays). The hour field is the second field, not the first.

DST shifts — a job scheduled for 0 2 * * * (2am daily) may run twice or skip entirely when clocks change. Schedule critical jobs at 1am or 3am to avoid the DST window.

No validation before deploying — always verify what you wrote. Paste it into Mizakii's Cron Generator to see the next 5 actual run times before deploying.


Build and Validate Cron Expressions

Mizakii's Cron Expression Generator lets you:

  • Build schedules visually (no guessing field order)
  • Paste an existing expression to validate it
  • See the next 5 exact run times instantly
  • Reference the full cheat sheet in one place

Free, no signup, works in any browser.