Cron Expression Generator & Explainer

Build cron expressions field-by-field or paste one to get a plain-English explanation and next 5 run times. Everything runs in your browser — no server calls.
* * * * *
Next 5 Run Times
    Most cron implementations treat day-of-month AND day-of-week restrictions as OR, not AND.

    About This Tool

    The Cron Expression Generator & Explainer lets you build valid cron syntax using individual fields or select from common presets, then copy the result directly into your crontab, Kubernetes CronJob manifest, GitHub Actions schedule: trigger, AWS EventBridge rule, or any other cron-compatible scheduler. Switch to Explainer mode to paste any 5-field expression and instantly see what it means in plain English, plus the next five execution times calculated in your local timezone.

    Every field supports the full cron mini-language: * (any value), comma-separated lists like 1,15,30, ranges like 1-5, step values like */15 or 0-12/2, and combinations thereof. Validation errors pinpoint the exact field and value that is out of range so you can fix them immediately.

    How to Use

    1

    Choose a Preset (optional)

    Click a preset button to fill common schedules instantly.

    2

    Edit Fields

    Adjust Minute, Hour, DOM, Month, or DOW fields. Errors appear in real time.

    3

    Copy Expression

    Click Copy to grab the generated expression for your scheduler.

    4

    Verify in Explainer

    Paste the expression in Explainer mode to confirm it runs when expected.

    Common Use Cases

    Kubernetes CronJobs
    Generate schedules for batch pods and data pipelines.
    GitHub Actions
    Create schedule: triggers for nightly CI or weekly reports.
    AWS EventBridge
    Build cron rules for Lambda functions and ECS tasks.
    Linux crontab
    Schedule shell scripts, backups, and maintenance tasks.

    Frequently Asked Questions

    What does the asterisk (*) mean in a cron expression?
    An asterisk means "every possible value" for that field. For example, * * * * * runs every minute of every hour of every day. 0 * * * * runs at minute 0 of every hour (i.e. once per hour on the hour). Replace an asterisk with a specific number, list, range, or step expression to restrict when the job fires.
    How do step values like */15 work?
    */15 in the minute field means "every 15 minutes": 0, 15, 30, 45. The syntax is range/step where * is shorthand for the full valid range. 0-30/10 means every 10 minutes from 0 to 30: 0, 10, 20, 30. Steps let you express regular intervals without listing every value.
    Why does setting both day-of-month and day-of-week produce unexpected results?
    Most cron implementations (Vixie cron, crond, Quartz with exceptions) use OR logic when both DOM and DOW are restricted (i.e. neither is *). A job set to run on the 15th AND on Fridays will actually run on the 15th of each month OR on any Friday — whichever comes first. If you need AND logic, you must combine them with an if check inside your script.
    Do GitHub Actions and Kubernetes use the same cron syntax?
    They both use the standard 5-field Unix cron syntax and are compatible with expressions from this tool. One important difference: GitHub Actions schedules run in UTC, while Kubernetes CronJob schedules run in the timezone of the cluster's control plane (usually UTC unless configured otherwise with timeZone: in Kubernetes 1.25+). Always account for the timezone when scheduling time-sensitive jobs.
    Why does cron have minimum 1-minute resolution?
    The Unix cron daemon wakes up once per minute, reads the crontab, and fires matching jobs. Sub-minute scheduling is not part of the cron standard. For sub-minute intervals, use a different scheduler: Kubernetes allows sub-minute work via init containers and loop scripts, or you can use tools like APScheduler (Python), node-cron (Node.js with second-level support), or Quartz Scheduler (Java) which add a seconds field.
    What is the difference between 0 and 7 for the day-of-week field?
    Both 0 and 7 represent Sunday in most cron implementations, including Vixie cron and the GNU cron (crond). The range is officially 0–6, but 7 is accepted as an alias for Sunday for historical reasons. This tool validates 0–6 only. For portability, prefer 0 for Sunday. Day-of-week 1 = Monday, 5 = Friday, 6 = Saturday.
    ✓ Copied!