Cron Parser

Parse cron expressions to understand when scheduled tasks will run.

Enter Cron Expression

minute (0-59) | hour (0-23) | day (1-31) | month (1-12) | weekday (0-6)

Human Readable

Runs at minute 0 at 09:00 on Monday to Friday

Field Breakdown

Minute

0

0

Hour

9

9

Day of Month

*

every

Month

*

every

Day of Week

1-5

Monday to Friday

Next 5 Run Times

Run 118/7/2026, 9:00:00 am
Run 219/7/2026, 9:00:00 am
Run 320/7/2026, 9:00:00 am
Run 421/7/2026, 9:00:00 am
Run 522/7/2026, 9:00:00 am

Example Expressions

* * * * *Every minute
0 * * * *Every hour
0 0 * * *Every day at midnight
0 9 * * 1-5Weekdays at 9 AM
*/15 * * * *Every 15 minutes

What Is a Cron Expression?

A cron expression is a compact, five-field string that tells a Unix-like scheduler exactly when to fire a recurring job. The name comes from chronos (Greek for time), and cron daemons have powered scheduled automation on Linux and macOS servers since the 1970s. Today the same syntax drives cloud functions, CI/CD pipelines, database maintenance windows, and application-level task queues.

Every cron expression contains exactly five whitespace-separated fields:

Position Field Allowed Values
1Minute0–59
2Hour0–23
3Day of Month1–31
4Month1–12
5Day of Week0–6 (0 = Sunday)

The cron parser on this page reads your expression, breaks it into those five fields, translates each one into plain English, and then walks forward minute-by-minute from the current time to display the next five scheduled run times. This makes it easy to verify that your schedule is correct before deploying it to production.

Cron Field Syntax and Matching Rules

Each field in a cron expression supports four special characters that give the syntax its expressive power. Understanding how each character is matched is the key to writing reliable schedules.

  • Asterisk (*) — matches every value in the field's range. * * * * * fires every minute of every day.
  • Step (/) — combined with a range or * to fire at regular intervals. */15 in the minute field fires at minutes 0, 15, 30, and 45. 2/3 fires at 2, 5, 8, … up to the field maximum.
  • Range (-) — selects a contiguous span of values. 1-5 in the weekday field means Monday through Friday.
  • List (,) — selects an explicit set. 8,17 in the hour field fires at 8 AM and 5 PM.

Parsing happens left-to-right: the parser splits the expression on whitespace and processes each field independently. For the month and day-of-week fields it also translates numeric values to names (e.g., month 3 becomes March, weekday 1 becomes Monday).

Step-Value Match Formula

(value − start) mod step = 0 AND value ≥ start

Where:

  • value= Current field value being tested (e.g., current minute 0–59)
  • start= Starting offset; 0 when range is *, otherwise the left side of the slash
  • step= Interval — the number after the slash (e.g., 15 in */15)

Day-of-Month vs Day-of-Week: The OR Rule

One of the most misunderstood parts of standard cron is how the day-of-month and day-of-week fields interact when both are set to non-wildcard values. This cron parser follows the same logic used by Vixie cron (the reference implementation on most Linux systems):

  • If either day-of-month or day-of-week is *, only the other field is evaluated — effectively an AND with a wildcard.
  • If both fields contain specific values (non-*), the scheduler fires when either condition is true — a logical OR.

For example, 0 0 1 * 5 fires at midnight on the 1st of every month and also at midnight every Friday, not only on Fridays that happen to be the 1st. This OR behavior surprises many developers expecting AND semantics. To guarantee a job only runs on a specific weekday, use * for day-of-month; to guarantee it runs only on a specific date, use * for day-of-week.

The cron next-run calculator on this page applies exactly this OR/AND logic when computing future fire times, so you can see the effect directly in the "Next 5 Run Times" output.

Common Cron Patterns Reference

The following table lists the most frequently used cron expressions across web development, DevOps, and data engineering workflows. Each entry shows the raw expression, its human-readable meaning, and a practical use case.

Expression Meaning Typical Use Case
* * * * *Every minuteHealth-check pings
0 * * * *Every hour on the hourHourly report aggregation
0 0 * * *Daily at midnightNightly database backups
0 9 * * 1-5Weekdays at 9 AMMorning business report emails
*/15 * * * *Every 15 minutesCache warm-up, queue polling
0 0 1 * *First day of month at midnightMonthly invoice generation
0 2 * * 0Sundays at 2 AMWeekly maintenance window
30 8,17 * * 1-58:30 AM and 5:30 PM on weekdaysTwice-daily data sync

