Cron Reader - translate any cron expression to plain English
Every 15 minutes, between 09:00 and 17:59, Monday through Friday.
Next runs · UTC
- —
- —
- —
- —
- —
Calendar
September 2026 · UTC
0 runs
About this tool
What the cron reader shows
- English description - derived from the same cronstrue library used by major schedulers. Example: `0 0 L * *` becomes “At 00:00, on the last day of the month”.
- Calendar of next runs - the next 30+ scheduled fires plotted in a real month view. Spot weekend runs, holiday gaps, and end-of-month anomalies instantly.
- Field-by-field decode - each field shows what it accepts and what your value resolves to.
- Validation - invalid fields highlight in red with the parser error in plain English.
- Shareable link - copy a URL with the cron pre-filled to share the decoded view with your team.
Common cron expressions, decoded
* * * * *- Every minute.*/5 * * * *- Every 5 minutes.*/15 * * * *- Every 15 minutes.0 * * * *- Every hour, on the hour.0 0 * * *- Every day at midnight.0 9 * * 1-5- Every weekday at 09:00.0 0 1 * *- On the 1st of every month at midnight.0 0 L * *- On the last day of every month at midnight (Quartz / AWS / robfig).0 0 1,15 * *- On the 1st and 15th of every month at midnight.30 8,17 * * *- At 08:30 and 17:30 every day.
See more in the full cron index or click any of these examples to view them on the calendar.
Cron reader vs cron builder
The cron reader takes an existing expression and explains it. The cron builder goes the other way - you pick the cadence, day, hour, and minute from inputs and CronTool composes the cron string. Use the reader when you have a string from a colleague, a docs page, or a legacy job; use the builder when you're writing one from scratch.
For decoding multiple cron expressions at once (a whole crontab file), the multi-cron visualizer lets you upload crontab -l output and see every schedule on the same calendar.
Supported cron dialects
The reader accepts the standard Unix 5-field syntax plus extended dialects:
- Unix crontab (
* * * * *) - AWS EventBridge / Lambda Scheduled (
* * * * ? *) - Vercel cron jobs (5 fields, UTC)
- Quartz Scheduler (6-7 fields with seconds and year)
- robfig/cron, node-cron, rufus-scheduler, ncrontab, dragonmantank/cron-expression
Toggle the extended-cron switch at the top of the page to enable seconds, year and the ? / L / W / # modifiers.
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 does the cron reader work?
CronTool validates fields with @datasert/cronjs-parser, creates the sentence with cronstrue, computes five runs with Datasert's matcher, and separately computes the visible month's calendar. It does not emulate every production scheduler.
What does each field of a cron expression mean?
CronTool's five fields are minute 0-59, hour 0-23, day-of-month 1-31, month 1-12, and day-of-week 0-7. Extended mode adds seconds 0-59 and year 1970-2099. AWS EventBridge instead documents years through 2199.
Cron field referenceWhat do *, /, ,, and - mean in a cron expression?
* is a wildcard - matches every value in the field. , is a list separator - 1,15,30 matches three values. - is a range - 9-17 matches every value from 9 through 17. / is a step - */15 means every 15th value starting from 0 (so 0, 15, 30, 45 in a 0-59 field).
What do L, W, ?, and # mean?
L means last, W nearest weekday, ? no specific day value, and # an nth weekday. They are not Vixie operators, and support varies: Quartz, AWS, and Spring document all four, while robfig/cron supports ? but not L, W, or #.
Timing
How can I translate a cron expression to plain English?
Paste it into CronTool's reader. The cronstrue sentence appears under the fields, while five next runs and the calendar help verify it. CronTool has no dialect selector, so check scheduler-specific syntax separately. Expression: 0 9 * * 1-5
Which reader wording indicates a repeating minute step?
It reads as every 5 minutes. The slash step expands to minute 0, 5, 10, and so on, rather than one run at minute 5. Expression: */5 * * * *
Every 5 minutes guideWhich reader wording indicates one fixed minute per hour?
It reads as at minute 5 of every hour. This is 09:05, 10:05, and so on, not every five minutes. Expression: 5 * * * *
Minutes past the hour guideDays and months
Can the English sentence hide the Unix day-field OR rule?
A compact sentence can be ambiguous, so check the calendar. 0 9 1 * 1 runs on every Monday OR every first day of the month under Vixie cron. Expression: 0 9 1 * 1
How does the reader explain LW?
In a supporting extended dialect, LW means the last Monday-to-Friday day of the month. 0 0 9 LW * ? reads as 09:00:00 on that day. Expression: 0 0 9 LW * ?
Why should I question “every N days” wording?
Read */7 as selected month dates 1, 8, 15, 22, and 29, not every seven elapsed days. The sequence resets at each month boundary. Expression: 0 0 */7 * *
How does the reader signal an impossible calendar sentence?
It can parse the fields, but the calendar is decisive. 0 0 30 2 * asks for February 30, so no future run appears. Expression: 0 0 30 2 *
Timezones and DST
How do I read the next-run timezone?
Use the selected IANA timezone for the displayed timestamps and calendar, then compare it with production. The English sentence itself describes clock fields without proving the scheduler's zone.
Timezone referencePlatforms
Can the reader decode extended cron expressions?
Yes, after switching to Extended mode. Pasting six fields while already in Standard mode prompts you to switch; it does not switch automatically. Extended mode is generic, so verify scheduler-specific rules separately.
Dialect matrixDebugging
Can the cron reader inspect or run my command?
No. It reads the schedule only and cannot see your server's PATH, environment, permissions, logs, or command output; it never executes commands.
Write 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