CRON Expression Cheat Sheet & Quick Reference
Find the CRON expression you need fast. Browse our cheat sheet with common patterns, syntax rules, and examples. A quick reference for developers and system administrators.
| Character | Name | Description | Example |
|---|---|---|---|
* | Asterisk | Any value - matches all possible values | * * * * * = every minute |
, | Comma | Value list separator - specifies multiple values | 0,15,30,45 * * * * = every 15 minutes |
- | Hyphen | Range of values - specifies a range | 0 9-17 * * * = 9 AM to 5 PM |
/ | Slash | Step values - specifies increments | */5 * * * * = every 5 minutes |
? | Question Mark | No specific value (alternative to *) | 0 0 ? * * = daily at midnight |
L | L Character | Last day of month or last weekday | 0 0 L * * = last day of month |
W | W Character | Nearest weekday to specified day | 0 0 15W * * = nearest weekday to 15th |
# | Hash | Nth occurrence of weekday | 0 0 * * 1#2 = 2nd Monday |
Minute
0-59Minute of the hour
Hour
0-23Hour of the day
Day of Month
1-31Day of the month
Month
1-12Month of the year
Day of Week
0-6Day of the week (0=Sun)
Basic Patterns
* * * * *Every minute
Frequent tasks, testing
*/5 * * * *Every 5 minutes
Regular polling, monitoring
*/10 * * * *Every 10 minutes
Periodic checks
*/15 * * * *Every 15 minutes
Quarter-hour tasks
*/30 * * * *Every 30 minutes
Half-hourly tasks
0 * * * *Every hour
Hourly reports, syncs
0 */2 * * *Every 2 hours
Bi-hourly tasks
0 */4 * * *Every 4 hours
Regular intervals
0 */6 * * *Every 6 hours
Four times daily
0 */12 * * *Every 12 hours
Twice daily
Daily Patterns
0 0 * * *Daily at midnight
Daily resets, backups
0 6 * * *Daily at 6 AM
Morning tasks
0 9 * * *Daily at 9 AM
Business start
0 12 * * *Daily at noon
Midday tasks
0 18 * * *Daily at 6 PM
End of day
0 23 * * *Daily at 11 PM
Night tasks
Weekly Patterns
0 0 * * 0Weekly on Sunday
Weekly maintenance
0 0 * * 1Weekly on Monday
Start of week
0 9 * * 1Monday at 9 AM
Weekly meetings
0 0 * * 5Weekly on Friday
End of week
0 0 * * 6Weekly on Saturday
Weekend tasks
Weekdays Patterns
0 9 * * 1-5Weekdays at 9 AM
Business hours
0 17 * * 1-5Weekdays at 5 PM
End of workday
0 */2 9-17 * * 1-5Every 2h, 9AM-5PM, weekdays
Business hours polling
Monthly Patterns
0 0 1 * *Monthly on 1st
Monthly reports
0 0 15 * *Monthly on 15th
Mid-month tasks
0 0 1,15 * *Twice monthly
Bi-monthly reports
0 0 L * *Last day of month
Month-end processing
Quarterly Patterns
0 0 1 1,4,7,10 *Quarterly
Quarterly reports
Yearly Patterns
0 0 1 1 *Yearly on Jan 1
Annual tasks
0 0 1 6 *Yearly on Jun 1
Mid-year tasks
| Frequency | CRON Expression | Human Readable |
|---|---|---|
| Every minute | * * * * * | Every minute of every hour of every day |
| Every 5 minutes | */5 * * * * | At minutes 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55 |
| Every hour | 0 * * * * | At minute 0 of every hour |
| Every day at midnight | 0 0 * * * | At 00:00 (midnight) every day |
| Every day at 9 AM | 0 9 * * * | At 09:00 every day |
| Every Monday at 9 AM | 0 9 * * 1 | At 09:00 on every Monday |
| Weekdays at 9 AM | 0 9 * * 1-5 | At 09:00 on Monday through Friday |
| First of every month | 0 0 1 * * | At 00:00 on day 1 of every month |
| Every Sunday | 0 0 * * 0 | At 00:00 on every Sunday |
| Yearly on Jan 1 | 0 0 1 1 * | At 00:00 on January 1st |
- •Use
*/Nfor regular intervals (e.g.,*/15for every 15 minutes) - •Combine ranges and lists:
0 9-12,14-17 * * 1-5for business hours - •Day of month and day of week are OR conditions - if both are specified, either can trigger
- •Test your expressions before deploying to production
How to Use This CRON Cheat Sheet
This reference collects common CRON patterns organized by frequency and use case. Instead of building expressions from scratch, find a pattern close to what you need and copy it directly.
The syntax rules section explains what each special character does. Understanding these five characters lets you modify any pattern or build custom expressions: asterisk (*), comma (,), hyphen (-), slash (/), and question mark (?).
Quick reference for special characters:
*Any value - matches everything in that field,Value separator - specifies multiple discrete values-Range - specifies a continuous span of values/Step - specifies increments within a rangeSearch filters patterns by CRON expression, description, use case, or category. Type "hourly" to see all hourly patterns, or "Monday" to find Monday-specific schedules.
When You'd Actually Use This
Quick lookup during incident response
At 2 AM debugging why a job didn't run, an on-call engineer searches "daily midnight" to confirm the expression should have triggered. The cheat sheet provides instant answers without digging through documentation.
Building a new scheduling configuration
A developer setting up automated tasks browses the "Daily Patterns" section, finds "0 9 * * *" for 9 AM execution, and copies it directly instead of calculating the fields manually.
Code review for CRON expressions
A reviewer sees "0 */6 * * *" in a pull request and wants to verify it's correct. They check the cheat sheet to confirm it means "every 6 hours" before approving the change.
Writing deployment documentation
A technical writer creates setup instructions that include recommended schedules. They reference the cheat sheet to ensure all example expressions are correct and follow best practices.
Learning CRON syntax by example
A junior developer studying scheduled tasks looks at patterns like "*/15 * * * *" and "0 0 1 * *" to understand how different combinations of special characters create different schedules.
Migrating schedules between systems
An ops team moves from Windows Task Scheduler to Linux CRON. They use the cheat sheet to find equivalent expressions for their existing schedules, ensuring nothing changes during the migration.
What to Know About CRON Patterns
Field order is fixed and easy to mix up.The order is: minute, hour, day-of-month, month, day-of-week. It's not intuitive—many people expect hour before minute or day before month. Remember: smallest unit to largest (mostly).
Step values start from the minimum, not zero."*/15" in minutes gives 0, 15, 30, 45. But "10-50/10" gives 10, 20, 30, 40, 50— it starts from the range start, not zero. This matters for off-peak scheduling.
Day fields use OR logic when both specified.If you set both day-of-month (15) and day-of-week (1), the job runs on the 15th of any month AND every Monday. Use "*" in one field if you want both conditions to be required.
Some patterns look similar but behave differently."0 * * * *" (every hour at :00) vs "0 */1 * * *" (also every hour at :00) vs "* * * * *" (every minute). The middle one is redundant—*/1 is the same as *.
Pro tip: When combining ranges and steps like "0-30/10", the step applies within the range. This gives 0, 10, 20, 30—not 0, 10, 20, 30, 40, 50. The range bounds the step.
Common Questions
What's the most common CRON expression?
"0 0 * * *" (daily at midnight) and "0 * * * *" (every hour) are extremely common. For development and testing, "* * * * *" (every minute) is frequently used despite being aggressive for production.
How do I schedule something every 2 hours?
Use "0 */2 * * *". This runs at minute 0 of every 2nd hour: 12 AM, 2 AM, 4 AM, 6 AM, 8 AM, 10 AM, noon, 2 PM, 4 PM, 6 PM, 8 PM, 10 PM. For every 2 hours during business hours only, use "0 */2 9-17 * * 1-5".
What does "0 0 L * *" mean?
The "L" stands for "last" and means the last day of the month. However, this is a non-standard extension supported by some CRON implementations like Quartz. Standard Unix CRON doesn't support "L"—you'd need to use "0 0 28-31 * *" and check the date in your script.
How do I run something every weekday at 9 AM?
Use "0 9 * * 1-5". This breaks down as: minute 0, hour 9 (9 AM), any day of month, any month, days 1-5 (Monday through Friday). It's one of the most common business scheduling patterns.
Can I combine multiple times in one expression?
Yes, use commas to list specific values. "0 9,14,17 * * *" runs at 9 AM, 2 PM, and 5 PM daily. "0 9 * * 1,3,5" runs at 9 AM on Monday, Wednesday, and Friday. You can combine this with ranges: "0 9-12,14-17 * * 1-5" for business hours.
What's the difference between daily and every 24 hours?
There's no practical difference in CRON—"0 0 * * *" runs once per day at midnight. CRON is calendar-based, not interval-based. There's no way to say "24 hours after the last run"—it's always tied to clock time.
How do I schedule quarterly tasks?
Use "0 0 1 1,4,7,10 *" which runs at midnight on January 1st, April 1st, July 1st, and October 1st—the first day of each quarter. For end-of-quarter, you'd need to handle the varying last dates in your script.
Other Free Tools
CRON Expression Generator
Free CRON Expression Generator
CRON Expression Validator & Explainer
Validate & Understand CRON Expressions
CRON to English Translator
CRON to English Translator
English to CRON Expression Converter
English to CRON Expression Converter
CRON Expression Tester (Next Run Times)
CRON Expression Tester - See Next Run Times
ASCII to Hex Converter
ASCII to Hex Converter: Text to Hexadecimal Translator
Barcode Generator
Free Barcode Generator
Binary to Text Converter
Binary to Text Converter
Free Printable Calendar Maker
Create & Print Your Custom Calendar
Pie Chart Maker
Free Pie Chart Maker Online