Paste any expression from this table directly into the parser above to see its field breakdown and next scheduled runs. Knowing these building-block patterns by heart dramatically speeds up writing new schedules from scratch.

How to Use This Cron Expression Parser

This free online cron parser is designed for developers, system administrators, and DevOps engineers who need to verify scheduled tasks quickly and confidently. Here is how to get the most out of it.

  1. Type or paste your cron expression into the input box. The parser accepts any standard five-field expression and updates results in real time as you type.
  2. Read the human-readable summary in the blue gradient box. This sentence-level translation is generated from each field's parsed value and tells you exactly when the job fires in plain English. Use the Copy button to grab the description for documentation.
  3. Check the field breakdown table. Each of the five fields is shown alongside its parsed meaning. This is useful for spotting typos — for example, confirming that 1-5 in the weekday field correctly resolves to "Monday to Friday" rather than an unexpected range.
  4. Review the next five run times. The calculator walks forward from the current moment, checking each minute against the expression, and surfaces the next five matching timestamps. This is the most reliable way to confirm that a schedule will fire when you expect.
  5. Click any example expression at the bottom of the calculator to load it instantly and see how common patterns parse.

The parser validates that your expression has exactly five fields. If you enter fewer or more fields it will display a clear error message, so you can correct the expression before deploying it. This is especially helpful when migrating expressions between tools that may use six-field formats (which add a seconds field) versus the standard five-field crontab format.

Worked Examples

Weekday Business Hours Job

Problem:

Parse the expression '0 9 * * 1-5' and determine what it does.

Solution Steps:

  1. 1Split into five fields: minute=0, hour=9, dayOfMonth=*, month=*, dayOfWeek=1-5.
  2. 2Minute field '0': exact match — fires at minute 0 (top of the hour).
  3. 3Hour field '9': exact match — fires at hour 9, so the combined time is 09:00.
  4. 4dayOfMonth is '*' so the day-of-week field drives day selection. dayOfWeek '1-5' is a range: 1 (Monday) to 5 (Friday).
  5. 5Result: 'Runs at minute 0 at 09:00 on Monday to Friday' — a classic 9 AM weekday job.

Result:

Fires every weekday (Mon–Fri) at exactly 09:00 local time.

Every 15 Minutes Step Expression

Problem:

Parse '*/15 * * * *' and verify which minutes it fires.

Solution Steps:

  1. 1Split into five fields: minute=*/15, hour=*, dayOfMonth=*, month=*, dayOfWeek=*.
  2. 2Minute field '*/15': step notation with range='*', so start=0, step=15.
  3. 3Apply formula: (value − 0) mod 15 = 0. Matching values: 0, 15, 30, 45.
  4. 4All remaining fields are '*', so this fires on every hour of every day.
  5. 5Result: 'Runs every 15 minutes' — four times per hour, 96 times per day.

Result:

Fires at minutes 0, 15, 30, and 45 of every hour, every day.

First-of-Month Midnight Job

Problem:

Parse '0 0 1 * *' to understand when a monthly cleanup runs.

Solution Steps:

  1. 1Split into five fields: minute=0, hour=0, dayOfMonth=1, month=*, dayOfWeek=*.
  2. 2Minute '0': fires at minute 0. Hour '0': fires at hour 0. Combined: midnight (00:00).
  3. 3dayOfMonth '1': exact match — only on the 1st day of the month.
  4. 4dayOfWeek is '*', so day-of-month is the sole day selector (no OR ambiguity).
  5. 5month is '*': fires every month. Result: midnight on the 1st of every month.

Result:

Fires once per month at 00:00 on the 1st — 12 times per year.

Twice-Daily Weekday Sync

Problem:

Parse '30 8,17 * * 1-5' for a data sync that runs morning and evening.

Solution Steps:

  1. 1Split into five fields: minute=30, hour=8,17, dayOfMonth=*, month=*, dayOfWeek=1-5.
  2. 2Minute '30': fires at minute 30.
  3. 3Hour '8,17': comma list — fires at hour 8 and hour 17.
  4. 4Combined times: 08:30 and 17:30.
  5. 5dayOfWeek '1-5': Monday through Friday. dayOfMonth is '*', so OR rule simplifies to range match.
  6. 6Result: fires at 08:30 and 17:30 on every weekday — 10 times per week.

