Cron Interpreter - interpret cron schedules online
At 0 minutes past the hour, every 6 hours, every day.
Next runs · UTC
- —
- —
- —
- —
- —
Calendar
September 2026 · UTC
0 runs
About this tool
How a scheduler interprets cron
Each field is an independent constraint. The scheduler walks forward in time and at every minute checks: does the current minute match field 1? Does the hour match field 2? And so on. If all fields match, it fires.
The exception is the day-of-month vs day-of-week pair. Standard cron OR-joins them: 0 0 1 * 1 fires on the 1st of every month OR on every Monday - usually not what you want. Quartz / AWS forbid both being values to avoid this ambiguity, requiring ? in one of them.
Common interpretation pitfalls
- Both day fields restricted - see above. The interpreter flags it.
- Step doesn't wrap -
50-10/20is invalid; cron does not wrap step ranges across the field boundary. - Sunday is 0 or 7 - both work in Unix cron; only 1-7 (Sunday=1) in Quartz.
- February 30 - a syntactically valid expression that never fires. The interpreter shows an empty calendar.
- Daylight saving - the spring-forward hour is skipped (no fires there); the fall-back hour is repeated (fires twice). Most schedulers don't alert you.
Interpreter vs reader vs decoder
These are different angles on the same task. The cron reader focuses on the English sentence. The cron decoder focuses on per-field meaning. The cron interpreter on this page focuses on what a scheduler will actually do, including edge cases. All three share the same parser; pick the framing that matches how you think.
Examples
- 0 18 * * *Every day at 18:00
- 0 */5 * * *Every 5 hours
- 0 18 * * 1-5Weekdays at 18:00
- 0 0 1 * *Once a month, on the 1st at midnight
Cheatsheet
Full cheatsheet| Field | Req. | Range | Wildcards |
|---|---|---|---|
| minute | yes | 0-59 | , - * / |
| hour | yes | 0-23 | , - * / |
| day of month | yes | 1-31 | , - * / |
| month | yes | 1-12 or JAN-DEC | , - * / |
| day of week | yes | 0-6 or names; some dialects use 0-7 or 1-7 — see Dialects | , - * / |
Frequently asked questions
Syntax
How do I interpret a cron expression?
Read five-field cron left to right as minute, hour, day-of-month, month, and day-of-week. Matching fields are combined, except Vixie cron ORs day-of-month and day-of-week when both are restricted. CronTool adds a sentence, five next runs, and a calendar.
How does the interpreter treat ??
In supported extended dialects, ? leaves day-of-month or day-of-week unspecified while the other day field defines the schedule. It is not standard Vixie syntax.
Timing
How does the interpreter expand a stepped minute constraint?
Interpret it as every 5 minutes, starting at minute 0 of each hour. The minute field expands to 0, 5, 10, through 55. Expression: */5 * * * *
Every 5 minutes guideWhat changes when the minute constraint is literal?
A literal selects one clock value. 5 * * * * means minute 5 of every hour, while every 5 minutes requires the step */5 * * * *. Expression: 5 * * * *
How do I verify the interpreter's English sentence?
Compare the sentence with the five-run list and navigable calendar in the selected timezone. Concrete timestamps can reveal month gaps, weekday mismatches, and DST boundaries hidden by terse wording.
Days and months
How is the day-of-month vs day-of-week conflict interpreted?
In Standard mode, CronTool warns using Vixie semantics: restricted day fields are ORed. It does not validate a chosen dialect; consult the matrix because other schedulers use different rules.
Day-field rulesWhat does 0 9 1 * 1 mean in Unix cron?
It means 09:00 on every Monday OR on day 1 of every month. Unix cron does not AND the two restricted day fields. Expression: 0 9 1 * 1
Unix day rulesHow is LW interpreted in an extended cron?
LW in day-of-month means the final Monday-to-Friday day of the month. For example, 0 0 9 LW * ? runs then at 09:00:00. Expression: 0 0 9 LW * ?
Why is field-based interpretation not elapsed-time scheduling?
Steps select values within a field and then reset. 0 0 */7 * * means dates 1, 8, 15, 22, and 29 each month, not every seven elapsed days. Expression: 0 0 */7 * *
What if the interpreted sentence describes an impossible date?
0 0 30 2 * is syntactically shaped like a schedule but has no matching calendar date because February 30 never exists. The next-run view stays empty. Expression: 0 0 30 2 *
Timezones and DST
What timezone does the interpreter assume?
The timezone picker selects the IANA zone used for CronTool's run list and calendar. Production behavior depends on the scheduler; Vixie-compatible crontabs may support CRON_TZ, while Vercel uses UTC.
Platforms
How are extended cron expressions interpreted?
Extended mode exposes leading seconds and trailing year fields and accepts additional special forms, but it is generic rather than scheduler-specific. Quartz requires seconds and permits an optional year; AWS uses minute-first fields with a required year.
Dialect matrixHow should I interpret Sunday numbers across dialects?
Vixie cron accepts 0 or 7 for Sunday, while Quartz uses 1. CronTool has no dialect selector, so consult the dialect matrix before trusting a numeric weekday.
Day numbering by dialectDebugging
Can the interpreter tell why a command did not run?
No. It interprets schedule semantics but cannot inspect PATH, environment variables, permissions, logs, daemon state, or command output, and it never runs commands.
Runtime debugging checklistWrite the cron here. Run it on Crontap.
Point Crontap at any URL. Pick any cron. Done.
WordPress, Shopify, Railway, Cloud Run, Vercel, HubSpot, Ghost, your own box. If it answers HTTP, Crontap can drive it on a clock you can read, in the timezone that actually matters, and page you when something breaks.
1.9k+ teams · Free forever tier · No credit card