Developer tool

Cron Expression Generator

Build a valid five-field cron expression without memorizing the syntax. Pick a frequency, fill in the time, and get a live expression plus the next 5 scheduled run times.

Build your schedule

Every field updates the expression instantly — nothing to submit.

Months without this day (e.g. day 31 in April) are skipped that month.

Accepts *, */N, A, A-B and A-B/N per field, comma-separated.

Cron expression

0 9 * * *
Invalid schedule
Next run (UTC)
—
Time until next run
—

Current time (UTC): — · Runs daily at 09:00 UTC.

Next 5 scheduled runs (UTC)

    What this cron expression generator does

    Cron syntax is compact and useful — and easy to get backwards. Is it minute-hour-day, or hour-minute-day? Does a day-of-week of 1 mean Sunday or Monday? This tool removes that guesswork: pick a frequency in plain English, fill in a time or a day, and it assembles the correct five-field cron expression for you, live, with no button to press.

    It also does the part most cron tools skip — it shows you the next 5 times the schedule would actually fire, in UTC, so you can confirm the expression does what you meant before it goes anywhere near production.

    How to use it

    Four steps — most schedules only need a frequency and a time.

    1. Pick a frequency.Every minute, every N minutes, hourly, daily, weekly, monthly, or a fully custom five-field expression.
    2. Fill in the details.Depending on the frequency, that's a time of day, a day of the week, a day of the month, or the raw cron fields themselves.
    3. Read the generated expression.The five-field cron string and a plain-English description update as you type.
    4. Check the next runs.The next 5 scheduled run times (UTC) confirm the schedule fires when — and only when — you expect.

    How a cron expression is structured

    A standard cron expression is five space-separated fields, each restricting one part of the calendar. Reading left to right: minute, hour, day of month, month, day of week. An asterisk means "every value is allowed" for that field; a number pins it down; a comma-separated list or a range (1-5) allows several values; and a step (*/15) repeats at an interval.

    The day-of-month / day-of-week gotcha

    Per the POSIX crontab specification, if both the day-of-month and day-of-week fields are restricted (neither is *), the job runs whenever either condition is true — not only when both match. 0 0 1 * 1 therefore fires on the 1st of every month and every Monday, not just a Monday that happens to be the 1st. If only one of the two fields is restricted, that field alone controls the day.

    Which timezone does it run in?

    Cron has no built-in timezone of its own — it uses whatever timezone the host machine or scheduler is set to. This tool's "next run" preview assumes UTC so it's consistent regardless of where you're reading this from; if your server or scheduler runs in local time, offset accordingly, or check the schedule against the meeting planner if the job needs to line up with a specific region.

    Quick examples

    Common schedules and the expression each one produces.

    ScheduleCron expression
    Every minute* * * * *
    Every 15 minutes*/15 * * * *
    Once an hour, on the hour0 * * * *
    Daily at midnight UTC0 0 * * *
    Daily at 9:30 AM UTC30 9 * * *
    Weekdays at 6:00 PM UTC0 18 * * 1-5
    Every Sunday at 3:00 AM UTC0 3 * * 0
    1st of every month at midnight0 0 1 * *

    Need to convert a run time into your own local clock, or double-check a 24-hour value? The Unix timestamp converter and ISO 8601 converter are useful next to a cron schedule when logs or job runners report times in a different format.

    Who uses it, and for what

    • Backend & DevOps engineers scheduling crontab entries, Kubernetes CronJobs, or systemd timers.
    • CI/CD pipelines — GitHub Actions and GitLab CI both accept the same five-field schedule/cron syntax.
    • Cloud & serverless jobs — scheduled Lambda functions, Cloud Scheduler, and similar services that accept standard cron strings.
    • Anyone auditing an existing expression who wants to confirm what it actually runs, and when, before trusting it.

    If the job needs a start point rather than a recurring cycle — say, a one-off task some fixed number of hours from now — the time from now calculator is a better fit than cron.

    Frequently asked questions

    What is a cron expression?

    A cron expression is a compact five-field string — minute, hour, day of month, month, and day of week — that tells a scheduler when to run a recurring job. It comes from the Unix cron daemon and is now used by crontab, CI/CD pipelines, and most cloud schedulers.

    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). An asterisk means every value in that field is allowed.

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

    Per the POSIX crontab specification, when both fields are restricted the job runs if either condition is true, not only when both are true. Day-of-month 1 and day-of-week 1 (Monday), for example, fires on the 1st of the month and on every Monday.

    What timezone do cron jobs run in?

    Cron itself has no built-in timezone; it uses whatever timezone the host system or scheduler is configured with. This tool previews the next run times in UTC — check your server or scheduler's configured timezone before relying on the exact clock time.

    How do I run a job every 15 minutes?

    Use a step value in the minute field: */15 * * * * runs at minutes 0, 15, 30 and 45 of every hour. Choose "Every N minutes" above and enter 15 to generate this automatically.

    Does this work for GitHub Actions, Kubernetes, or AWS EventBridge?

    GitHub Actions schedule triggers and Kubernetes CronJobs both use the same five-field POSIX-style syntax this tool generates. AWS EventBridge uses a six-field cron syntax with some different rules, so double-check its documentation before pasting an expression there.

    Is this cron generator free, and does it store my schedule?

    Yes — it's free with no sign-up, and the entire schedule builder runs in your browser. Nothing you enter is uploaded or stored on a server.

    Accuracy & sources

    The generator assembles each expression directly from the fields you set — there's no hidden translation step — and the "next run" preview steps forward through the calendar checking each field against your schedule exactly as a cron daemon would, including the day-of-month/day-of-week OR-rule described above. Every worked example on this page has been independently verified by hand.

    The five-field syntax and the day-of-month/day-of-week matching rule follow the POSIX / IEEE Std 1003.1 crontab specification. Written and reviewed by Fletcher Langley, and re-checked whenever the tool changes — last reviewed August 2026.

    About the author

    Fletcher Langley
    Time & Scheduling Specialist · 24hourto12hour.com

    Operations and workforce-systems specialist with 14+ years inside shift-based industries and payroll platforms, and a BS in Industrial Engineering. Fletcher writes and reviews the calculators, converters, and guides here — from overnight-shift math to decimal payroll hours — drawing on years spent translating between clock formats and scheduling syntax for real systems.

    Written & reviewed by Fletcher Langley · Last updated: August 2026