Result:

Fires at 08:30 and 17:30 Monday–Friday — twice daily on business days.

Tips & Best Practices

  • Always verify your cron expression in a parser before deploying — a single misplaced field can cause a job to run thousands of times more (or less) than intended.
  • Use '1-5' in the day-of-week field (Monday–Friday) instead of individual comma values to keep weekday schedules concise and readable.
  • Keep day-of-month as '*' when using day-of-week and vice versa to avoid the OR ambiguity that surprises many developers.
  • Midnight is '0' in the hour field, not '24'. The expression '0 0 * * *' fires at 00:00; '0 24 * * *' is invalid.
  • Step values like '*/5' are relative to the field minimum (0 for minutes/hours/weekdays, 1 for day-of-month and month), so '*/1 * * * *' is identical to '* * * * *'.
  • Combine a comma list with a range for complex but readable patterns: '0,30 9-17 * * 1-5' fires at :00 and :30 of every hour from 9 AM to 5 PM on weekdays.
  • For jobs that must not overlap, schedule them with enough buffer — for example, avoid scheduling a heavy database job every minute if it typically takes several minutes to complete.
  • Document your cron expressions in code comments using the human-readable description from this parser — it saves future developers (and yourself) from having to decode the syntax.

Frequently Asked Questions

An asterisk is a wildcard that matches every valid value for that field. In the minute field it means every minute (0–59); in the hour field it means every hour (0–23); and so on. When all five fields are asterisks — '* * * * *' — the job runs every minute of every day. It is the simplest way to express 'no restriction on this field'.
Standard Vixie cron uses OR logic when both day-of-month and day-of-week are non-wildcard. For example, '0 0 1 * 5' fires at midnight on the 1st of every month AND at midnight every Friday — not only on Fridays that are the 1st. To avoid this, set one of the day fields to '*'. If only day-of-month is specified (day-of-week is '*'), the job runs on that calendar date; if only day-of-week is specified, it runs on that weekday every week.
In standard cron, the day-of-week field is 0-indexed starting from Sunday: 0=Sunday, 1=Monday, 2=Tuesday, 3=Wednesday, 4=Thursday, 5=Friday, 6=Saturday. Some cron implementations also accept 7 as a second alias for Sunday. To schedule a job on weekdays only, use the range '1-5', which corresponds to Monday through Friday.
The notation '*/5' in a field means 'every 5 units starting from 0'. In the minute field it fires at minutes 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, and 55. The match formula is (value − 0) mod 5 = 0. You can also start from a non-zero offset: '3/5' would fire at 3, 8, 13, 18, … because the start is 3 and (value − 3) mod 5 = 0.
Standard Unix crontab format uses exactly five fields: minute, hour, day-of-month, month, and day-of-week. Some extended implementations (like Quartz Scheduler or AWS EventBridge) add a sixth 'seconds' field at the beginning. This parser implements the traditional five-field POSIX cron format used in crontab files on Linux and macOS. If your platform uses six fields, drop the seconds field before pasting the expression here.
The parser starts from the current time rounded up to the next full minute and then iterates forward one minute at a time, testing each candidate timestamp against all five cron fields. When a timestamp satisfies every field, it is recorded as an upcoming run. This continues until five matching times are found or one year of minutes (525,600 iterations) has been checked. The results are displayed in your local timezone using the browser's built-in date formatting.
This parser uses numeric values for all fields, consistent with the standard crontab specification. The month field accepts 1–12 and the weekday field accepts 0–6; the parser then translates those numbers to names (January–December, Sunday–Saturday) in the human-readable output. If your platform supports named values like 'MON' or 'JAN', convert them to their numeric equivalents before parsing here.

Sources & References

Last updated: 2026-06-05

💡

Help us improve!

How would you rate the Cron Parser?

<>

Editorial Note

MyCalcBuddy Editorial Team

This page is maintained as an educational calculator reference.

Source

Formula Source: Standard Mathematical References

by Various

UpdatedLast reviewed: May 2026
CheckedFormula checks are based on standard references and internal QA review.