Crontab Validator & Explainer
Validate cron syntax, get human-readable explanations, calculate next run times, and lint for common mistakes.
Validate
# Single expression
python3 scripts/cron_check.py validate "*/15 * * * *"
# Multiple expressions with lint
python3 scripts/cron_check.py validate --lint "0 2 * * *" "* * * * *" "0 0 31 2 *"
Explain in Detail
python3 scripts/cron_check.py explain "30 4 1,15 * 1-5"
Next Run Times
# Next 5 runs (default)
python3 scripts/cron_check.py next "0 9 * * 1-5"
# Next 10 runs
python3 scripts/cron_check.py next "0 */6 * * *" --count 10
# From specific time
python3 scripts/cron_check.py next "0 9 * * *" --from-time 2026-01-01T00:00:00
Lint
# Check for common mistakes
python3 scripts/cron_check.py lint "* * * * *" "0 0 31 2 *" "0 0 29 2 *"
# Strict mode (exit 1 on warnings)
python3 scripts/cron_check.py lint --strict "0 0 31 4 *"
Output Formats
python3 scripts/cron_check.py -f json explain "0 9 * * 1-5"
python3 scripts/cron_check.py -f markdown validate --lint "*/5 * * * *"
Supported Syntax
| Feature | Example | Description |
|---|
| Wildcard | * | Every value |
| Specific | 5 | Exact value |
| Range | 1-5 | Values 1 through 5 |
| List | 1,3,5 | Values 1, 3, and 5 |
| Step | */15 | Every 15th value |
| Range+Step | 1-30/2 | Odd values 1-30 |
| Names | mon-fri | Day/month names |
| Shortcuts | @daily | Predefined schedules |
Shortcuts
| Shortcut | Equivalent | Meaning |
|---|
@yearly | 0 0 1 1 * | Once a year |
@monthly | 0 0 1 * * | First of month |
@weekly | 0 0 * * 0 | Every Sunday |
@daily | 0 0 * * * | Every midnight |
@hourly | 0 * * * * | Every hour |
Lint Checks
| Check | Level | Description |
|---|
| Every-minute | Warning | * * * * * runs 1440 times/day |
| Day 31 in short months | Warning | Apr, Jun, Sep, Nov have 30 days |
| Feb 29-31 | Warning | Only runs in leap years (29) or never |
| DOM + DOW conflict | Info | Both specified = OR logic |
| High frequency | Info | More than 288 runs/day |