What this checks
Paste a single cron expression or a full crontab file. Each line is checked independently for structural mistakes: the wrong number of time fields, out-of-range or malformed field values, reversed ranges, non-positive steps, unrecognized schedule nicknames (like @daily), and a missing command. Comment lines (#...) and environment variable assignments (like MAILTO=...) are recognized and skipped.
This is a structural check, not a full crontab parser — it doesn't know whether the command itself will run successfully, and it doesn't model every vendor-specific crontab extension. Named values like MON or JAN are flagged as unsupported, since none of this site's cron tools parse them; use numbers instead.
Severity levels
- Errors — the line won't be interpreted the way it looks: an invalid field, wrong field count, or unknown nickname.
- Warnings — worth a second look, but not necessarily wrong: a missing command, a duplicate entry, or a line that resembles a 6-field (seconds) format this validator doesn't model.
FAQ
Why does day-of-week accept 0-7 instead of 0-6?
Standard crontab implementations treat both 0 and 7 as Sunday. This validator follows that convention, even though the numeric-only day names elsewhere on this site use 0-6.
I just want to build or explain an expression, not validate a file
Use the Cron Builder to generate an expression from a schedule, or the Cron Parser to turn one into plain English with a preview of upcoming run times.