Cron Expression Builder & Decoder

Paste, build, and decode cron expressions for Unix, Quartz, AWS EventBridge, and Cloudflare Workers.

100% in your browser. Nothing uploaded.

Cron expression

Try:

Field builder

Pick fields to update the expression. Anything outside these presets stays free-form in the input above.

Next 10 fire times

    Cron syntax cheatsheet

    What is a cron expression?

    Simplify your scheduling with our comprehensive cron expression tool. Whether you're a DevOps engineer or a web developer, our builder helps you create complex cron schedules with ease. Paste an existing expression to decode it into plain English and view the next 10 scheduled fire times, or build a new one using our intuitive dropdown interface. Supporting multiple flavors including Unix, Quartz, and Cloudflare, this tool ensures your scheduled tasks run exactly when they should.

    The unfortunate part is that those extensions are not consistent across flavors. EventBridge requires you to put ? in exactly one of day-of-month and day-of-week; Cloudflare rejects the @yearly alias; Quartz uses a different day-of-week numbering than classic Unix. Pasting a five-field expression into the wrong runner is a great way to wake up on Saturday to discover your nightly backup never ran.

    This page is the round-trip workshop for that: paste an expression and the page shows what it means in plain English plus the next ten fire times in the timezone you pick. Tweak the field-builder controls and the expression updates live, so you can land on a schedule that actually does what you want before you ship it.

    FAQ

    What flavors of cron does this builder understand?

    Four: classic Unix (5 fields), Quartz (6–7 fields with seconds and an optional year), AWS EventBridge (6 fields with a required year and a ? in either day-of-month or day-of-week), and Cloudflare Workers cron (5 fields, no @yearly aliases). Each flavor has subtly different rules — picking the wrong one is the most common reason a schedule misfires in production.

    Are the next run times computed locally?

    Yes. The schedule iterator runs entirely in this tab against the timezone you pick. Nothing about your expression, your timezone, or what you are scheduling is sent to a server. The page can be saved and used on an air-gapped machine after the first load.

    Why does AWS EventBridge complain about my expression?

    EventBridge does not let you specify both day-of-month and day-of-week — one of them must be ?. It also requires a year field and rejects @reboot / @yearly aliases. The flavor selector enforces these rules and shows the exact reason an expression is rejected before you ship it.

    What does the timezone selector change?

    It changes the wall clock the schedule is interpreted against. A cron expression like 0 9 * * 1-5 means 9am in whatever timezone the cron runner is configured to use. Unix cron typically runs in the host's local time; Quartz, EventBridge, and Cloudflare Workers all default to UTC. Match the selector to your runner.

    Can I share a generated expression with a teammate?

    Yes. The Share button copies a URL that encodes the current expression, flavor, and timezone. Open the link and the page loads the same state — handy for filing an incident ticket or pasting into a PR description.

    Why does the page warn that an expression is valid in one flavor but not another?

    Because the same five-field string can mean different things. Step values, ranges, L (last), W (weekday), and # (nth weekday) are accepted by Quartz and EventBridge but rejected by Unix and Cloudflare. The builder validates against the selected flavor and lists the exact field that does not parse.