Cron Expression Generator & Explainer

Build a crontab schedule with clicks or paste an existing one. You get a plain-English explanation, field-level validation and the next 10 run times in your time zone.

Runs in your browserNo sign-upNothing uploaded

minutehourday (month)monthday (week)

Visual builder

Next 10 runs

    How to use the Cron Expression Generator

    1. Type a cron expression such as */15 * * * *, or click a preset.
    2. Read the plain-English description to confirm it does what you expect. Invalid fields are highlighted with the reason.
    3. Use the Visual builder tabs to set minute, hour, day of month, month and day of week with Every, Every N, Specific or Range.
    4. Check the next 10 run times, and pick the server’s time zone if it differs from yours.
    5. Copy the expression into your crontab, Kubernetes CronJob, GitHub Actions schedule or CI config.

    Cron syntax in one minute

    A standard cron expression has five fields separated by spaces:

    ┌───────────── minute (0-59)
    │ ┌─────────── hour (0-23)
    │ │ ┌───────── day of month (1-31)
    │ │ │ ┌─────── month (1-12 or JAN-DEC)
    │ │ │ │ ┌───── day of week (0-7 or SUN-SAT, 0 and 7 are Sunday)
    │ │ │ │ │
    * * * * *  command
    SymbolMeaningExample
    *every value* * * * * every minute
    ,list0 9,17 * * * at 09:00 and 17:00
    -range0 9 * * 1-5 weekdays at 09:00
    /step*/10 * * * * every 10 minutes
    @dailymacrosame as 0 0 * * *; also @hourly, @weekly, @monthly, @yearly, @reboot

    The day-of-month / day-of-week trap

    When both day fields are restricted (neither starts with *), cron runs when either matches. 0 0 13 * 5 therefore runs on every 13th and every Friday, not only on Friday the 13th. This generator follows that Vixie cron rule, and the description says “or” so you notice it.

    Time zones and daylight saving

    Cron uses the server’s local time zone unless configured otherwise (CRON_TZ= in some crons, timeZone in Kubernetes CronJobs; GitHub Actions always uses UTC). Pick that zone in the run preview. Jobs scheduled inside a daylight-saving gap (for example 02:30 on the spring-forward night) are skipped in the preview, because that local time never occurs.

    Common schedules

    • */5 * * * *: every 5 minutes
    • 0 */2 * * *: every 2 hours, on the hour
    • 0 9 * * 1-5: 09:00 on weekdays
    • 0 0 1 * *: midnight on the first day of each month
    • 0 3 * * 0: 03:00 every Sunday, a typical backup window

    Frequently asked questions

    How do I run a cron job every 5 minutes?
    Use */5 * * * *. The step /5 on the minute field means every 5th minute starting at 0: 00, 05, 10 and so on.
    Does cron support seconds?
    Standard crontab does not; the smallest unit is one minute. Quartz, Spring and some cloud schedulers add a seconds field (6 or 7 fields). This tool validates the standard 5-field format and tells you when it sees 6 fields.
    Is Sunday 0 or 7?
    Both. In the day-of-week field 0 and 7 both mean Sunday, and you can also write names such as SUN or MON-FRI.
    Why does my job run on more days than expected?
    If you restricted both day of month and day of week, cron runs when either matches. Set one of them to * to require only the other.
    Which time zone are the next run times in?
    Your browser’s time zone by default. Choose your server’s zone (often UTC) from the list to see exactly when the job fires there.

    Related tools