Cron tools › Explain / Test
Cron expression parser
Type or paste a cron expression. The parser explains it in a sentence, shows what each field means, and lists the next times it fires in the time zone you pick — with daylight-saving gaps flagged instead of silently skipped.
Runs
Try one
How to use the cron parser
- Type or paste an expression into the box. It is read as you type; there is no Run button.
- Check the Dialect. Unix cron is the default. Paste an AWS
cron(…), a six-field Quartz or Spring expression or a JenkinsHspec and the dialect switches to match. - Pick the Time zone the scheduler runs in. The run list shows that zone's wall-clock time and the same moment in UTC.
- Read the sentence at the top, then the per-field breakdown underneath it. Warnings about things that are legal but probably wrong —
* 9 * * *running sixty times, an uneven*/7— appear under the fields. - Use Copy link to share the exact expression, dialect and zone; the link opens this page with them filled in.
What the five fields mean
| Field | Allowed values | Example | Means |
|---|---|---|---|
| Minute | 0-59 | */15 | every 15 minutes (0, 15, 30, 45) |
| Hour | 0-23 | 9-17 | from 09:00 through 17:59 |
| Day of month | 1-31 | 1,15 | the 1st and the 15th |
| Month | 1-12 or JAN-DEC | */3 | January, April, July, October |
| Day of week | 0-7 or SUN-SAT | 1-5 | Monday to Friday (0 and 7 are both Sunday) |
Quartz and Spring put a seconds field in front, Quartz allows a trailing year, and AWS EventBridge requires the year. The cron cheat sheet lays the dialects side by side.
The rule that surprises everyone: day-of-month OR day-of-week
In Linux cron, when both day fields are restricted the job runs when either matches.
0 0 1 * 1 runs on the 1st of every month and on every Monday, not only on Mondays that fall on the 1st.
The exception is a field that starts with *: 0 0 */2 * 1 is read as "odd-numbered days that are also Mondays".
Kubernetes counts only a bare * as unrestricted, so the same string means something else there, and Jenkins, Spring
and Azure always require both. The parser applies the rule of the dialect you select and says which one it used.
FAQ
Why does my run list show a "DST gap" flag?
The wall-clock time does not exist on that date because the clocks jumped forward. Vixie cron and cronie run a fixed-time job
straight after the jump, which is where the parser puts it; other schedulers skip that run or shift it by an hour.
A job with * in its minute or hour field simply has no runs in the missing hour.
What time zone does cron use?
The system time zone of the machine running the cron daemon, unless the crontab sets CRON_TZ (cronie).
Hosted schedulers differ: GitHub Actions and AWS EventBridge rules use UTC, Kubernetes uses the controller's zone unless
.spec.timeZone is set.
Is 0 or 7 Sunday?
Both, in Linux cron, Spring, node-cron and Jenkins. Kubernetes, Azure and Celery accept only 0. Quartz, AWS and Cloudflare
number the week from 1 = Sunday to 7 = Saturday, so a 1-5 copied from Linux means Sunday–Thursday there.
Is anything I type sent to a server?
No. Parsing and the run calculation happen in this page's JavaScript. The expression lives only in the address bar (after the
#, which browsers never send) so that a copied link reopens it.