What shipped
Cron Collider is a self-contained schedule inspector for the crontab that grew one line at a time. Paste your jobs (five-field expressions or macros like @hourly, with names, ranges, steps, and day names) and it plots every run for the current week on a 7 × 24 heatmap, outlining hours where two or more jobs start on the same minute. A minute-of-the-hour strip shows the classic pileup on :00 and :30, a collisions list groups the jobs that keep landing together, and a job table gives each line a plain-English reading, runs per week, the next run, and flags (on the mark, collides, people-facing, quiet-hour). A verdict badge (SMOOTH / CLUMPY / STAMPEDE) sums up the worst same-minute pileup and how much of the schedule sits on the mark. Spread the pileup moves each crowded job to the emptiest minute it can, keeps step jobs on their cadence (*/15 becomes something like 2-59/15), and shifts people-facing jobs that fire overnight to the end of quiet hours. Copy the spread crontab (with # was: comments) or a markdown receipt. Settings save in localStorage under cron-collider-v1.
How to try
- Open the live demo (iframe on the right, or the full-page link below). The Startup crontab preset loads first with a red STAMPEDE badge: seven jobs all start at 02:00.
- Click any hour on the heatmap to see exactly which jobs fire at each minute in it.
- Hit Spread the pileup and watch the badge go green and the
:00bar disappear; Undo brings the mess back. - Try AI bot team, change the quiet hours, or paste your own crontab, then copy the spread version.
Scope trim
No time zones or DST handling, no seconds field, no @reboot, and no model of how long each job runs, so overlap means "starts on the same minute," not "runs at the same time." One week, one crontab, and suggestions you can paste.
Limitations
- Everything is evaluated in your browser's local time for the current Monday-to-Sunday week, so monthly jobs may show zero runs this week (the next-run column still finds them).
- "People-facing" is a name heuristic (notify, email, slack, sms, text, remind, digest, alert, ping, report).
- Spread only rewrites single-minute jobs and evenly stepped minute fields; lists and odd ranges are left alone, and every-minute jobs are treated as background.
Suggested next steps
- Add an estimated duration per job and show true overlap, not just same-minute starts.
- Support a schedule time zone with DST transitions, and flag jobs that run twice or never on change days.
- Import GitHub Actions
schedule:blocks or Kubernetes CronJobs directly.