Skip to main content
Tools Harbor

Cron Expression Builder

Build cron expressions for Unix, Kubernetes, AWS EventBridge and Quartz — with a human-readable description and the next 5 run times.

* * * * *

Every minute of every day

Next 5 runs

Calculating…

Common schedules

Syntax

  • * — any value
  • 5 — exact value
  • 1,3,5 — list of values
  • 1-5 — inclusive range
  • */15 — every 15 units (also 0/15 in AWS / Quartz)

A cron expression is a short string that tells a scheduler when to run a job. Standard Unix cron uses five fields — minute, hour, day-of-month, month, day-of-week — like 0 9 * * 1-5 for “every weekday at 9 AM”. AWS EventBridge uses six fields with a cron(...) wrapper, and Quartz Scheduler uses seven (adding a leading seconds field). Use the form above to build any flavor with a live human-readable description and the next 5 run times.

New to cron? Start with what is a cron job? for a plain-English walkthrough of the syntax and where these jobs run.

For ready-to-paste expressions covering the most common schedules (every 5 minutes, daily at midnight, every weekday, first of the month), see the common cron schedules hub.

For platform-specific guides:

Which cron flavor do I need?

Switch between Unix / Linux mode (5 fields — minute, hour, day-of-month, month, day-of-week) for crontab, Kubernetes, GitHub Actions and most schedulers. Use AWS EventBridge mode (6 fields — adds year, wraps the output in cron(...), requires ? for one of day-of-month or day-of-week) for EventBridge Rules and Scheduler. Use Quartz mode (7 fields — adds a leading seconds field, year is optional) for Java applications, Spring’s @Scheduled annotation, and any framework that embeds the Quartz library. The form, presets and validation update with the mode.

What are the five Unix cron fields?

minute  hour  day-of-month  month  day-of-week
  *      *         *          *        *
 0-59   0-23      1-31       1-12     0-6 (Sun=0)

What are the six AWS EventBridge cron fields?

minute  hour  day-of-month  month  day-of-week  year
  *      *         ?          *      MON-FRI     *
 0-59   0-23   1-31 / ?      1-12  1-7 (Sun=1)  1970+

Cron syntax cheat sheet

  • * — any value.
  • 5 — this exact value.
  • 1,3,5 — a list of values.
  • 1-5 — an inclusive range.
  • */15 — every 15 units (AWS prefers 0/15 for the same meaning).
  • ? — AWS only: required for whichever of day-of-month or day-of-week is unconstrained.
  • 2#1, 6L, L — AWS extensions for “first Monday of month”, “last Friday of month” and “last day of month”. The next-run preview supports these.

When should I use cron vs a workflow scheduler?

  • Simple time-based schedules — “every Monday at 9 AM”, “first of the month”.
  • Systems without a workflow service — cron is on every Unix-like OS, every CI runner, every Kubernetes cluster.
  • Cheap recurring jobs — no per-trigger billing, no infrastructure beyond a row in a config file.

When you need anything dynamic (schedule based on state, retries, dependencies between jobs), reach for a workflow scheduler instead — Argo Workflows, Airflow, Step Functions, Temporal.

Frequently asked questions

Which cron flavors does this tool cover?
Three: standard 5-field Unix cron (Linux crontab, Kubernetes CronJobs, GitHub Actions); 6-field AWS EventBridge (adds a year field, requires `?` for one of day-of-month or day-of-week, always UTC); and 7-field Quartz (Java schedulers, Spring `@Scheduled`) which adds a leading seconds field for sub-minute precision. Switch with the mode toggle — the form, presets, validation and next-run preview all adapt.
What''s the difference between Quartz and AWS EventBridge cron syntax?
Quartz uses 7 fields (`seconds minute hour day-of-month month day-of-week year`, year optional), AWS uses 6 (no seconds, year mandatory). Quartz expressions are bare strings (`0 0 12 * * ?`); AWS wraps in `cron(...)` (`cron(0 12 * * ? *)`). Both share day-of-week 1–7 (Sun=1), the `?` rule for unconstrained dom/dow, and the `#` and `L` operators for nth/last weekday. To port Quartz → AWS, drop the leading seconds field and append a year (or `*`); to port AWS → Quartz, prepend `0` for the seconds field.
What is the difference between day-of-month and day-of-week in Unix cron?
They combine as an OR, not an AND. `0 9 15 * 1` runs at 9 AM on the 15th of every month AND every Monday. To restrict to "9 AM on Mondays" leave day-of-month as `*`. To restrict to "9 AM on the 15th" leave day-of-week as `*`. AWS EventBridge avoids this trap by requiring `?` for whichever field is unconstrained.
Why does the AWS preview only show UTC times?
AWS EventBridge Rules evaluate cron expressions in UTC with no timezone option. EventBridge Scheduler (the newer service launched 2022) supports per-schedule timezones, but the cron expression itself remains the same — you set the timezone separately in the schedule resource. Always express the time you want in UTC when writing the rule.
Are @daily, @hourly and other shortcuts supported?
Many cron implementations (Vixie cron, anacron, GitHub Actions, Kubernetes CronJobs) accept shortcuts like `@daily`, `@hourly`, `@weekly`. They are shorthand for the standard 5-field expressions — this builder outputs the expanded form for maximum portability. AWS EventBridge does NOT accept `@daily`-style shortcuts.
How accurate are the next-run times?
For standard cron syntax (`*`, ranges, lists, `*/N`) the next-run preview is exact. The AWS extensions `2#1` (first Monday of month), `6L` (last Friday) and `L` (last day of month) are also computed correctly. The `W` modifier (nearest weekday to a date) is not yet supported — expressions using `W` will produce a valid AWS string, but the preview ignores the W constraint.