Cron Pattern Library
A curated collection of 55+ production-ready cron expressions covering daily schedules, weekly maintenance windows, monthly billing cycles, and cloud-specific syntax for AWS EventBridge, Kubernetes CronJobs, GCP Cloud Scheduler, and Quartz/Spring.
Showing 55 patterns
Every Day at Midnight
0 0 * * *Fires at exactly 00:00 every day. The minute and hour fields are both set to 0, while wildcards in the day-of-month, month, and day-of-week fields mean it runs regardless of date or weekday.
Every Day at 6 AM
0 6 * * *Triggers at 06:00 daily. Commonly used for morning health checks, pre-business-hours database maintenance, or warming application caches before traffic arrives.
Every Day at Noon
0 12 * * *Runs at 12:00 daily. Useful for midday reports, lunchtime data syncs, or triggering notification digests at a time when most users are actively checking messages.
Every Day at 6 PM
0 18 * * *Executes at 18:00 each day. Ideal for end-of-business-day summaries, daily metric rollups, or triggering batch data exports after peak operational hours.
Every Day at 11 PM
0 23 * * *Fires at 23:00 nightly. Often used for overnight batch processing, log rotation, or cleanup tasks that should complete before the midnight rollover.
Every Day at 2:30 AM
30 2 * * *Triggers at 02:30 daily. A popular choice for database backups because it avoids the midnight rush of other cron jobs and runs during the lowest-traffic window.
Every 2 Hours
0 */2 * * *Runs at minute 0 of every second hour (0:00, 2:00, 4:00…). The */2 step value in the hour field creates an even cadence for periodic syncs without overloading resources.
Every 4 Hours
0 */4 * * *Fires at the top of every fourth hour (0:00, 4:00, 8:00…). Balances freshness and efficiency for tasks like DNS propagation checks or CDN cache purges.
Every 6 Hours
0 */6 * * *Executes at 00:00, 06:00, 12:00, and 18:00 daily. Divides the day into four equal windows — useful for quarterly reporting intervals or staggered replication jobs.
Every 5 Minutes
*/5 * * * *Fires every 5 minutes around the clock. The */5 step value in the minute field creates 288 executions per day — common for uptime monitoring, queue processing, and metric scraping.
Every 10 Minutes
*/10 * * * *Runs at minutes 0, 10, 20, 30, 40, 50 of every hour. A balanced interval for data polling that avoids overwhelming external APIs while maintaining reasonable freshness.
Every 15 Minutes
*/15 * * * *Triggers every quarter hour. Widely used in observability stacks for aggregating metrics, running lightweight health probes, or syncing incremental changes from upstream systems.
Every 30 Minutes
*/30 * * * *Executes at minute 0 and minute 30 of every hour. Provides a reasonable cadence for report generation, email digests, or polling workflows that tolerate 30-minute lag.
Twice Daily at 9 AM and 5 PM
0 9,17 * * *Fires at 09:00 and 17:00 every day. The comma-separated hour values create two execution points — perfect for start-of-day and end-of-day automated reports or alerts.
Every Sunday at Midnight
0 0 * * 0Runs at 00:00 on Sunday (day 0 in standard cron). Used for weekly log archives, full database dumps, or weekly analytics summaries that need an entire week of data.
Every Monday at 9 AM
0 9 * * 1Triggers at 09:00 on Monday (day 1). Perfect for Monday morning Slack reports, weekly sprint kickoff notifications, or refreshing dashboard data for the new work week.
Every Friday at Noon
0 12 * * 5Fires at 12:00 on Friday (day 5). Commonly used for end-of-week deployment freezes, generating weekly status emails, or triggering Friday afternoon fun-fact bots.
Every Friday at 5 PM
0 17 * * 5Executes at 17:00 on Fridays. Ideal for triggering weekly wrap-up tasks, locking release branches, or sending team retrospective reminders before the weekend.
Every Saturday at 3 AM
0 3 * * 6Runs at 03:00 on Saturday (day 6). A prime slot for heavy maintenance — index rebuilds, full table vacuums, or major version upgrades — when user traffic is minimal.
Weekdays at 8 AM
0 8 * * 1-5Fires at 08:00 Monday through Friday. The range 1-5 in the day-of-week field restricts execution to business days — ideal for morning stand-up reminders or CI/CD triggers.
Weekday Nights at 10 PM
0 22 * * 1-5Triggers at 22:00 every weekday. Useful for nightly integration test suites that run against staging environments, generating reports ready for the next business morning.
Weekends at 10 AM
0 10 * * 6,0Runs at 10:00 on Saturday (6) and Sunday (0). The comma separates two day-of-week values — used for weekend-only monitoring, reduced-frequency cleanup, or weekend on-call alerts.
Every Wednesday at 2:30 PM
30 14 * * 3Fires at 14:30 on Wednesday (day 3). Often used for mid-week check-ins, Wednesday deployment windows, or triggering bi-weekly processes on alternating weeks.
Mon, Wed, Fri at 6 AM
0 6 * * 1,3,5Triggers at 06:00 on Monday, Wednesday, and Friday. The comma-separated day list creates an alternating schedule for tasks like incremental backups or tri-weekly syncs.
Every Weekday at Midnight
0 0 * * 1-5Runs at 00:00 Monday through Friday. Combines the midnight trigger with business-day restriction — perfect for nightly CI builds that skip weekends to save compute costs.
First Day of Every Month at Midnight
0 0 1 * *Fires at 00:00 on the 1st of each month. Used for monthly billing cycles, generating invoices, rotating API keys, or producing month-end financial reports.
First Day of Every Month at 9 AM
0 9 1 * *Triggers at 09:00 on the 1st. Combines the monthly cadence with business hours — ideal for sending monthly newsletters, usage summaries, or account statements.
Mid-Month (15th) at Midnight
0 0 15 * *Runs at 00:00 on the 15th of every month. Commonly used for semi-monthly payroll processing, mid-cycle compliance checks, or biweekly reporting milestones.
Twice Monthly (1st & 15th) at 3 AM
0 3 1,15 * *Fires at 03:00 on the 1st and 15th of each month. The comma in the day-of-month field creates a bimonthly cadence — useful for semi-monthly payroll or certificate renewal checks.
January 1st at Midnight (Yearly)
0 0 1 1 *Triggers once a year at 00:00 on January 1st. Used for annual license renewals, yearly log archives, rotating long-lived credentials, or resetting annual counters.
Quarterly (Every 3 Months) on the 1st
0 0 1 */3 *Runs at midnight on the 1st of January, April, July, and October. The */3 step in the month field creates quarterly execution for fiscal reports or compliance audits.
Every 28th at 2 AM
0 2 28 * *Fires at 02:00 on the 28th of each month. Using the 28th instead of the 31st ensures execution every month regardless of month length — a safe "end of month" proxy.
Start of Each Quarter at 6 AM
0 6 1 1,4,7,10 *Triggers at 06:00 on the first day of January, April, July, and October. Explicitly lists quarter-start months for quarterly planning kickoffs or budget resets.
First Monday of Every Month
0 0 1-7 * 1Fires at midnight on the first Monday of each month. Combines day-of-month range (1-7) with day-of-week (Monday). Note: behavior varies by cron implementation (OR vs AND logic).
Last Day of Every Month (Quartz/Spring)
0 0 L * *Runs at midnight on the last day of each month. The L modifier (supported in Quartz, Spring) dynamically resolves to 28, 29, 30, or 31 — essential for month-end financial closes.
Every Other Month on the 1st at 9 AM
0 9 1 */2 *Triggers at 09:00 on the 1st of every second month (Jan, Mar, May…). The */2 month step creates a bimonthly cadence for less frequent reporting or maintenance windows.
AWS EventBridge: Every 5 Minutes
rate(5 minutes)AWS rate expression that fires every 5 minutes. Simpler than cron for fixed intervals on EventBridge. Cannot express complex schedules but excels at uniform polling or heartbeat tasks.
AWS EventBridge: Every Hour
rate(1 hour)Fires once per hour on AWS EventBridge. Rate expressions are the simplest scheduling primitive — specify an interval and the service handles jitter and distributed execution.
AWS: Weekdays at 9 AM UTC
cron(0 9 ? * MON-FRI *)AWS EventBridge cron with 6 fields (includes year). The ? in day-of-month means "no specific value" when day-of-week is set. MON-FRI restricts to business days.
AWS: First of Every Month at Midnight
cron(0 0 1 * ? *)AWS 6-field cron running at 00:00 UTC on the 1st. The ? in day-of-week is required when day-of-month is specified — AWS mandates exactly one of these be a question mark.
AWS: Every 15 Minutes
cron(0/15 * * * ? *)AWS EventBridge syntax using 0/15 (start at 0, repeat every 15). Equivalent to */15 in Unix cron. The trailing year field (*) matches all years — mandatory in AWS expressions.
AWS: Every Saturday at 1:30 AM UTC
cron(30 1 ? * SAT *)Fires at 01:30 UTC every Saturday on EventBridge. Uses three-letter day abbreviation (SAT) and ? for day-of-month. Ideal for weekly maintenance windows in low-traffic periods.
Kubernetes CronJob: Every 5 Minutes
*/5 * * * *Standard 5-field cron in a Kubernetes CronJob spec. K8s uses UTC by default. Pods are created on schedule; concurrencyPolicy controls overlap (Allow, Forbid, or Replace).
Kubernetes CronJob: Every Hour
0 */1 * * *Triggers at minute 0 of every hour in a K8s CronJob. The startingDeadlineSeconds field prevents missed jobs from firing late. Set successfulJobsHistoryLimit to control log retention.
Kubernetes CronJob: Nightly at 2 AM UTC
0 2 * * *Runs at 02:00 UTC daily in Kubernetes. Common for overnight ETL pipelines. Pair with activeDeadlineSeconds to prevent runaway jobs from consuming cluster resources indefinitely.
GCP Cloud Scheduler: Weekly Sunday Midnight
0 0 * * 0Google Cloud Scheduler uses standard Unix cron (5 fields) with configurable timezone. This fires at midnight every Sunday in whatever timezone you configure in the scheduler.
GCP Cloud Scheduler: Twice Daily
0 */12 * * *Fires at 00:00 and 12:00 in Google Cloud Scheduler. Supports retry configuration and dead-letter topics for failed invocations — pair with Pub/Sub for reliable message delivery.
Quartz: Once on Jan 1, 2027 at Midnight
0 0 0 1 1 ? 2027Quartz 7-field expression (seconds, minutes, hours, day, month, dow, year). Fires exactly once. The year field makes one-shot scheduling explicit — unlike Unix cron which has no year.
Quartz: Every 30 Min During Business Hours
0 0/30 8-17 ? * MON-FRIQuartz expression firing every 30 minutes between 8 AM and 5 PM on weekdays. The 8-17 hour range and MON-FRI constraint limit execution to business hours — ideal for polling workflows.
Quartz: Last Friday of Every Month at Noon
0 0 12 ? * 6LQuartz-specific L modifier applied to day-of-week. 6L means "last Friday" of the month. Not available in standard Unix cron — requires Quartz or Spring scheduling engines.
Quartz: First Monday of Month at 10 AM
0 0 10 ? * 2#1The # modifier in Quartz specifies the Nth occurrence of a weekday. 2#1 means "first Monday" (day 2 in Quartz, 1st occurrence). Extremely useful for monthly meetings or releases.
Quartz: Last Weekday of Month at 10:15 AM
0 15 10 LW * ?Combines L (last day) and W (nearest weekday) modifiers. LW resolves to the last business day of each month — if it falls on a weekend, it shifts to the nearest Friday.
Quartz: Every 8 Hours Starting at Midnight
0 0 0/8 * * ?Quartz 0/8 hour step fires at 00:00, 08:00, and 16:00. The leading 0 in seconds and minutes ensures execution at the exact top of those hours. Three evenly spaced daily windows.
Quartz: Nearest Weekday to 1st at 9 AM
0 0 9 1W * ?The W modifier finds the nearest weekday to day 1. If the 1st is Saturday, it fires Friday the 30th/31st; if Sunday, it fires Monday the 2nd. Never crosses month boundaries.
Quartz: Second Monday Every Other Month
0 0 0 ? 1/2 MON#2Combines month step (1/2 = starting January, every 2 months) with day-of-week occurrence (MON#2 = second Monday). Demonstrates Quartz's power for complex scheduling patterns.
How to Use This Library
Find Your Pattern
Search by keyword, time expression, or browse by category. Every pattern includes a detailed explanation of how each field contributes to the schedule.
Understand the Syntax
Each explanation breaks down why the expression works — not just what it does. Learn the mechanics of step values, ranges, lists, and platform-specific modifiers.
Test Before Deploying
Copy any expression into our Generator to see the next 10 execution times in your timezone. Validate before pushing to production — prevent silent scheduling failures.