Skip to content
Everyday Utilities Free • No signup • Instant results

Cron Expression Helper

Build and decode cron expressions with human-readable descriptions.

About the Cron Expression Helper

The Cron Expression Helper translates cryptic 5-field (or 6-field) cron expressions into human-readable descriptions and shows the next several scheduled run times. Cron is the standard scheduling syntax used by Linux cron jobs, Kubernetes CronJobs, AWS EventBridge, GitHub Actions, Quartz Scheduler, and dozens of other automation platforms. A single typo in a cron expression can mean a job runs at the wrong time — sometimes catastrophically (think 3 AM backups that never run, or hourly jobs that fire every minute).

The classic cron expression 0 9 * * 1-5 reads “run at 9:00 AM, Monday through Friday” — but it is not obvious from the syntax. This tool tells you exactly what an expression means, breaks down each field's meaning, and lists the next 5 times the job will fire, so you can verify before deploying.

Cron fields (in order) are: minute (0-59), hour (0-23), day of month (1-31), month (1-12), and day of week (0-6, where 0 is Sunday). Each field can be a single value, a list (comma-separated), a range (hyphenated), a step (slash), or an asterisk (every). The extended 6-field format adds a seconds field at the front, used by Quartz and some other schedulers.

How It Works

The tool splits the cron expression on whitespace and validates that it has the expected number of fields (5 for standard, 6 for extended with seconds). Each field is then interpreted individually using a field-explanation function that handles the five cron syntaxes: asterisk (* = every), step (*/N = every N), list (1,3,5), range (1-5), and single value (0).

A natural-language summary is built by combining the field explanations: the minute and hour fields produce a time phrase, the day-of-month and day-of-week fields produce a day phrase, and the month field produces a month qualifier. Common patterns (weekdays 1-5, weekends 0,6) are recognized and described in plain English.

To compute the next run times, the tool walks forward minute-by-minute from the current time, checking whether each minute matches all five cron fields. This is O(n) in the number of minutes until the next match, which is fast enough for typical cron expressions (the next match is usually within a day). A safety counter caps the search at 100,000 minutes (~70 days) to prevent infinite loops on impossible expressions.

Worked Examples

The default 0 9 * * 1-5 is explained as “Runs at 09:00 on weekdays (Monday-Friday).” The field breakdown shows: Minute=0, Hour=9, Day of Month=*, Month=*, Day of Week=1-5. The next 5 runs are computed from the current time, showing the upcoming weekdays at 9:00 AM. This is the standard cron expression for a weekday morning job.

Try */5 * * * * (every 5 minutes), which the tool explains as “Runs every minute of every hour, every 5 minutes” and shows the next 5 runs at 5-minute intervals. This is a common expression for health checks and polling jobs.

For a more complex expression like 0 0 1 1 * (midnight on January 1st, once a year), the tool explains “Runs at 00:00 on day 1 of the month in month 1” and shows the next run as the upcoming January 1st. This is the classic “New Year's job” pattern used for annual reports and renewals.

When to Use This Tool

  • Verifying cron expressions before deploying scheduled jobs to production.
  • Debugging why a cron job runs at unexpected times.
  • Translating between cron syntax and human-readable schedules for documentation.
  • Learning cron syntax by experimenting with different expressions.
  • Generating cron expressions for AWS EventBridge, GitHub Actions, or Kubernetes CronJobs.
  • Documenting scheduled job frequency for ops runbooks.
  • Comparing cron expressions to find scheduling conflicts (two jobs running at the same time).

Limitations & Disclaimer

This tool interprets cron expressions using standard Vixie cron semantics. Some implementations (Quartz, Spring, AWS EventBridge) have extensions or different defaults (e.g., AND vs OR for day-of-month/day-of-week, ? character, L for last day, # for nth weekday). The tool does not interpret named days/months (SUN, JAN) — use numeric values. Timezone is assumed to be the browser's local time; cron jobs on servers typically run in UTC. The next-runs computation walks minute-by-minute and may be slow for expressions with rare matches (e.g., once a year). The tool does not validate that ranges are sensible (e.g., 0 25 * * * is invalid because hour 25 does not exist, but the tool will not flag it). See our disclaimer for full terms.

Frequently Asked Questions

What is the difference between 0 and 7 for Sunday?

Both 0 and 7 represent Sunday in the day-of-week field. The original Unix cron used 0; the Vixie cron extension added 7 for symmetry (so you could write 1-7 for Monday through Sunday). Most modern cron implementations accept both. Names (SUN, MON, TUE) are also accepted by most implementations.

Why does my cron expression run at the wrong time?

The most common cause is a timezone mismatch. Cron uses the server's local timezone by default, which may be UTC (typical for cloud servers) or your local time (typical for development machines). Always check the server's timezone when debugging cron schedules. Set TZ=UTC in the crontab to force UTC.

What is the difference between day-of-month and day-of-week when both are set?

In standard cron, when both day-of-month and day-of-week are specified (not *), the job runs when EITHER matches (OR logic). So <code>0 0 1 * 0</code> runs at midnight on the 1st of the month OR on Sunday. Some implementations (Quartz) use AND logic instead. Always check your scheduler's documentation.

Can I use names like MON, TUE for days?

Yes, most modern cron implementations accept three-letter day names (SUN, MON, TUE, WED, THU, FRI, SAT) and month names (JAN, DEC). The tool does not interpret names &mdash; it passes them through as-is &mdash; but your scheduler will translate them. Use numeric values if you need exact behavior across implementations.

What does the '?' character mean?

In some cron implementations (notably Quartz), <code>?</code> means &ldquo;no specific value&rdquo; for the day-of-month or day-of-week field, used when you want to ignore one of them. Standard Unix cron does not support <code>?</code> &mdash; use <code>*</code> instead. This tool treats <code>?</code> the same as <code>*</code> for matching purposes.

Is my cron expression uploaded anywhere?

No. The expression is parsed entirely in your browser using JavaScript. Your scheduled job configurations never leave your device.

Last updated: July 21, 2026  ·  Author: HT99 Tools Editorial Team  ·  Reviewed by: HT99 Tools Editorial Team