Cron examples.

80+ cron expression examples for everyday scheduling — from "every 5 minutes" to "first Monday of every quarter."

Copy any pattern, paste into your crontab, GitHub Actions YAML, Kubernetes CronJob spec, or AWS EventBridge rule. Every expression links to the explainer so you can verify the next run times.

High frequency — every few minutes

For monitoring, polling, queue consumption, and health checks.

CronMeaningUse case
* * * * *Every minuteHealth checks, webhook pollingtry →
*/2 * * * *Every 2 minutesLog streaming, fast queue drainingtry →
*/5 * * * *Every 5 minutesEmail fetching, cache clearingtry →
*/10 * * * *Every 10 minutesToken refresh, analytics aggregationtry →
*/15 * * * *Every 15 minutesSMS queue, currency rate updatestry →
*/20 * * * *Every 20 minutesCDN cache invalidationtry →
*/30 * * * *Every 30 minutesStuck-transaction checkstry →
30 * * * *At minute 30 of every hourHalf-past-the-hour reportstry →
45 * * * *At minute 45 of every hour15-minute-before-hour syncstry →

Hourly — every hour or every N hours

For cron jobs that fire on or near the hour boundary.

CronMeaningUse case
0 * * * *Every hour, at minute 0Hourly metrics aggregationtry →
0 */2 * * *Every 2 hours (00:00, 02:00, …)Periodic full-sync jobstry →
0 */3 * * *Every 3 hoursSnapshot, report rotationtry →
0 */4 * * *Every 4 hoursExternal data pullstry →
0 */6 * * *Every 6 hours (00, 06, 12, 18)Secondary backup snapshotstry →
0 */12 * * *Twice daily (00:00 & 12:00)Day/night batch swapstry →
0 0,6,12,18 * * *At midnight, 6 AM, noon, 6 PMExplicit 4× daily scheduletry →

Daily — once or twice a day

The most common batch-processing window. Pick an off-peak hour for heavy jobs.

CronMeaningUse case
0 0 * * *Daily at midnightClear /tmp, reset daily limitstry →
0 1 * * *Daily at 1 AMYesterday's traffic reportstry →
0 2 * * *Daily at 2 AMPrimary database backuptry →
0 3 * * *Daily at 3 AMSSL renewal, log rotationtry →
15 3 * * *Daily at 3:15 AMLog archiving to S3 Glaciertry →
30 4 * * *Daily at 4:30 AMCache pre-warmingtry →
0 6,18 * * *Twice daily at 6 AM and 6 PMShift-change snapshotstry →
0 9 * * *Daily at 9 AMMorning notificationstry →
0 12 * * *Daily at noonLunchtime newsletter blasttry →
0 17 * * *Daily at 5 PMEnd-of-day reportstry →
0 23 * * *Daily at 11 PMLate-night cleanuptry →

Weekly — specific weekdays

Day-of-week field: 0 or 7 = Sunday, 1 = Monday, … 6 = Saturday.

CronMeaningUse case
0 0 * * 0Every Sunday at midnightAggressive cleanups, defragtry →
0 0 * * 1Every Monday at midnightWeekly reset, sprint starttry →
0 12 * * 1Every Monday at noonWeekly company newslettertry →
30 2 * * 0Every Sunday at 2:30 AMDatabase reindexingtry →
0 23 * * 6Every Saturday at 11 PMWeekly security scantry →
0 0 * * 6Every Saturday at midnightCode deployments, deep indexingtry →
0 0 * * 1,4Mon and Thu at midnightBi-weekly SSL renewal checkstry →
0 0 * * 0,6Weekends only (Sat & Sun)Weekend-only maintenancetry →
0 0 * * 1-5Every weekday (Mon–Fri)Business-day workflowstry →
0 9 * * MON-FRI9 AM Mon–Fri (named)Standup reminderstry →

Monthly — specific days of the month

For invoices, subscriptions, payroll, and end-of-month closings.

CronMeaningUse case
0 0 1 * *1st of every month at midnightSubscription billing, invoicingtry →
0 0 15 * *15th of every month at midnightMid-month accounting cutofftry →
0 0 1,15 * *1st and 15th at midnightBi-weekly payrolltry →
0 9 1 * *1st of every month at 9 AMMonthly report emailtry →
0 0 28 * *28th of every monthSafe "near month-end" triggertry →
0 0 1-7 * 1First Monday of the month (approx)Monthly all-hands meetingtry →
0 0 22-28 * 5Last Friday of the month (approx)Month-end deploymenttry →
0 0 */5 * *Every 5 days (1, 6, 11, 16, 21, 26, 31)Periodic cleanuptry →

Yearly & quarterly — seasonal jobs

For tax filings, archival, quarter-end closings.

