Cron Expression Validator & Explainer

Validate cron expressions and see human-readable explanations

Validate Cron Expression

Minute
*
0-59
Hour
*
0-23
Day
*
1-31
Month
*
1-12
Weekday
*
0-6

Common Cron Patterns

Click any pattern to load it into the validator:

* * * * *
Every minute
*/5 * * * *
Every 5 minutes
*/15 * * * *
Every 15 minutes
0 * * * *
Every hour (on the hour)
0 0 * * *
Daily at midnight
0 9 * * *
Daily at 9:00 AM
0 9 * * 1-5
Weekdays at 9:00 AM
0 0 * * 0
Weekly on Sunday at midnight
0 0 1 * *
Monthly on the 1st at midnight
0 0 1 1 *
Yearly on Jan 1st at midnight
30 4 * * *
Daily at 4:30 AM (backup time)
0 */2 * * *
Every 2 hours

Cron Syntax Reference

Field Order

PositionFieldValuesExample
1Minute0-5930 = minute 30
2Hour0-2314 = 2:00 PM
3Day of Month1-3115 = 15th day
4Month1-126 = June
5Day of Week0-6 (Sun-Sat)1 = Monday

Special Characters

CharacterMeaningExampleExplanation
*Any value* * * * *Every minute
,List separator0,30 * * * *At minute 0 and 30
-Range0 9-17 * * *Every hour from 9 AM to 5 PM
/Step value*/10 * * * *Every 10 minutes

Day of Week Values

ValueDayValueDay
0Sunday4Thursday
1Monday5Friday
2Tuesday6Saturday
3Wednesday

Month Values

ValueMonthValueMonthValueMonth
1January5May9September
2February6June10October
3March7July11November
4April8August12December

What Is a Cron Expression?

A cron expression is a string of five space-separated fields that defines a schedule for automated tasks. Originally from Unix systems, cron expressions are now used across operating systems, cloud platforms, CI/CD pipelines, and application frameworks to schedule recurring jobs.

The name "cron" comes from the Greek word "chronos" (time). A cron job is a scheduled task that runs automatically at specified times.

The Five Fields

Each cron expression has exactly five fields, read left to right:

minute   hour   day-of-month   month   day-of-week

For example, 30 9 * * 1-5 means "at minute 30, hour 9, any day of month, any month, Monday through Friday" — or simply "9:30 AM on weekdays."

How Wildcards and Operators Work

  • Asterisk (*) — Matches every value. * in the hour field means "every hour."
  • Comma (,) — Lists multiple values. 1,15 in the day field means "the 1st and 15th."
  • Hyphen (-) — Defines a range. 9-17 in the hour field means "9 AM through 5 PM."
  • Slash (/) — Defines a step. */15 in the minute field means "every 15 minutes."

Operators can be combined: 0-30/10 means "every 10 minutes from minute 0 to 30" (0, 10, 20, 30).

Examples with Explanations

Business Hours

ExpressionMeaning
0 9 * * 1-59:00 AM, Monday-Friday
0 9,12,17 * * 1-59 AM, noon, and 5 PM on weekdays
*/30 9-17 * * 1-5Every 30 minutes during business hours (9 AM - 5 PM, Mon-Fri)
0 8 * * 18:00 AM every Monday (weekly meeting reminder)

System Maintenance

ExpressionMeaning
0 2 * * *2:00 AM daily (nightly backup)
0 3 * * 03:00 AM every Sunday (weekly maintenance)
0 0 1 * *Midnight on the 1st of each month
0 4 * * 6,04:00 AM on weekends

Frequent Tasks

ExpressionMeaning
* * * * *Every minute
*/5 * * * *Every 5 minutes
0 */4 * * *Every 4 hours
0,30 * * * *Every 30 minutes (on the hour and half-hour)

Specific Dates

ExpressionMeaning
0 0 25 12 *Midnight on December 25th
0 9 1 1,4,7,10 *9 AM on the 1st of Jan, Apr, Jul, Oct (quarterly)
0 0 15 * *Midnight on the 15th of every month
0 12 * * 5Noon every Friday

Common Mistakes

  • Confusing day-of-week values: Sunday is 0 (not 7 in standard cron). Saturday is 6. Weekdays are 1-5.
  • Using 24 for midnight: Hour values are 0-23. Midnight is hour 0, not 24.
  • Month starts at 1: January is 1, not 0. December is 12.
  • Both day fields set: If both day-of-month and day-of-week have values (not *), most cron implementations run when either matches, not both. This often causes unexpected behavior.
  • Forgetting step syntax: 5 * * * * runs at minute 5 of every hour. For "every 5 minutes," use */5 * * * *.

5-Field vs 6-Field Cron

Standard Unix cron uses 5 fields (minute through day-of-week). Some systems add a 6th field for seconds at the beginning:

FormatFieldsUsed By
5-fieldmin hour dom month dowUnix cron, most schedulers
6-fieldsec min hour dom month dowSpring, Quartz, some cloud platforms
7-fieldsec min hour dom month dow yearQuartz (optional year field)

This tool validates standard 5-field cron expressions. If your system uses 6 or 7 fields, remove the leading seconds field before validating here.

Where Cron Expressions Are Used

  • Unix/Linux crontab: The original. Edit with crontab -e.
  • GitHub Actions: Schedule workflows with on: schedule: - cron: '...'
  • AWS EventBridge/CloudWatch: Trigger Lambda functions on a schedule.
  • Kubernetes CronJobs: Schedule containerized tasks.
  • CI/CD pipelines: Jenkins, GitLab CI, CircleCI scheduled builds.
  • Application frameworks: Spring @Scheduled, Laravel scheduler, Node.js node-cron.
  • Database jobs: PostgreSQL pg_cron, MySQL Event Scheduler (similar syntax).

