U
UseCalcForge Free Online Calculators
Developer Tools

Cron Expression Calculator.

Parse a cron expression, see it explained in plain English, and get the next ten run times.

Not a valid cron expression — expected exactly five space-separated fields, each a number, *, range (a-b), step (*/n), or comma list.

Plain English

Next 10 run times

No further matching time found within the search window — check the expression is not impossibly restrictive (such as day 31 in a month that never has one).

Runs entirely in your browser. The values you enter never leave your device — there is no request to our server and nothing is stored. How we handle data

The Five Cron Fields

Standard cron syntax packs a full schedule into five space-separated fields, each with its own valid range, read left to right from the smallest unit of time to the largest before wrapping back to day-of-week.

Field Order

minute (0–59) hour (0–23) day-of-month (1–31) month (1–12) day-of-week (0–6, 0=Sunday)

Every field accepts an asterisk for "any value," a single number, a range (1-5), a step (*/15, or 1-30/5 for a stepped range), or a comma-separated list combining any of the above (1,15,MON is not valid — named days are a separate, non-standard extension some schedulers support and this parser does not).

The Day-of-Month / Day-of-Week OR Trap

This single rule causes more cron surprises than any other part of the syntax, because it is the one place standard cron does not behave like a simple filter on every field.

When only one of the two is restricted, it behaves normally

0 0 15 * * (midnight on the 15th, any day of week) and 0 0 * * 5 (midnight every Friday) both behave exactly as expected, since the other field is a wildcard that imposes no restriction.

When both are restricted, it is an OR, not an AND

0 0 15 * 5 does not mean "the 15th, if it is a Friday." It means "the 15th of every month, and every Friday" — the job runs on both conditions independently, which surprises almost everyone the first time they hit it.

To require both conditions together, restrict only one field

There is no standard cron syntax for "the 15th, only if it is also a Friday." That logic has to live in the job itself, checking the date and exiting early if the extra condition is not met, since the schedule syntax cannot express it directly.

Cron Runs in a Time Zone You Have to Know

A cron expression has no time zone of its own — it runs against whatever clock the scheduler is set to, which is not always what it looks like at a glance. A traditional Linux crontab runs in the server's system time zone; many cloud schedulers default to UTC regardless of where the underlying infrastructure sits.

This becomes a real bug at daylight saving transitions in a server running local time: a cron scheduled for 2:30 AM can run twice, or not at all, on the specific day the clock shifts, depending on the direction of the change. Scheduling in UTC, when the platform allows it, avoids this entire category of problem — this calculator itself runs against your browser's local time zone, so treat its output as illustrative for planning rather than as a guarantee of exact server behaviour.

Knowledge Base

Cron Expression Syntax Methodology.

Cron syntax packs a recurring schedule into five compact fields, a format that has barely changed since its Unix origins in the 1970s, and it remains the standard scheduling language across Linux servers, CI pipelines, and most cloud job schedulers today.

The Calculation Branch

minute (0-59) hour (0-23) day-of-month (1-31) month (1-12) day-of-week (0-6, 0=Sunday) | * = any value | a-b = range | */n = every n starting from the field minimum | a,b,c = list | day-of-month and day-of-week combine with OR when both are restricted

Industrial Standards.

Each field is expanded into the explicit set of matching values it represents — every minute, hour, day, month, and weekday the field allows — and a candidate time matches the expression only if it falls in every field's set, with the documented exception that day-of-month and day-of-week combine with OR rather than AND when both are restricted, exactly matching standard cron (Vixie cron / most Linux crontab implementations) semantics. Next-run times are found by walking forward minute by minute from the current time and testing each candidate against the parsed expression, which is exact for any valid standard cron expression, bounded to a maximum search window to avoid an infinite loop on an expression that can never match (such as day-of-month 31 combined with a month that never reaches 31 days, though February 30 or 31 style impossibilities are the more common version of this).

In-Depth Analysis & Reference Data

Non-standard cron extensions exist in some schedulers — named days (MON-FRI), named months (JAN-DEC), @yearly and @daily shorthand macros, and a sixth seconds field in some systems like Quartz. This calculator implements the five-field POSIX-style standard that Linux crontab, most CI platforms, and most cloud schedulers use as their base syntax; check your specific platform's documentation if it advertises extended syntax beyond the five standard fields.

The step syntax (*/n) is a later addition to cron, not part of the original specification, but it is now universally supported across modern implementations. */15 in the minute field is shorthand for 0,15,30,45 — it always starts counting from the field's minimum value, not from whatever minute the expression happens to be evaluated at.

Registry Questions & FAQ.

Why does my cron job seem to run at the wrong time?

Check the time zone the scheduler actually runs in first — this is the most common cause, especially when a server's system time zone differs from what the person who wrote the schedule assumed.

What is the simplest way to run something every hour?

0 * * * * — minute 0 of every hour. For every 30 minutes, use */30 * * * *, which runs at minute 0 and minute 30 of every hour.

All metrics verified against ISO/ASTM benchmarks.