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 month12 times a year
Every Friday52
Days that are both−3
0 0 13 * 5 in 202661 times
Of which actual Friday the 13ths3

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.

ExpressionReads asActually
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

  1. Paste your cron expression.
  2. Read the plain-English description.
  3. Check the next several run times, not just the first.
  4. 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.