Skip to main content
Prabhava Groups

Cron Expression Generator & Explainer

Type a cron expression to see it explained in plain English, or build one field by field. The next five run times are calculated instantly in your browser.

Five fields separated by spaces: minute hour day-of-month month day-of-week. Macros such as @daily work too.

In plain English

Next 5 runs

Time zone for run times
    Or edit each field

    0-59

    0-23

    1-31

    1-12 or JAN-DEC

    0-7 or SUN-SAT (0 and 7 are Sunday)

    Presets

    What is a cron expression?

    A cron expression is a compact string that tells a scheduler when to run a job. It is used by the Unix cron daemon, Kubernetes CronJobs, GitHub Actions schedules and many cloud services. The standard form has five fields: minute, hour, day-of-month, month and day-of-week. This tool turns that terse notation into a sentence and shows exactly when the job will fire next, so you can check a schedule before it reaches production.

    How to use this generator

    Paste an expression into the main box, pick a preset, or edit the five fields below it. The explanation and run times update as you type, and the fields and the expression stay in sync. Use * for "every", , for lists (1,15), - for ranges (9-17) and / for steps (*/10). Month and weekday names such as JAN or MON are accepted. Switch between local time and UTC to see how the schedule lines up with your server.

    Worked examples

    • 0 2 * * * runs every day at 02:00, a typical slot for backups when traffic is low.
    • */10 9-17 * * 1-5 runs every 10 minutes between 09:00 and 17:59, Monday to Friday. Handy for business-hours health checks.
    • 0 0 1,15 * * runs at midnight on the 1st and 15th of each month, a common payroll or billing rhythm.

    Common mistakes

    • Forgetting the time zone. Most servers and containers run in UTC, so 0 9 * * * fires at 09:00 UTC, not 09:00 where you sit.
    • Mixing day-of-month and day-of-week. If both are set, either match triggers the job. Restrict only one of them unless you want that behaviour.
    • Using */N with values that do not divide evenly. */45 * * * * fires at minute 0 and 45 of every hour, which is a 45-minute gap and then a 15-minute gap, not "every 45 minutes".
    • Pasting a 6-field Quartz expression. A leading seconds field shifts every other field one place to the left.

    Want the full picture? Read How Cron Syntax Works.

    Frequently asked questions

    What does */5 * * * * mean?

    It runs every 5 minutes, all day, every day. The */5 in the minute field means "every 5th minute starting from 0", so the job fires at minutes 0, 5, 10 and so on up to 55.

    Does this tool support 6-field or Quartz cron expressions?

    No. It supports the standard 5-field format used by Linux crontab, Kubernetes CronJobs, GitHub Actions and most schedulers. Quartz and Spring add a seconds field and characters such as ?, L and W, which are rejected with a clear message.

    Which time zone are the next run times shown in?

    You choose: your browser local time or UTC. The real time zone of a job depends on where it runs, and servers, containers and CI systems often default to UTC, so check that before relying on the preview.

    Why does my job run on days I did not expect?

    When both day-of-month and day-of-week are restricted, classic cron runs the job if either one matches. 0 0 13 * 5 fires on every 13th and on every Friday, not only on Friday the 13th.

    Is my cron expression sent to a server?

    No. Parsing, explanation and run-time calculation all happen in your browser with JavaScript. Nothing is uploaded or stored.