Valid where?
“Is this cron valid?” only has an answer for a specific scheduler. The example loaded here, 0 15 10 * * MON-FRI, looks fine but Quartz rejects it: one of the two day fields must be “?”. The validator underlines the field, explains the rule, and proposes the corrected expression. Switch the dialect to Spring and the same text is accepted, because Spring allows both day fields.
Errors have stable codes (INVALID_INPUT, UNSUPPORTED_FORMAT, AMBIGUOUS_SEMANTICS, RESOURCE_LIMIT) and character positions, and the original text is never modified. Warnings cover things that are valid but probably not what you meant: steps that do not divide evenly, 29 February, days that skip some months, GitHub’s five-minute minimum interval and the Vixie OR/AND trap.
Copy a reproducible report
Use “Copy diagnostics” in the side panel to copy a JSON fixture with the expression, dialect, zone, DST policy, errors and first runs — useful for bug reports and code review.
Try these
0 15 10 * * MON-FRIQuartz missing ?0 9 * * 7Kubernetes rejects 7cron(0 12 * * * *)AWS * in both day fields*/2 * * * *GitHub minimum interval
Questions
Why is 0 0 0 31 2 ? invalid?
February never has 31 days, so the schedule can never fire. The validator rejects impossible combinations instead of letting a scheduler accept a job that never runs.
Does validation guarantee my platform accepts it?
It follows each platform’s documented syntax and is tested against fixtures, but versions differ. Labels show whether support is exact, qualified or informational for each dialect.