Cron Expression Explainer

A cron schedule in plain words, with the next runs.

Free tools that run in your browser. Nothing you type, open or create is uploaded to NerdBible or anyone else.

Next 10 runs
    Examples

    Field reference

    FieldValuesSpecial characters
    Seconds (optional, first)0 to 59* , - /
    Minute0 to 59* , - /
    Hour0 to 23* , - /
    Day of month1 to 31* , - / ?
    Month1 to 12 or JAN to DEC* , - /
    Day of week0 to 7 or SUN to SAT (0 and 7 are Sunday)* , - / ?

    Shortcuts: @yearly (or @annually), @monthly, @weekly, @daily (or @midnight), @hourly and @reboot.

    The tool reads standard Unix cron as used by crontab, Kubernetes CronJobs and most CI schedulers, with an optional seconds field as used by Spring and some Node libraries. Quartz extras such as L, W and # are not part of standard cron and are reported as errors. Run times are worked out in your browser for the time zone you choose, including daylight saving changes.

    How to use it

    1. Type or paste a cron expression, such as */15 9-17 * * 1-5, or start from one of the examples.
    2. Read the plain English description. If a field is wrong, the message names the field and the value.
    3. Choose the time zone your server or scheduler uses and check the next ten run times.

    Questions

    What happens when both day of month and day of week are set?

    Standard cron runs the job when either one matches, not both. 0 9 1 * 1 runs at 09:00 on the 1st of every month and also on every Monday. One exception: when either field starts with a star, as in */2, both have to match. If you need both to be true, schedule it for one and check the other inside the job.

    Which time zone does cron use?

    Classic cron uses the server's local time zone. Kubernetes uses the controller's zone unless the CronJob sets timeZone, and most cloud schedulers default to UTC. Pick the matching zone here so the run times line up.

    What happens during daylight saving changes?

    When clocks go forward, a time that does not exist that night is skipped here, and when clocks go back a repeated time is shown once. Real cron daemons differ in how they handle this, so avoid scheduling important jobs between 01:00 and 03:00 local time.

    What does */15 mean?

    Every 15th value starting from the lowest one, so in the minute field it means minutes 0, 15, 30 and 45. 5-59/15 starts at 5 instead: 5, 20, 35 and 50.

    About this tool

    About the cron explainer

    Cron schedules are five short fields that are easy to write and easy to misread. Type an expression such as */15 9-17 * * 1-5 and this tool describes it in plain English, lists the next ten times it will run, and names the field and value if something is wrong.

    The five fields

    • Minute (0 to 59)
    • Hour (0 to 23)
    • Day of month (1 to 31)
    • Month (1 to 12 or JAN to DEC)
    • Day of week (0 to 6, Sunday is 0, or SUN to SAT)

    An optional leading seconds field, as used by Spring and some Node libraries, is understood too. Quartz extras such as L, W and # are not standard cron and are reported as errors.

    Gotchas worth knowing

    Day of month and day of week together: standard cron runs when either matches, not both. 0 9 1 * 1 runs on the 1st and on every Monday.

    Steps: */15 in the minute field means 0, 15, 30 and 45; 5-59/15 starts at 5 instead.

    Time zones: classic cron uses the server's local time, Kubernetes the controller's unless the CronJob sets one, and most cloud schedulers UTC. Pick the matching zone so the run times line up, including daylight saving changes.

    Everything is worked out in your browser.

    Related tools