Cron Expression Generator

Type or paste a standard five-field cron expression to see it explained in plain English as you type, or pick a common schedule from the dropdown. Everything runs locally in your browser, so nothing is sent to a server.

Plain English

—

    Cron field order

    A standard five-field cron expression always reads left to right in this order:

    FieldAllowed valuesSpecial characters
    Minute0-59* , - /
    Hour0-23 (0 is midnight)* , - /
    Day of month1-31* , - /
    Month1-12 or JAN-DEC* , - /
    Day of week0-7 or SUN-SAT (0 and 7 are Sunday)* , - /

    What the symbols mean

    Examples and what they mean

    ExpressionPlain English
    * * * * *Every minute.
    */15 * * * *Every 15 minutes, all day.
    0 9 * * 1-5At 9:00 AM, Monday through Friday.
    30 2 * * *At 2:30 AM every day.
    0 0 1 * *At midnight on the 1st of every month.
    0 0 1 1 *At midnight on January 1.
    */15 9-17 * * 1-5Every 15 minutes from 9:00 AM to 5:45 PM, weekdays only.

    Cron gotchas worth knowing

    When both day fields are set, cron uses OR

    This surprises almost everyone. If you set both day of month and day of week, standard cron runs the job when either field matches, not only when both match. For example, 0 9 1 * 1 runs at 9:00 AM on the 1st of the month and on every Monday. Leave one of the two as * unless you specifically want that behaviour.

    0 and 7 both mean Sunday

    Day of week accepts 0 through 7, where both 0 and 7 are Sunday. Monday is 1, so weekdays are 1-5 and weekends are 6,0. Some systems only accept 0, so 0 is the safer choice.

    Cron uses the server time zone

    A cron expression has no time zone of its own. 0 9 * * * means 9:00 AM in whatever time zone the cron daemon uses, usually the server local time. If the server runs on UTC, 9:00 AM UTC is not 9:00 AM for your users. Set the time zone explicitly on systems that support it, such as systemd timers or the CRON_TZ variable, or convert the time yourself.

    There is no seconds field

    Standard five-field cron cannot run more often than once per minute. Expressions like */10 * * * * * with six fields are not valid in a normal crontab; the sixth field may be rejected or interpreted as the year by other schedulers. For sub-minute jobs use a loop, a systemd timer, or a scheduler that supports seconds.

    Steps start at the minimum, not at your range

    In */15 the step starts at the field minimum, so minute */15 fires at 0, 15, 30 and 45. In 10-40/15 it starts at 10, so it fires at 10, 25 and 40. The value after the slash is a step, not an interval measured from the last run.

    Missed runs are not queued

    If the machine is off or the cron daemon is stopped at the scheduled time, the job does not run later. Tools built on cron may offer catch-up behaviour, but plain cron does not.

    Frequently asked questions

    How do I run a job every 5 minutes?

    Use */5 * * * *. It runs at minutes 0, 5, 10, 15 and so on, every hour of every day.

    How do I run something only on weekdays?

    Set day of week to 1-5. For 9:00 AM Monday through Friday the full expression is 0 9 * * 1-5. Remember that the server time zone decides what 9:00 AM means.

    How do I run a job once a month?

    Pick the day and set the rest: 0 0 1 * * runs at midnight on the 1st of every month. 0 0 15 * * runs on the 15th. Avoid picking a day number that some months do not have, such as the 31st, or the job will be skipped in shorter months.

    Can I use names like JAN or MON?

    Yes in the month and day-of-week fields, for example 0 0 * JAN MON or 0 0 * JAN-JUN *. Names are case-insensitive on common implementations. Numeric values are the most portable, so prefer them if a scheduler rejects names.

    Is this the same as Quartz, Kubernetes or Spring cron?

    Not exactly. This page parses the standard five-field Unix cron format. Quartz and Spring accept six fields including seconds; Kubernetes CronJob also uses five fields but adds its own time zone and deadline rules. Check the syntax of the scheduler you are actually deploying to.

    More browser-based tools that pair with this page. Everything runs locally with no signup.

    Last reviewed 2026-10-31 · Back to all ports