Tool 022 / dev / free / runs locally
Cron Expression Explainer
Paste a standard 5-field cron expression (minute, hour, day of month, month, day of week) to get a plain-English explanation and a list of the next run times based on your browser's local clock. Supports step values, ranges, lists, and wildcards. Parsing happens entirely in your browser, so internal schedule strings never leave your device.
In plain English
at minute 0, 15, 30, 45 past hour 9, 10, 11, 12, 13, 14, 15, 16, 17, on Monday, Tuesday, Wednesday, Thursday, Friday
Next 5 run times (your local time zone)
- Mon, Jul 27, 2026, 09:00 AM
- Mon, Jul 27, 2026, 09:15 AM
- Mon, Jul 27, 2026, 09:30 AM
- Mon, Jul 27, 2026, 09:45 AM
- Mon, Jul 27, 2026, 10:00 AM
How it works
Paste a five-field cron expression and this tool tells you in plain English when it fires, then lists the next five times it will actually run. The five fields are minute, hour, day of month, month, and day of week, and each one accepts a star, a single number, a range like 9-17, a comma list like 1,15,30, or a step like */15.
The schedule is not guessed from the text. Each field is expanded into the concrete set of values it matches, then the tool walks forward a minute at a time from now, testing every candidate minute against those sets, until it has collected five hits or has scanned two years ahead. That is why the upcoming runs are real dates rather than a description.
It also makes the confusing part explicit. When both day of month and day of week are restricted, standard cron treats them as OR, not AND, so 0 0 1 * 1 runs on the first of the month AND on every Monday. The explanation calls this out whenever it applies.
How to use it
- Type or paste a five-field cron expression, or click one of the presets.
- Read the plain-English explanation directly under the input.
- Check the next five run times to confirm the schedule matches what you intended.
- Adjust a field and watch the explanation and run list update as you type.
Worked examples
Input: */15 9-17 * * 1-5
Output: at minute 0, 15, 30, 45 past hour 9, 10, 11, 12, 13, 14, 15, 16, 17, on Monday, Tuesday, Wednesday, Thursday, Friday
Every 15 minutes during office hours on weekdays only.
Input: 0 0 1 * 1
Output: at 00:00, on day-of-month 1, on Monday, (day-of-month OR day-of-week, matching either is enough)
The classic trap: this fires on the first of every month AND on every Monday, not only on Mondays that fall on the first.
Edge cases and limits
- Five fields only. Six-field Quartz expressions with a seconds column, and macros such as @daily or @reboot, are rejected.
- Values must be numeric. Names like MON, FRI, JAN, or DEC are not accepted in any field.
- Day of week is 0 to 6 with 0 as Sunday. The Vixie cron extension that also allows 7 for Sunday is out of range here.
- Vendor extensions such as L, W, #, and ? for last, weekday, nth, and blank are not supported.
- Run times are computed in your browser's local time zone. A server running the same expression in UTC will fire at different wall-clock times.
- The forward scan stops two years out, so an extremely rare expression such as one that needs 29 February may show fewer than five upcoming runs.
- Daylight saving transitions are handled by the browser's date arithmetic, so a run scheduled inside a skipped hour may not appear.
Common mistakes
- Reading a restricted day-of-month and day-of-week pair as AND. Cron treats it as OR, which makes the job run far more often than intended.
- Writing 7 for Sunday, or MON for Monday, when the field wants a number between 0 and 6.
- Assuming the schedule uses your local time when the machine actually runs in UTC. Convert before you commit the crontab.
- Using */7 on the minute field and expecting an even split. It fires at 0, 7, 14, 21, 28, 35, 42, 49, 56 and then jumps back to 0, leaving a four-minute gap on the hour boundary.
Frequently asked questions
What do the five fields in a cron expression mean?+
In order: minute (0-59), hour (0-23), day of month (1-31), month (1-12), and day of week (0-6, where 0 is Sunday). An asterisk means "every value" for that field, so "* * * * *" runs every minute, and "0 9 * * 1-5" runs at 9:00 AM every weekday.
Does it support step values and ranges like */15 or 1-5?+
Yes. Step syntax (*/15 for every 15 units), ranges (1-5), and comma-separated lists (1,15,30) are all parsed, including combinations like 1-5/2. This covers the syntax used by cron, Kubernetes CronJob schedules, and most CI schedulers.
Why do the next run times look off by a few hours?+
The next-run calculation uses your browser's local time zone, but most servers and CI systems evaluate cron schedules in UTC. If the schedule was written for a UTC-based system, convert your local time to UTC first before comparing it against the times shown here.
What does */15 actually mean in a cron expression?+
It is a step over the full range of that field. In the minute field it expands to 0, 15, 30, 45. Steps always count from the start of the range, so 5-20/5 means 5, 10, 15, 20 rather than every fifth minute of the hour.
Are the upcoming run times in UTC or my local time zone?+
Local. They are computed with your browser's clock and time zone. If the job runs on a server set to UTC, shift the times by your current offset, remembering that the offset changes across daylight saving.
Related tools
More Developer tools that run entirely in your browser.