Cron Expression Builder

Write cron, read it in plain English, and see the next five runs.

Loading the interactive tool… It runs in your browser — if it doesn't appear, enable JavaScript.

Type a cron expression and get it back in plain English, plus the next five times it will actually fire. Supports ranges, lists, steps, month and day names, and the @daily-style shorthands. Presets cover the schedules people write most often.

The rule this makes visible is the one that catches nearly everyone: when both day-of-month and day-of-week are restricted, cron runs when *either* matches, not both. So `0 0 1 * MON` fires on the 1st of every month and on every Monday — not on Mondays that happen to be the 1st.

Frequently asked questions

What do the five fields mean?

In order: minute (0–59), hour (0–23), day of month (1–31), month (1–12), day of week (0–6, where both 0 and 7 mean Sunday). A * means every value. Six-field expressions that add seconds are a Quartz and Spring extension, not standard cron.

Why does my cron job run more often than expected?

Almost always the day-of-month and day-of-week rule. If both fields are restricted, cron treats them as OR, not AND — so an expression you read as "the first Monday of the month" actually fires on the 1st *and* on every Monday. Standard cron cannot express "first Monday"; you need a guard inside the job itself.

What timezone do the next run times use?

Your browser's local timezone. Servers commonly run cron in UTC, and many managed schedulers do too, so check before relying on the times — a job that looks like it runs at 09:00 may fire at 09:00 UTC.

What does */15 mean?

Every 15 units starting from the field's minimum — so */15 in the minute field means minutes 0, 15, 30 and 45. Note it steps from the start of the range, not from the current time, so it doesn't mean "every 15 minutes from now".