Frequently Asked Questions

What is a cron expression?

A cron expression is a string of five fields that defines when a scheduled task should run. The fields are: minute (0-59), hour (0-23), day of month (1-31), month (1-12), and day of week (0-6). For example, 30 9 * * 1-5 means "9:30 AM, Monday through Friday."

What does the asterisk (*) mean in cron?

The asterisk means "every" or "any value." In the minute field, * means every minute. In the month field, * means every month. The expression * * * * * runs every minute of every day.

What does */5 mean in cron?

The */5 syntax means "every 5 units." In the minute field, */5 runs at minutes 0, 5, 10, 15, etc. In the hour field, */5 runs at hours 0, 5, 10, 15, 20. The number after the slash is the step interval.

How do I schedule a cron job for every Monday at 9 AM?

Use 0 9 * * 1. The 0 is minute 0, 9 is hour 9 (9 AM), the asterisks mean any day/month, and 1 is Monday (0=Sunday, 6=Saturday).

How do I run a cron job at midnight?

Use 0 0 * * * for daily at midnight. The first 0 is minute 0, the second 0 is hour 0 (midnight). To run at midnight on specific days, modify the last three fields.

What's the difference between 0 and 7 for Sunday?

In standard cron, Sunday is 0 and Saturday is 6. Some implementations accept 7 as an alias for Sunday, but 0 is safer and more portable.

Can I use ranges and lists together?

Yes. You can combine ranges, lists, and steps: 0 9-17/2 * * 1,3,5 means "every 2 hours from 9 AM to 5 PM on Monday, Wednesday, and Friday."

What happens when day-of-month and day-of-week both have values?

Most cron implementations use OR logic: the job runs when either condition is true. 0 9 15 * 1 runs at 9 AM on the 15th of any month AND on any Monday. To avoid confusion, set one of them to *.

Does this tool send my data to a server?

No. All validation runs in your browser. Nothing is sent anywhere.

Related Tools

Privacy & Limitations

  • Client-side only. No data leaves your browser.
  • 5-field cron only. Does not support 6-field (with seconds) or 7-field (with year) formats.
  • Standard syntax. Non-standard extensions like @daily or month/day names are not supported.

Related Tools

View all tools

Cron Schedule Validator FAQ

What is a cron expression?

A cron expression is a string of five fields that defines when a scheduled task should run. The fields represent minute (0-59), hour (0-23), day of month (1-31), month (1-12), and day of week (0-6, where 0 is Sunday). For example, '30 9 * * 1-5' means 'at 9:30 AM, Monday through Friday.'

What does the asterisk (*) mean in cron?

The asterisk (*) in cron means 'every' or 'any value.' For example, * in the minute field means 'every minute,' and * in the day-of-month field means 'every day.' The expression '* * * * *' runs every minute of every hour of every day.

What does */5 mean in cron?

The */5 syntax means 'every 5 units.' In the minute field, */5 means every 5 minutes (0, 5, 10, 15, ..., 55). In the hour field, */5 means every 5 hours (0, 5, 10, 15, 20). The number after the slash is the step value.

How do I schedule a cron job for every Monday at 9 AM?

To run a cron job every Monday at 9:00 AM, use the expression '0 9 * * 1'. The fields are: 0 (minute 0), 9 (hour 9), * (any day of month), * (any month), 1 (Monday, where 0=Sunday and 6=Saturday).

What is the difference between 0 and 7 for Sunday in cron?

In standard cron, Sunday is 0 and Saturday is 6. Some cron implementations also accept 7 as Sunday for compatibility. The safest approach is to use 0 for Sunday. Days are: 0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday.

How do I run a cron job at midnight?

To run a cron job at midnight (12:00 AM), use '0 0 * * *'. The first 0 is minute 0, the second 0 is hour 0 (midnight). This runs once per day at exactly 00:00. For midnight on specific days, change the last three fields.

Can I use month and day names in cron?

Standard 5-field cron uses numbers only. Month field uses 1-12 (January-December), and day-of-week uses 0-6 (Sunday-Saturday). Some extended cron implementations accept three-letter abbreviations like JAN, FEB, MON, TUE, but this is not universally supported.

What does a range like 1-5 mean in cron?

A range like 1-5 means 'from 1 to 5, inclusive.' In the day-of-week field, 1-5 means Monday through Friday (weekdays). In the hour field, 9-17 means 9 AM through 5 PM. Ranges can be combined with steps: 1-5/2 means 1, 3, 5.

How do I run a cron job on the first day of every month?

To run on the 1st of every month at a specific time, use '0 0 1 * *' for midnight on the 1st, or '0 9 1 * *' for 9 AM on the 1st. The third field (day of month) is set to 1, and the wildcard (*) in month means every month.

What is the cron expression for every 15 minutes?

To run every 15 minutes, use '*/15 * * * *'. This runs at minutes 0, 15, 30, and 45 of every hour. Alternatively, you can use '0,15,30,45 * * * *' to explicitly list the minutes, which produces the same result.

How do I schedule a job for specific months only?

Use a list or range in the month field (4th field). For example, '0 9 1 1,4,7,10 *' runs at 9 AM on the 1st of January, April, July, and October (quarterly). Use '0 0 * 6-8 *' for every day in June through August (summer months).

What happens if day-of-month and day-of-week both have values?

When both day-of-month and day-of-week have non-wildcard values, most cron implementations run the job when EITHER condition is true (OR logic). For example, '0 9 15 * 1' runs at 9 AM on the 15th of any month AND on any Monday. This can cause unexpected behavior.

Does this tool send my cron expressions to a server?

No. All validation and explanation happens in your browser using JavaScript. Your cron expressions never leave your device. The tool works identically offline.

Request a New Tool
Improve This Tool