{
  "title": "Cron overlap detector",
  "human_url": "https://happytails.ai/en/developer-tools/cron-overlap-detector/",
  "agent_url": "https://happytails.ai/agents/en/developer-tools/cron-overlap-detector/",
  "language": "en",
  "markdown_url": "https://happytails.ai/en/developer-tools/cron-overlap-detector.md",
  "content": "Cron overlap detector\nFind cron jobs that run at the same time, the busiest minute and jobs that start again before they finish, including what happens on daylight saving days.\nHow can we improve this tool?\nReport a problem or share an idea.\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\nHow to use Cron overlap detector\nPaste your crontab. Put # duration: 20m above a job to set how long it runs.\nChoose the start date, number of days, time zone and default run length.\nRun the check and review the overlapping pairs.\nDownload the JSON report, the CSV of overlaps or the timeline image.\nUseful next steps\nCron parser\nUnix timestamp converter\nDate difference\nHow runs are found\nHappytails.ai reads crontab lines as described in crontab(5) and cron(8) from cronie (read on 16 October 2026): five time fields with lists, ranges, steps and names, the @daily style macros, CRON_TZ, and the rule that day of month and day of week match with OR when both are restricted. Every minute of the window is checked in each job's time zone.\nDaylight saving changes\nThe window covers whole days on the clock of the chosen time zone, so a day with a clock change has 23 or 25 hours. When clocks jump forward, a job with a fixed minute and hour that falls in the skipped hour runs once right after the jump. When clocks go back, such a job is not repeated. Jobs with * in the minute or hour field follow the wall clock. Runs moved by the jump are listed in the report.\nOverlaps and limits\nA run is assumed to last its # duration: comment or the default length, so overlaps are estimates you can tune. Two jobs overlap when one starts before the other ends. @reboot jobs, RANDOM_DELAY, anacron and systemd timers are not simulated.",
  "content_format": "text/plain",
  "visibility": "public",
  "links": [
    {
      "name": "Cron parser",
      "url": "https://happytails.ai/en/developer-tools/cron-parser/"
    },
    {
      "name": "Unix timestamp converter",
      "url": "https://happytails.ai/en/developer-tools/unix-timestamp-converter/"
    },
    {
      "name": "Date difference",
      "url": "https://happytails.ai/en/date-time-tools/date-difference/"
    }
  ],
  "tool": {
    "id": "cron-overlap-detector",
    "category": "developer-tools",
    "built": true,
    "requirements": "Up to 200,000 characters, 1,000 jobs, 31 days, 200,000 runs and 5,000,000 checks of a starting run against other jobs that are still running. Everything runs on your device in a background worker. Downloads: JSON report, CSV of overlapping pairs and an SVG timeline in UTC.",
    "implementation": {
      "fields": [
        {
          "key": "start",
          "label": "Start date",
          "value": "",
          "type": "text",
          "help": "YYYY-MM-DD or YYYY-MM-DDTHH:MM in the time zone below. Leave empty for today."
        },
        {
          "key": "days",
          "label": "Days to check",
          "value": 7,
          "type": "number",
          "min": 1,
          "max": 31
        },
        {
          "key": "timezone",
          "label": "Time zone",
          "value": "UTC",
          "type": "text",
          "help": "IANA name such as Europe/Berlin. CRON_TZ lines in the crontab override it for the jobs below them."
        },
        {
          "key": "duration",
          "label": "Run length in minutes",
          "value": 5,
          "type": "number",
          "min": 1,
          "max": 1440,
          "help": "Used for every job without a # duration: comment above it."
        },
        {
          "key": "format",
          "label": "Crontab format",
          "value": "user",
          "type": "select",
          "values": [
            "user",
            "system"
          ]
        }
      ],
      "registrationFamily": "config-directive-linters",
      "inputMaxLength": 200000,
      "inputErrorCode": "CONFIG_DIRECTIVE_LINTERS_TOO_LONG_CRON",
      "note": "Simulates cron on your device minute by minute, including daylight saving changes. Up to 200,000 characters, 1,000 jobs and 31 days.",
      "experience": {
        "automatic": false,
        "single": false,
        "inputMaxLength": 200000,
        "inputMode": "text",
        "label": "Crontab",
        "placeholder": "*/15 * * * * /usr/local/bin/sync.sh\n30 2 * * * /usr/local/bin/backup.sh",
        "help": "Paste crontab lines. Add # duration: 20m above a job to set its run length. Up to 200,000 characters. Review the settings before running.",
        "action": null
      },
      "mode": "explicit",
      "interactive": false
    },
    "execution": "Browser interface",
    "api": null,
    "browser_agent": {
      "supported": true,
      "name": "run_current_tool",
      "discovery": "WebMCP on the human page in a supporting browser",
      "verification": "See audit/API-AUDIT.md; availability is not verification"
    }
  },
  "markdown": "# Cron overlap detector\n\n- Human page: https://happytails.ai/en/developer-tools/cron-overlap-detector/\n- Markdown: https://happytails.ai/en/developer-tools/cron-overlap-detector.md\n- Structured JSON: https://happytails.ai/agents/en/developer-tools/cron-overlap-detector/index.json\n- Visibility: public\n\n## Tool capabilities\n\n| Property | Value |\n| --- | --- |\n| Tool ID | `cron-overlap-detector` |\n| Category | developer-tools |\n| Implementation | Registered implementation. Registration alone is not a production-quality guarantee. |\n| Browser execution | Use the visible action or interactive controls. |\n| Browser processing | Browser; see tool notes for network behavior. |\n| HTTP API | Not callable through HTTP. |\n| Browser-agent interface | run_current_tool |\n\n### Implementation notes\n\nSimulates cron on your device minute by minute, including daylight saving changes. Up to 200,000 characters, 1,000 jobs and 31 days.\n\n### Inputs and settings\n\nText input: Crontab.\n\nExample or placeholder shown in the interface (not a validated fixture):\n\n```text\n*/15 * * * * /usr/local/bin/sync.sh\n30 2 * * * /usr/local/bin/backup.sh\n```\n\nPaste crontab lines. Add # duration: 20m above a job to set its run length. Up to 200,000 characters. Review the settings before running.\n\n| Setting | Meaning | Control type | Default | Constraints |\n| --- | --- | --- | --- | --- |\n| `start` | Start date | text | \"\" |  |\n| `days` | Days to check | number | 7 | min=1 max=31 |\n| `timezone` | Time zone | text | \"UTC\" |  |\n| `duration` | Run length in minutes | number | 5 | min=1 max=1440 |\n| `format` | Crontab format | select | \"user\" | Allowed: user, system |\n\n### Browser-agent workflow\n\n1. Open the human page in a browser that supports WebMCP.\n2. Discover the interface exposed by that page; use its actual schema.\n3. Select files on the page first when the tool requires files.\n4. Call `run_current_tool` with valid input and settings.\n5. Inspect the returned result or error and the displayed output. Retrieve files from the displayed download links.\n\nCalls do not automatically copy or download results. Browser permissions still apply. Interface availability alone is not proof of successful execution.\n\n### Planning specification\n\nUp to 200,000 characters, 1,000 jobs, 31 days, 200,000 runs and 5,000,000 checks of a starting run against other jobs that are still running. Everything runs on your device in a background worker. Downloads: JSON report, CSV of overlapping pairs and an SVG timeline in UTC.\n\nThis describes intended requirements. Use the implementation notes, interface schema and observed output to determine current support.\n\n### Complete machine-readable capability record\n\n```json\n{\n  \"id\": \"cron-overlap-detector\",\n  \"category\": \"developer-tools\",\n  \"built\": true,\n  \"requirements\": \"Up to 200,000 characters, 1,000 jobs, 31 days, 200,000 runs and 5,000,000 checks of a starting run against other jobs that are still running. Everything runs on your device in a background worker. Downloads: JSON report, CSV of overlapping pairs and an SVG timeline in UTC.\",\n  \"implementation\": {\n    \"fields\": [\n      {\n        \"key\": \"start\",\n        \"label\": \"Start date\",\n        \"value\": \"\",\n        \"type\": \"text\",\n        \"help\": \"YYYY-MM-DD or YYYY-MM-DDTHH:MM in the time zone below. Leave empty for today.\"\n      },\n      {\n        \"key\": \"days\",\n        \"label\": \"Days to check\",\n        \"value\": 7,\n        \"type\": \"number\",\n        \"min\": 1,\n        \"max\": 31\n      },\n      {\n        \"key\": \"timezone\",\n        \"label\": \"Time zone\",\n        \"value\": \"UTC\",\n        \"type\": \"text\",\n        \"help\": \"IANA name such as Europe/Berlin. CRON_TZ lines in the crontab override it for the jobs below them.\"\n      },\n      {\n        \"key\": \"duration\",\n        \"label\": \"Run length in minutes\",\n        \"value\": 5,\n        \"type\": \"number\",\n        \"min\": 1,\n        \"max\": 1440,\n        \"help\": \"Used for every job without a # duration: comment above it.\"\n      },\n      {\n        \"key\": \"format\",\n        \"label\": \"Crontab format\",\n        \"value\": \"user\",\n        \"type\": \"select\",\n        \"values\": [\n          \"user\",\n          \"system\"\n        ]\n      }\n    ],\n    \"registrationFamily\": \"config-directive-linters\",\n    \"inputMaxLength\": 200000,\n    \"inputErrorCode\": \"CONFIG_DIRECTIVE_LINTERS_TOO_LONG_CRON\",\n    \"note\": \"Simulates cron on your device minute by minute, including daylight saving changes. Up to 200,000 characters, 1,000 jobs and 31 days.\",\n    \"experience\": {\n      \"automatic\": false,\n      \"single\": false,\n      \"inputMaxLength\": 200000,\n      \"inputMode\": \"text\",\n      \"label\": \"Crontab\",\n      \"placeholder\": \"*/15 * * * * /usr/local/bin/sync.sh\\n30 2 * * * /usr/local/bin/backup.sh\",\n      \"help\": \"Paste crontab lines. Add # duration: 20m above a job to set its run length. Up to 200,000 characters. Review the settings before running.\",\n      \"action\": null\n    },\n    \"mode\": \"explicit\",\n    \"interactive\": false\n  },\n  \"execution\": \"Browser interface\",\n  \"api\": null,\n  \"browser_agent\": {\n    \"supported\": true,\n    \"name\": \"run_current_tool\",\n    \"discovery\": \"WebMCP on the human page in a supporting browser\",\n    \"verification\": \"See audit/API-AUDIT.md; availability is not verification\"\n  }\n}\n```\n\n## Page guide\n\nFind cron jobs that run at the same time, the busiest minute and jobs that start again before they finish, including what happens on daylight saving days.\n\nHow can we improve this tool?\n\nReport a problem or share an idea.\n\nPlease leave out private information. Your message and the tool name go to our team via PostHog.\n\n### How to use Cron overlap detector\n\n1. Paste your crontab. Put # duration: 20m above a job to set how long it runs.\n2. Choose the start date, number of days, time zone and default run length.\n3. Run the check and review the overlapping pairs.\n4. Download the JSON report, the CSV of overlaps or the timeline image.\n\n## Useful next steps\n\n- [Cron parser](https://happytails.ai/en/developer-tools/cron-parser/) ([Markdown](https://happytails.ai/en/developer-tools/cron-parser.md))\n\n- [Unix timestamp converter](https://happytails.ai/en/developer-tools/unix-timestamp-converter/) ([Markdown](https://happytails.ai/en/developer-tools/unix-timestamp-converter.md))\n\n- [Date difference](https://happytails.ai/en/date-time-tools/date-difference/) ([Markdown](https://happytails.ai/en/date-time-tools/date-difference.md))\n\n## How runs are found\n\nHappytails.ai reads crontab lines as described in crontab(5) and cron(8) from cronie (read on 16 October 2026): five time fields with lists, ranges, steps and names, the @daily style macros, CRON\\_TZ, and the rule that day of month and day of week match with OR when both are restricted. Every minute of the window is checked in each job's time zone.\n\n### Daylight saving changes\n\nThe window covers whole days on the clock of the chosen time zone, so a day with a clock change has 23 or 25 hours. When clocks jump forward, a job with a fixed minute and hour that falls in the skipped hour runs once right after the jump. When clocks go back, such a job is not repeated. Jobs with \\* in the minute or hour field follow the wall clock. Runs moved by the jump are listed in the report.\n\n### Overlaps and limits\n\nA run is assumed to last its # duration: comment or the default length, so overlaps are estimates you can tune. Two jobs overlap when one starts before the other ends. @reboot jobs, RANDOM\\_DELAY, anacron and systemd timers are not simulated.\n"
}