Cron Analyzer - analyze cron schedules and overlaps
Every 10 minutes, every hour, every day.
Next runs · UTC
- —
- —
- —
- —
- —
Calendar
September 2026 · UTC
0 runs
About this tool
What the cron analyzer checks
- Syntax - every field validated against its accepted range.
- Schedule shape - next 30+ runs plotted on a calendar.
- Dialect compatibility - which schedulers accept this expression (standard cron, Quartz, AWS, Vercel).
- Density - fires per day / week / month, with the calendar making it easy to eyeball.
- Variations - “similar crons” cross-links suggest one-step tweaks.
Analyzing multiple crons at once
Production crontabs almost never have just one entry. The multi-cron visualizer accepts every cron in your file at once and plots them on the same calendar with color-coded labels. Common things it surfaces:
- Overlaps - multiple jobs firing the same minute (often unintended).
- Bunching - many jobs at the top of the hour (load spike risk).
- Gaps - long quiet windows where you expected activity (maybe a job is misconfigured).
- Off-hours - weekend/holiday fires you didn't intend.
Analyzer vs runtime monitoring
The analyzer is static - it tells you what should happen given the cron expression. It can't tell you what actually happened (job failures, retries, drift). For runtime monitoring you need a separate tool: cronitor.io, Healthchecks, the platform-native CloudWatch / Vercel logs / Kubernetes job status, etc. The analyzer's job is to make sure the schedule is right before the runs start.
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 analyze a cron expression?
Paste the cron above. CronTool validates its fields, writes an English sentence, lists five next runs in the selected timezone, and plots the visible month. Use the multi-cron visualizer to analyze several schedules together.
What does the cron analyzer output?
It outputs editable fields with help, a plain-English sentence, lint messages, five next runs, a navigable month calendar, and Copy-as formats. It does not identify which scheduler dialect originally produced the expression.
Does the analyzer check cron field ranges?
Yes. It validates each token against its field, including minutes 0-59, hours 0-23, and day-of-month 1-31, then highlights the field that fails.
Cron field rangesTiming
Can the analyzer detect schedule overlaps?
Yes, on the multi-cron page. It overlays the visible month's runs and automatically lists up to five source pairs that fire in the same minute, including a sample time and monthly count.
Multi-cron visualizerCan the analyzer help with load distribution?
Yes. Put the schedules in the multi-cron view to expose top-of-hour bunching and overlapping pairs. Stagger fixed minutes, or use Jenkins H when Jenkins should choose a stable hashed minute. Expression: 0 * * * *
When does the analyzer warn about schedule density?
It shows an informational warning from 288 runs per day and a warning at 1,440 or more. The latter is every minute or several times a minute, depending on Extended mode. Expression: * * * * *
Days and months
Does the analyzer warn when both day fields are restricted?
Yes. In Standard mode it warns that Unix cron ORs day-of-month and day-of-week, so 0 9 1 * 1 runs on every Monday and every first of the month. Expression: 0 9 1 * 1
What does the analyzer's step-reset lint mean?
It means the step restarts at its field boundary. */2 in day-of-month restarts at day 1 each month, while a month step restarts at January; neither is a continuous elapsed-time interval. Expression: 0 0 */2 * *
How does analysis distinguish parse-valid from runnable?
CronTool separately checks fixed day/month combinations. 0 0 30 2 * parses, but its status says the expression never fires because February 30 does not exist. Expression: 0 0 30 2 *
Timezones and DST
When does the analyzer show a DST warning?
For a fixed 01:00-03:00 hour, it warns when the selected timezone has a DST transition within 60 days. The message says whether the hour may be skipped or repeated. Expression: 30 2 * * *
Timezone and DST guideHow should I read the analyzer's timezone output?
Treat the selected IANA timezone as the clock used for next runs and calendar labels. Your production scheduler may use its host zone, UTC, or its own timezone setting.
Timezone referencePlatforms
Why does the analyzer suggest Extended mode for six fields?
Six pasted fields are ambiguous in Standard mode, so the lint offers to switch to Extended before issuing other advice. Extended mode handles seconds-first or year-bearing dialects.
Dialect matrixDoes the analyzer check ?, L, W, and # by dialect?
No. CronTool parses supported forms but has no dialect selector or compatibility verdict. Consult the dialect matrix, then use Copy as to produce a target format and read any conversion caveat.
Dialect matrixDebugging
What can static cron analysis not prove?
Static analysis cannot prove that a command ran. CronTool cannot see your server's PATH, environment, permissions, logs, or process state, and it never executes 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