Cron Next Run Times
Paste a cron expression to see when it will actually run next, in plain English — the check worth doing before deploying a schedule.
—
The two day fields are combined with OR, not AND
0 0 13 * 5 reads like “midnight on Friday the 13th”. It is not. When
both the day-of-month and the day-of-week fields are restricted, POSIX cron
fires if either matches — so this runs on the 13th of every month and on
every Friday.
| The 13th of each month | 12 times a year |
| Every Friday | 52 |
| Days that are both | −3 |
0 0 13 * 5 in 2026 | 61 times |
| Of which actual Friday the 13ths | 3 |
A job written to run three times a year runs 20 times as often as intended — more than once a week. (Three is the most Friday the 13ths a year can hold, and 2026 has all three: February, March and November.)
The rule only bites when both fields are restricted. 0 0 13 * * is the 13th and
nothing else; 0 0 * * 5 is Fridays and nothing else. It is specifically the
combination that misbehaves, which is why it survives review — each field looks correct on its
own. There is no way to express “Friday the 13th” in standard cron at all; you have to run
daily and test the date inside the job.
And a step is not “every N minutes”
*/7 * * * * looks like every seven minutes. The step counts from the start of the
field's range, and the range restarts every hour — so it fires at :00, :07, :14 … :56, and then
:00 again, four minutes later.
Over a day that is 216 firings: 191 gaps of seven minutes and 24 of four, one short hop every hour. Every step that does not divide its range evenly does this. For minutes, the only steps that behave as written are 1, 2, 3, 4, 5, 6, 10, 12, 15, 20, 30.
| Expression | Reads as | Actually |
|---|---|---|
0 0 13 * 5 | midnight on Friday the 13th | the 13th OR any Friday |
*/7 * * * * | every seven minutes | every seven, then a four-minute hop each hour |
0 0 31 * * | monthly, on the 31st | seven months a year |
0 0 30 2 * | the 30th of February | never, and cron accepts it silently |
The last row is worth noting: 0 0 30 2 * is perfectly valid syntax that will never
fire, because the 30th of February never comes round. Cron accepts it without a word of
complaint, and the job simply never runs.
How to use
- Paste your cron expression.
- Read the plain-English description.
- Check the next several run times, not just the first.
- Confirm the timezone matches your server.
Frequently asked questions
Why check the next several runs rather than one?
Because the interesting errors show up in the pattern rather than the first fire. A step expression that looks like every seven minutes produces uneven gaps at the end of each hour, and that only becomes visible across a sequence.
Why does my expression run more often than intended?
Usually the day-of-month and day-of-week fields being combined with OR rather than AND. Specifying both means either can trigger it, which produces far more runs than the author expected — it is the most common cron misunderstanding by a wide margin.
Does this account for timezones?
It computes against the timezone you select, which is exactly the check worth making. Most servers run in UTC while people write schedules in local time, and the resulting offset is the single most frequent cause of a job firing at the wrong hour.
What happens across a daylight saving change?
A job scheduled inside the skipped spring hour does not run at all, and one inside the repeated autumn hour may run twice, depending on the implementation. Scheduling anything critical outside the hours that shift avoids the question entirely.
Why do uneven step values produce uneven gaps?
Because steps restart at the beginning of each field's range rather than running continuously. Every seven minutes gives fires at 0, 7, 14 and so on to 56, then jumps back to 0 — a gap of four minutes rather than seven. Choosing a step that divides 60 avoids it.
Is this a substitute for testing?
No. It tells you what the expression means, which is a different question from whether your job works when it fires. Running the job manually once before scheduling it is worth doing regardless of how confident the expression looks.
🔒 This tool runs entirely in your browser. Nothing you enter is uploaded, logged, or stored.