Cron Expression Examples for Every Common Schedule
A complete reference of cron expression examples with plain-English explanations. Copy-paste ready cron schedules for every use case — from every minute to yearly jobs.
- cron
- scheduling
- devops
- reference
title: "Cron Expression Examples for Every Common Schedule" description: "A complete reference of cron expression examples with plain-English explanations. Copy-paste ready cron schedules for every use case — from every minute to yearly jobs." date: "2026-05-28" tags: ["cron", "scheduling", "devops", "reference"] relatedTool: "cron-generator" published: true
Cron expressions are powerful but hard to memorize. This is a copy-paste reference for every common scheduling need. Each entry shows the expression, what it does, and when you'd use it. All examples use the standard 5-field POSIX format (minute, hour, day-of-month, month, day-of-week).
Quick Syntax Reference
┌─────────── minute (0-59)
│ ┌───────── hour (0-23)
│ │ ┌─────── day of month (1-31)
│ │ │ ┌───── month (1-12 or JAN-DEC)
│ │ │ │ ┌─── day of week (0-6 or SUN-SAT)
│ │ │ │ │
* * * * *
Special characters:
*— every value in the field's range,— a list of values (1,3,5)-— an inclusive range (9-17)/— a step (*/15means every 15th value)
Every Minute & Short Intervals
| Expression | Schedule | Use case |
| --- | --- | --- |
| * * * * * | Every minute | Health checks, real-time monitoring |
| */5 * * * * | Every 5 minutes | API polling, cache refresh |
| */10 * * * * | Every 10 minutes | Metrics collection |
| */15 * * * * | Every 15 minutes | Dashboard data refresh |
| */30 * * * * | Every 30 minutes | Batch processing, sync jobs |
Hourly Schedules
| Expression | Schedule | Use case |
| --- | --- | --- |
| 0 * * * * | Every hour at minute 0 | Log rotation, hourly reports |
| 30 * * * * | Every hour at minute 30 | Offset from top-of-hour to avoid peak load |
| 0 */2 * * * | Every 2 hours | Database cleanup, digest emails |
| 0 */6 * * * | Every 6 hours | Data-warehouse ETL loads |
| 0 */12 * * * | Every 12 hours | Certificate checks, DNS refresh |
Daily Schedules
| Expression | Schedule | Use case |
| --- | --- | --- |
| 0 0 * * * | Every day at midnight | Nightly batch jobs, database backups |
| 0 6 * * * | Every day at 6:00 AM | Morning report generation |
| 0 9 * * * | Every day at 9:00 AM | Daily notifications, team digests |
| 30 23 * * * | Every day at 11:30 PM | End-of-day cleanup, log archival |
| 0 9,17 * * * | Every day at 9 AM and 5 PM | Start and end of business day tasks |
Weekday & Weekend Schedules
| Expression | Schedule | Use case |
| --- | --- | --- |
| 0 9 * * MON-FRI | Weekdays at 9:00 AM | Business-hours processing |
| 0 9 * * 1-5 | Same as above (numeric form) | Alternative notation |
| 0 0 * * SAT,SUN | Weekends at midnight | Weekend batch jobs |
| 0 8 * * MON | Every Monday at 8:00 AM | Weekly standup reminders, Monday reports |
| 0 17 * * FRI | Every Friday at 5:00 PM | Weekly summaries, end-of-week reports |
Monthly Schedules
| Expression | Schedule | Use case |
| --- | --- | --- |
| 0 0 1 * * | 1st of every month at midnight | Monthly billing runs, invoice generation |
| 0 9 1 * * | 1st of every month at 9 AM | Monthly reports |
| 0 0 15 * * | 15th of every month | Mid-month payroll, reconciliation |
| 0 0 1,15 * * | 1st and 15th at midnight | Bi-monthly tasks |
| 0 6 L * * | Last day of every month | Month-end close |
Heads up on L: the "last day" character is not standard cron — it's a Quartz/Spring extension. Plain Unix crontab, GitHub Actions, AWS EventBridge, and most other schedulers reject it. For standard cron, run the job daily and check the date in code: exit early unless date +%d equals the last day of the month.
Quarterly & Yearly Schedules
| Expression | Schedule | Use case |
| --- | --- | --- |
| 0 0 1 1,4,7,10 * | First day of each quarter | Quarterly reports, compliance reviews |
| 0 0 1 1 * | January 1st at midnight | Annual renewal, yearly cleanup |
| 0 9 1 1 * | January 1st at 9 AM | New year kick-off tasks |
| 0 0 25 12 * | December 25th | Holiday shutdown trigger |
Business Hours Only
| Expression | Schedule | Use case |
| --- | --- | --- |
| */15 9-17 * * MON-FRI | Every 15 min during business hours | Monitoring during work hours only |
| 0 9-17 * * MON-FRI | Every hour during business hours | Hourly business-hours check |
| */5 8-18 * * 1-5 | Every 5 min, 8 AM – 6 PM weekdays | Extended business hours polling |
Complex & Combined Schedules
| Expression | Schedule | Use case |
| --- | --- | --- |
| 0 0 1-7 * MON | First Monday of every month | Monthly team meetings |
| 0 22 * * 1-5 | Weeknights at 10 PM | Overnight batch prep |
| 0 0 */3 * * | Every 3rd day | Rotating cleanup schedule |
| 0 8 1 */2 * | First day of every other month at 8 AM | Bi-monthly audits |
0 0 1-7 * MON is the classic "first Monday" trick — it restricts day-of-month to the first week AND day-of-week to Monday. Implementation caveat: Quartz-style cron treats both fields being restricted as AND (fires only when both match — the first Monday). Standard Vixie cron treats it as OR (fires on any Monday OR any day 1–7). Verify behavior on your target platform before relying on it.
Where to Use Cron Expressions
The same 5-field cron syntax shows up in nearly every scheduler: Linux crontab, GitHub Actions (schedule: trigger), AWS EventBridge / CloudWatch Scheduled Rules, Google Cloud Scheduler, Azure Functions timer triggers, Kubernetes CronJob resources, Vercel Cron Jobs, and Netlify Scheduled Functions. The expression you write for one works in all of them — there is no dialect to learn beyond the platform-specific extensions (L, W, #), which most schedulers reject anyway.
Tips for Writing Cron Expressions
- Use a visual builder when you're unsure — the CodeScrub Cron Generator shows your expression in plain English with the next several run times.
- Always test with "next 5 runs" before deploying. A schedule that looks right can quietly fire at 3 AM on the 31st of a month that doesn't have one.
- Stagger your jobs. Don't schedule everything at
0 0 * * *or you'll create a thundering herd at midnight that knocks over your database. - Prefer named days (
MON-FRI) over numbers (1-5). It's faster to read in a code review. - Document every cron expression with a comment next to it. Your future self — or the on-call engineer at 2 AM — will thank you.
Bookmark this page
This is a working reference, not a one-time read. Save it for the next time you need to schedule something. If you want to build an expression visually and see the next five run times instantly, the CodeScrub Cron Generator explains any expression in plain English.