Free tool

Crontab to Dagu converter

Paste a crontab and each entry becomes a Dagu workflow YAML you can give retries, logs, and a web UI.

3 entries converted, 1 warnings

Warnings

  • Line 9: @reboot is not a schedule and has no Dagu equivalent. Consider a systemd unit or another run-at-boot mechanism.@reboot /usr/local/bin/start-agent

This tool runs entirely in your browser. Nothing you paste is uploaded.

backup.yaml
# Generated from crontab: 30 2 * * * /usr/local/bin/backup.sh --full
schedule: "30 2 * * *"

shell: /bin/bash

env:
  - PATH=/usr/local/bin:/usr/bin:/bin

steps:
  - id: backup
    run: /usr/local/bin/backup.sh --full

# crontab had MAILTO=ops@example.com. Configure SMTP in Dagu,
# then enable failure mail:
# mail_on:
#   failure: true
health-check.yaml
# Generated from crontab: */15 * * * * /usr/local/bin/health-check.sh
schedule: "*/15 * * * *"

shell: /bin/bash

env:
  - PATH=/usr/local/bin:/usr/bin:/bin

steps:
  - id: health-check
    run: /usr/local/bin/health-check.sh

# crontab had MAILTO=ops@example.com. Configure SMTP in Dagu,
# then enable failure mail:
# mail_on:
#   failure: true
rotate-logs.yaml
# Generated from crontab: @daily /usr/local/bin/rotate-logs
schedule: "0 0 * * *"

shell: /bin/bash

env:
  - PATH=/usr/local/bin:/usr/bin:/bin

steps:
  - id: rotate-logs
    run: /usr/local/bin/rotate-logs

# crontab had MAILTO=ops@example.com. Configure SMTP in Dagu,
# then enable failure mail:
# mail_on:
#   failure: true

FAQ

What does the converter handle?

Five-field cron entries, aliases like @daily, and environment assignment lines. SHELL becomes the shell setting, environment variables become the env section, and MAILTO becomes a commented hint for enabling failure mail. Environment variables apply only to entries below their declaration, matching crontab semantics.

What can't be converted?

@reboot is run-at-boot rather than a schedule, so it has no Dagu equivalent and is reported as a warning. Percent signs also carry special crontab semantics (command terminator and stdin), so lines containing % get a warning asking you to verify the command.

Is my crontab uploaded?

No. Parsing and conversion happen entirely in your browser with JavaScript. Nothing you paste leaves the page.

Run the YAML you just generated

Dagu is a single binary with no database. Drop the files into your DAG directory and the same schedules get retries, logs, and run history.