DEVELOPER TOOL

Cron Expression Generator

Pick a schedule, or paste any cron expression, to get the exact crontab line, a plain-English description and the next 5 run times. Every 5 minutes is one click. Nothing is sent to a server.

—
—

    About this tool

    A cron expression is five space-separated fields, minute, hour, day of month, month and day of week, that tell a scheduler when to run a job. This cron expression generator builds the expression from a schedule picker or reads one you paste, explains it in plain English and lists its next 5 run times. The run times are worked out in your browser, in your browser's time zone or in UTC.

    How to use the cron expression generator

    1. Pick a schedule type, such as every N minutes, daily or weekly, and fill in the numbers. Choose Custom to type any expression or macro, such as */15 9-17 * * 1-5 or @daily.
    2. Check the description and the next 5 run times.
    3. Copy the expression into your crontab (crontab -e), CI file or scheduler, followed by the command to run.

    The five fields of a cron expression

    PositionFieldAllowed values
    1Minute0–59
    2Hour0–23 (24-hour clock)
    3Day of month1–31
    4Month1–12, or JAN–DEC
    5Day of week0–6 with 0 = Sunday; 7 is also Sunday, or SUN–SAT

    The ranges are from the POSIX crontab specification. Names and 7 for Sunday are extensions documented in the crontab(5) manual for Vixie-derived cron, which this tool accepts.

    Special characters: * , - /

    Lists and ranges are POSIX; steps are a Vixie cron extension.

    Macros: @reboot, @daily and friends

    Vixie-derived cron accepts a macro in place of all five fields. The crontab(5) manual defines them as extensions, not POSIX:

    MacroSame as
    @rebootNo schedule: runs once when cron starts
    @yearly, @annually0 0 1 1 *
    @monthly0 0 1 * *
    @weekly0 0 * * 0 (Sunday)
    @daily, @midnight0 0 * * *
    @hourly0 * * * *

    The day-of-month and day-of-week OR rule

    When both day fields are restricted, POSIX says a day matches if either field matches. So 30 4 1,15 * 5 runs at 04:30 on the 1st, on the 15th and on every Friday, not only on Fridays that fall on the 1st or 15th. If either field is *, only the other one counts.

    Vixie-derived cron adds a twist: the manual notes it only checks whether a field's first character is *. That makes 0 0 */2 * sun run on Sundays that are odd-numbered dates, where POSIX would run it on every Sunday and every odd date. This tool follows the Vixie rule. Some libraries, such as Python's croniter, use plain OR instead.

    Crontab every 5 minutes

    The expression is */5 * * * *, so a crontab line looks like */5 * * * * /path/to/script.sh. The step counts from the start of the range: minutes 0, 5, 10 … 55, not 5 minutes after you saved the file. A step only gives even gaps if it divides 60: */7 runs at minute 56 and then at minute 0, only 4 minutes later.

    Common cron schedules

    Each next-run column was computed with croniter, starting from Saturday, October 17, 2026 at 12:00.

    ExpressionRunsNext two runs
    */5 * * * *Every 5 minutesSat Oct 17 12:05; Sat Oct 17 12:10
    */15 * * * *Every 15 minutesSat Oct 17 12:15; Sat Oct 17 12:30
    0 * * * *Every hour, on the hourSat Oct 17 13:00; Sat Oct 17 14:00
    0 9 * * 1-5Weekdays at 09:00Mon Oct 19 09:00; Tue Oct 20 09:00
    */15 9-17 * * 1-5Every 15 minutes from 09:00 to 17:45 on weekdaysMon Oct 19 09:00; Mon Oct 19 09:15
    0 8,12,18 * * *Every day at 08:00, 12:00 and 18:00Sat Oct 17 18:00; Sun Oct 18 08:00
    30 2 * * 0Sundays at 02:30Sun Oct 18 02:30; Sun Oct 25 02:30

    Time zones and daylight saving time

    A five-field expression has no time zone. The crontab(5) manual says the cron daemon runs in one configured time zone, and setting TZ inside a crontab changes only the environment of the commands, not when they run. Many servers run on UTC, so check before relying on a local hour.

    Daylight saving time adds two gaps. Vixie-derived cron, as described in OpenBSD's cron(8) manual, treats changes of less than three hours specially for jobs at fixed times: jobs in a skipped interval run immediately, and jobs in a repeated interval are not run twice. Jobs that run more often than hourly are scheduled normally. The preview above simply leaves out times that do not exist in the chosen zone and lists a repeated clock time once, so switch to UTC to avoid the ambiguity. To convert run times to and from Unix time, use the Timestamp Converter.

    Worked example

    The generator opens on Every day, at a specific time with hour 9 and minute 0, so it shows 0 9 * * * and the description "At 09:00, every day." Reading the fields: minute 0, hour 9, any day of month, any month, any day of week. If your clock read Saturday, October 17, 2026 at 10:30, today's 09:00 has passed, so the next 5 run times would be:

    1. Sun 2026-10-18 09:00
    2. Mon 2026-10-19 09:00
    3. Tue 2026-10-20 09:00
    4. Wed 2026-10-21 09:00
    5. Thu 2026-10-22 09:00

    Not every scheduler uses five fields

    Pasting a five-field expression into a six-field scheduler shifts every value one place, so the minute is read as seconds.

    Common mistakes

    Frequently asked questions

    What do the five fields in a cron expression mean?

    In order: minute (0-59), hour (0-23), day of month (1-31), month (1-12) and day of week (0-6, where 0 is Sunday; most Linux cron versions also accept 7 for Sunday). An asterisk means every value of that field.

    What timezone does a cron job run in?

    It depends entirely on the system running it, not on the cron expression itself — a cron expression has no built-in timezone. Check your server's or platform's configured timezone (many cloud platforms default to UTC) before relying on an exact run time.

    Can I combine day-of-month and day-of-week in one expression?

    Yes, but standard cron uses OR logic when both are restricted: 0 0 1,15 * 5 runs on the 1st, the 15th and every Friday. Vixie-derived cron only treats a field as unrestricted when it starts with *, so */2 in the day-of-month field combines with the weekday as AND. Paste an expression into Custom mode to see its next run times.

    What is the cron expression for every 5 minutes?

    Use */5 * * * *, so a crontab line reads */5 * * * * followed by your command. The */5 in the minute field means every fifth minute starting at 0, so the job runs at minutes 0, 5, 10 and so on up to 55, every hour of every day. Change 5 to 10, 15 or 30 for those intervals.

    What does @reboot do in crontab?

    @reboot runs the command once each time the cron daemon starts, which normally means once per boot. It has no clock schedule, so it has no next run time. It is an extension of Vixie-derived cron, along with @hourly, @daily, @weekly, @monthly and @yearly, and is not part of POSIX.

    How do I run a cron job only on weekdays?

    Put the range 1-5 in the fifth field, which is day of week, where 1 is Monday and 5 is Friday. For example, 0 9 * * 1-5 runs at 9:00 every Monday to Friday. The time is interpreted in the time zone of the machine running the job.