Developer Tools · Cron overlap check
Check which cron jobs overlap in time
Paste one job per line: the cron expression, how long it runs, and a name. The timeline and the list of clashing runs update as you type. All times are UTC.
Run time as 10m, 90, 2h or 1h30m. Numbers, lists, ranges and */step only; lines starting with # are skipped.
This check runs in your browser tab and covers one day, up to 50 lines. For a whole file and 30 days to 1 year, upload it below.
Overlaps on Sun 27 Sep 2026
00:00 to 06:00 UTC
- Jobs
- 3
- Runs that day
- 121
- Overlapping runs
- 52
Clashing pairs
- backup-db and report-export48 overlaps · first 00:00–00:10 UTC
- backup-db and nightly-etl3 overlaps · first 02:30–02:40 UTC
- report-export and nightly-etl1 overlap · first 03:00–03:15 UTC
Full planner: upload a file, download the CSV set
For all your jobs and a longer window, upload a CSV or TXT file. The planner expands every schedule from a UTC start date you choose over 30 days, 90 days or 1 year and returns four files.
- CSV or TXT, up to 10,000 schedules per job
- Columns:
name,schedule,duration_minutes - Free account needed · 3 free jobs a day
- Encrypted source · result kept for 24 hours
Free: 3 jobs a dayPro: up to 200 jobs a day · €12.99/month or €89.99/year
or drop it here
What you get
- result.csvEvery run in UTC:
Job,Next run UTC,Duration minutes - collisions.csvOne row per clashing pair:
Job A,Job B,Overlap UTC - findings.csvOne warning per overlap
- manifest.jsonThe source that was processed and the totals: runs, collisions, horizon days
Job A,Job B,Overlap UTC backup-db,report-export,2026-09-27T00:00:00.000Z report-export,backup-db,2026-09-27T00:15:00.000Z backup-db,report-export,2026-09-27T01:00:00.000Z
Upload file layout:
name,schedule,duration_minutes backup-db,*/15 * * * *,10 report-export,0 * * * *,20 nightly-etl,30 2 * * *,45
How overlaps are counted
- Five numeric fields. Minute, hour, day of month, month, weekday. Use
*, numbers, lists such as1,15, ranges such as1-5and*/step. Weekday 0 and 7 both mean Sunday. MON, @daily, Quartz fields and seconds are not accepted, and the check names the token it could not read. - Day of month and weekday. If both fields are restricted, a day matches when either one fits, as in standard cron. If one of them is
*or*/step, both must fit. - Run windows. A run occupies its start up to, but not including, start plus duration. A job ending at 03:15 does not clash with one starting at 03:15. A duration of 0 is a point in time and never counts.
- Pairs, not jobs. Each clashing pair of runs is counted once, so one long run that covers three short ones adds three. Runs of the same job are not compared with each other; the paste check lists a job that runs into its own next start separately.
- UTC only. Named timezones and daylight-saving shifts are not simulated. Convert local-time schedules to UTC first.
- Size. The full planner stops with a message if the file expands to more than 50,000 runs; shorten the horizon or split the file.
Which job to move, and by how much, stays your decision. A common fix is to shift one start minute, for example from 0 * * * * to 25 * * * *, and check again.
Questions before you run it
What does a pasted line need to look like?
Five numeric cron fields, then the run time, then an optional name, for example */15 * * * * 10m backup-db. The run time can be written as 10m, 90, 2h or 1h30m; a plain number means minutes. Lines starting with # are skipped.
Does the paste check upload my jobs?
No. The paste check runs in this browser tab and covers one UTC day. The file upload goes to the WoluTools server, needs a free account and covers 30 days, 90 days or 1 year.
Which cron syntax is accepted?
The five-field numeric form: *, plain numbers, comma lists, ranges and */step. Weekday 0 and 7 both mean Sunday. Named tokens such as MON or @daily, Quartz fields and seconds are not accepted; the check names the token it could not read instead of guessing.
How is an overlap decided?
Each run occupies the time from its start up to, but not including, its start plus its duration. Two runs of different jobs overlap when those windows share at least one moment, so a job ending at 03:15 does not clash with one starting at 03:15. A duration of 0 is a point in time and never counts as an overlap.
Why is everything in UTC?
Runs are counted from an explicit UTC date, which keeps the result reproducible. Named timezones and daylight-saving shifts are not simulated, so convert a local-time schedule to UTC first.
What does the uploaded CSV or TXT need to look like?
One schedule per row with a name or job column, a schedule or cron column and a duration_minutes or duration column, up to 10,000 schedules. An unsupported token stops the job with a message that names it.