Cron Expression Generator

Type or paste a cron expression to see what it means and when it runs next — or build one with the fields below.

Every minute.

    Build It Visually

    What Is a Cron Expression?

    A cron expression is a compact string that tells the cron scheduler exactly when to run a task. The standard format used by Unix and Linux systems has five fields separated by spaces: minute, hour, day of month, month, and day of week. Each field accepts a value or a pattern, and a task runs whenever the current time matches every field. Cron has been the backbone of scheduled automation for decades, driving everything from nightly backups to log rotation and report generation.

    A standard five-field cron expression is laid out like this:

    ┌───────────── minute (0–59)
    │ ┌───────────── hour (0–23)
    │ │ ┌───────────── day of month (1–31)
    │ │ │ ┌───────────── month (1–12)
    │ │ │ │ ┌───────────── day of week (0–6, Sun=0)
    │ │ │ │ │
    * * * * *

    The fields combine with a small set of special characters: * matches any value, , separates a list (for example 1,15 for the 1st and 15th), - defines a range (such as 1-5 for Monday through Friday), and / sets a step (such as */5 for every 5 units). Together these let you describe almost any recurring schedule in a single line.

    How to Use This Cron Expression Generator

    To understand an existing schedule, paste it into the Cron expression field — for example a line from your crontab, a GitHub Actions schedule or a Kubernetes CronJob. The tool explains it in plain English (“At minute 0 past every hour from 9 through 17 on every day-of-week from Monday through Friday.”), breaks it down field by field and lists the next 10 run times in your local time zone or in UTC. If something is wrong, the error message names the field and the reason, such as a value out of range or a six-field Quartz expression.

    To build a new schedule, start from one of the Common Presets or use the visual builder: for each of the five fields choose every value, specific value(s), a range, or every N units. The expression updates as you click. Press Copy to put it on your clipboard, or Copy link to share a URL that opens this page with your expression already filled in.

    Cron Expression Examples

    ExpressionMeaning
    */5 * * * *Every 5 minutes
    0 * * * *Every hour, on the hour
    0 */6 * * *Every 6 hours (00:00, 06:00, 12:00, 18:00)
    30 2 * * *Every day at 02:30
    0 9 * * 1-5At 09:00, Monday through Friday
    */15 9-17 * * MON-FRIEvery 15 minutes during office hours on weekdays
    0 0 * * 0Every Sunday at midnight (same as @weekly)
    0 0 1 * *First day of every month at midnight (@monthly)
    0 0 1 */3 *First day of every quarter (January, April, July, October)
    0 12 1,15 * *At noon on the 1st and 15th of each month

    Click an expression in the table to load it into the tool and see its next run times.

    Real-World Use Cases

    • Database and file backups — Schedule a nightly or weekly job such as 0 2 * * * to back up at 2 AM.
    • Log rotation and cleanup — Run maintenance scripts during off-peak hours to free disk space.
    • Report generation — Email a summary every weekday morning with a schedule like 0 8 * * 1-5.
    • Cache warming and polling — Hit an endpoint every few minutes using a step expression like */15 * * * *.
    • CI/CD and container schedules — Provide the expression to tools and platforms that accept standard cron syntax for periodic jobs.

    Tips for Writing Cron Schedules

    • Remember that day-of-month and day-of-week are OR’d together in most cron implementations, so set only one if you mean a single condition.
    • Use steps like */10 for “every 10 minutes” instead of listing each value — it is shorter and clearer.
    • Check the Next 10 Runs preview before deploying; it is the fastest way to catch a schedule that fires more or less often than you intended.
    • Sunday can be written as 0 in the standard five-field format, which is what this generator uses.
    • Cron resolution is one minute — there is no seconds field in the standard format, so the shortest interval is every minute.

    Features

    • Paste & explain — Type or paste any standard cron expression and get a plain-English description plus a field-by-field breakdown.
    • Full cron syntax — Lists, ranges, steps (also on ranges like 0-30/10), month and weekday names (JAN, MON-FRI), 7 for Sunday and the macros @hourly, @daily, @weekly, @monthly, @yearly and @reboot.
    • Clear error messages — Invalid values, backwards ranges and six-field Quartz/Spring expressions are flagged with the field and the reason.
    • Next 10 runs — Upcoming run times in your local time zone or in UTC, with how far away each one is.
    • Visual field builder — Configure minute, hour, day of month, month, and day of week with every, specific, range, and step modes.
    • Common presets — One-click templates for everyday schedules like every 5 minutes, daily, weekdays at 9 AM and monthly.
    • Copy and share — Copy the expression, or copy a link that reopens the page with it.
    • 100% client-side — your data never leaves your browser.

    Frequently Asked Questions

    What is a cron job?

    A cron job is a scheduled task on Unix and Linux systems. The cron daemon reads crontab files and runs the associated commands automatically whenever the current time matches the schedule defined by a cron expression, making it the standard way to automate recurring work.

    What do the five fields in a cron expression mean?

    From left to right, the five fields are minute (0–59), hour (0–23), day of month (1–31), month (1–12), and day of week (0–6, with Sunday as 0). A task runs when the current time matches every field, and an asterisk in a field means “any value.”

    How do I install a cron job?

    Run crontab -e in your terminal to edit your user’s crontab, then add a line consisting of the cron expression followed by the command, for example 0 0 * * * /path/to/script.sh. Save and exit, and the cron daemon will pick up the new schedule.

    How are the next run times calculated?

    The tool walks forward day by day from now, checks each day against the month, day-of-month and day-of-week fields, and then lists the matching hours and minutes until it has found ten runs. It looks up to five years ahead, so rare schedules such as February 29th are found too, and it tells you when a date can never occur (like 0 0 30 2 *). Times are shown in your browser’s time zone or, if you switch, in UTC — useful because many servers and CI services run cron in UTC.

    Why does my expression run on more days than expected?

    When both day-of-month and day-of-week are restricted, standard cron runs the job when either of them matches. 0 0 13 * 5 therefore runs on every 13th and on every Friday — not only on Friday the 13th. The tool shows a note when this rule applies. If one of the two fields is *, only the other one counts.

    My expression has six fields. Is it valid?

    Six or seven fields usually mean the Quartz or Spring format, which adds a seconds field at the start (and sometimes a year at the end) and allows extra characters like ?, L and #. Unix crontab, GitHub Actions and Kubernetes CronJobs use the standard five fields. Remove the seconds field to check the schedule here.

    What do @daily, @weekly and @reboot mean?

    They are shortcuts supported by most cron implementations: @hourly is 0 * * * *, @daily and @midnight are 0 0 * * *, @weekly is 0 0 * * 0, @monthly is 0 0 1 * *, and @yearly or @annually is 0 0 1 1 *. @reboot has no clock schedule — it runs once when the cron daemon starts.

    What is the difference between a range and a step?

    A range like 1-5 matches every value from the start to the end inclusive, while a step like */5 matches every fifth value starting from the field’s minimum. You can combine them with lists using commas to build more complex schedules.

    Is this cron generator free and private?

    Yes. The generator is free and runs entirely in your browser using client-side JavaScript. Nothing you build is sent to any server, so your schedules and any related data stay completely private on your own device.