CronMeaningUse case
0 0 1 1 *Jan 1 at midnight (yearly)Annual reset, year-end archivetry →
0 0 1 */3 *Quarterly (Jan, Apr, Jul, Oct on the 1st)Quarterly financial closetry →
0 22 31 3,6,9,12 *End of each quarter at 10 PMQuarter-end reconciliationtry →
0 0 1 1,7 *Jan 1 and Jul 1 (semi-annual)Bi-annual key rotationtry →
0 0 1 JAN,JUN *Jan 1 and Jun 1 (named)Same as above, named monthstry →
0 0 25 12 *Dec 25 every yearHoliday-aware schedule resettry →

Business hours — Mon–Fri working time

For real-time syncs, lead distribution, and customer-facing automations.

CronMeaningUse case
0 9 * * 1-59 AM Mon–FriMorning standup remindertry →
0 17 * * 1-55 PM Mon–FriEnd-of-day reportstry →
0 9-17 * * 1-5Hourly 9 AM–5 PM weekdaysLive CRM sync, ticket pollingtry →
*/30 9-17 * * 1-5Every 30 min in business hoursReal-time lead distributiontry →
*/15 9-17 * * 1-5Every 15 min in business hoursFast SLA trackingtry →
0 9-18/2 * * 1-5Every 2 hours, 9 AM–7 PM weekdaysPeriodic queue drainingtry →
30 17,18 * * 1-55:30 PM and 6:30 PM Mon–FriEnd-of-day double-checktry →
*/10 8-10,16-18 * * 1-5Every 10 min during rush hoursCommute-hour traffic spikestry →

Off-peak — nights and weekends

For batch jobs that need quiet servers.

CronMeaningUse case
0 0-5 * * *Hourly between midnight and 5 AMOff-peak heavy processingtry →
*/15 0-5 * * *Every 15 min between midnight and 5 AMAggressive nightly cleanuptry →
*/15 0-5 * 10-12 *Same, only in Oct/Nov/DecQ4 holiday-traffic preptry →
0 0 * * 0,6Every weekend day at midnightWeekend-only batchtry →

Macros — @daily, @hourly, @reboot

Shortcuts supported by most Unix-like cron daemons. Don't work in AWS EventBridge or Azure NCRONTAB.

MacroEquivalentUse case
@yearly0 0 1 1 * — once a yearAnnual archivetry →
@annuallyAlias for @yearlySame as abovetry →
@monthly0 0 1 * * — first of monthMonthly billingtry →
@weekly0 0 * * 0 — Sunday midnightWeekly digesttry →
@daily0 0 * * * — midnightDaily cleanuptry →
@midnightAlias for @dailySame as abovetry →
@hourly0 * * * * — top of hourHourly metricstry →
@rebootAt system startupAuto-start daemons on boottry →

Quartz — L, W, # special characters

For Java Quartz Scheduler, Spring's @Scheduled, and AWS EventBridge. Not supported in standard Unix cron. See the Quartz tool.

Cron (Quartz)MeaningUse case
0 0 0 L * ?Last day of every month at midnightMonth-end accounting closetry →
0 0 0 LW * ?Last weekday of every monthSkips weekends for month-endtry →
0 0 0 15W * ?Nearest weekday to the 15thMid-month, skip weekendstry →
0 0 0 ? * 2#2Second Monday of every monthMonthly leadership meetingtry →
0 0 0 ? * 6#1First Friday of every monthMonthly retrospectivetry →
0 0 0 ? * 6LLast Friday of every monthEnd-of-month deploy windowtry →
0 0 12 ? * MON-FRINoon Mon–Fri (Quartz)Java app lunch-time jobtry →
0 0/30 9-17 ? * MON-FRIEvery 30 min during business hoursJava app real-time synctry →

Multi-time & lists — several specific times

Use the comma separator to fire at multiple distinct points.

CronMeaningUse case
0,15,30,45 * * * *At :00, :15, :30, :45Every quarter-hour (= */15)try →
0 8,12,17 * * *8 AM, noon, 5 PMThree meals remindertry →
0 9,12,15 1,15 * *9 AM, noon, 3 PM on 1st & 15thPayroll audit intervalstry →
0 0 1,15,31 * *1st, 15th, 31st (skips short months)Tri-monthly closetry →
0 0 * 1,4,7,10 *Daily at midnight in Jan/Apr/Jul/OctQuarter-month dailiestry →

Ranges & steps — combining operators

Ranges (-) and steps (/) compose for precise control.

CronMeaningUse case
10-40/15 * * * *At minutes 10, 25, 40 (every 15 within 10–40)Sparse within an hourtry →
1-30/10 * * * *At minutes 1, 11, 21 (every 10 in first half)First-half-of-hour pollingtry →
0 1/2 * * *At odd hours (1, 3, 5, …, 23)Alternating with another jobtry →
0 9-17/2 * * 1-5Every 2h within 9 AM–5 PM weekdaysPeriodic biz-hour checkstry →
15 22 1-7 * 110:15 PM on the first Monday (approx)Late-night monthly tasktry →
0 0 * 1-3 *Daily at midnight in Q1 onlyTax-season scripttry →

Need a different pattern?

Download printable PDF cheat sheet