All tools

Cron Expression Validator

Cron Validator checks a cron expression, describes it in plain English, and shows the next five times it will actually fire. It also warns about the day-of-month and day-of-week rule, where cron combines the two fields with OR rather than AND and runs far more often than intended.

Runs entirely in your browser — nothing you enter is uploaded.

Developer
Try one

Five fields: minute, hour, day of month, month, day of week. Run times are shown in your browser's timezone — your server almost certainly runs on UTC, so check which one your scheduler uses before trusting a time.

About cron expressions

A standard expression is five fields — minute, hour, day of month, month, day of week — and most of it reads naturally once you know the order. The rule that catches everyone is that when both day fields are restricted, cron joins them with or. So 0 0 13 * 5 is not Friday the 13th; it runs on every 13th and on every Friday, about sixty times a year. Leave one of the two as an asterisk unless you genuinely want the union.

Step values count from the start of the field rather than from now, so */7 in the minute field fires at 0, 7, 14 and so on to 56, then restarts — a four-minute gap across the hour boundary, not seven. Expressions carry no timezone: the next-run times here are in your browser's zone, while your server is very likely on UTC. Six-field expressions are a different dialect, with seconds first, and are flagged as such.

Common questions

Why does 0 0 13 * 5 run more often than expected?
Because when both the day-of-month and day-of-week fields are restricted, cron combines them with OR rather than AND. That expression fires at midnight on every 13th of the month and on every Friday, not only when the two coincide. It is a documented quirk of the original Unix cron, preserved for compatibility. Leave one field as an asterisk to restrict by the other alone.
What does */5 actually mean?
Every value in that field divisible by five, counting from the start of its range — not every five minutes from now. In the minute field it fires at 0, 5, 10 and so on to 55, then restarts at the next hour. With a step that does not divide evenly, such as */7, the gap across the hour boundary is shorter than the step.
Which timezone does a cron job run in?
Whichever one the machine or scheduler is configured for, which on a server is very often UTC even when you are not. Cron expressions carry no timezone of their own. The next-run times shown here are in your browser timezone, so compare them against your scheduler before relying on an hour.
Do cron expressions have five fields or six?
Standard Unix cron uses five. Quartz, Spring and several JavaScript libraries add a leading seconds field, making six. The distinction matters because a five-field expression read by a six-field parser has every field shifted by one, so minutes are read as seconds. This tool tells you which dialect it is reading.