We use cookies

We use cookies and similar technologies to enhance your browsing experience, analyze site traffic, and personalize content and ads. By clicking "Accept", you consent to our use of cookies. Learn more in our Privacy Policy.

*/

Cron Expression Builder

by Cosmovex

Timezone:
Cron Expression
Minute
Hour
Day
Month
Day
Runs:At 9:00 AM, on Monday
Format Variants
Linux cron
Standard 5-field crontab format
0 9 * * 1
AWS EventBridge
AWS CloudWatch Events / EventBridge
cron(0 9 ? * 1 *)
Description
Human-readable schedule
At 9:00 AM, on Monday
Visual Builder — click to configure each field
Minute0
Hour9
Day of Month*

Matches every value (wildcard)

Month*

Matches every value (wildcard)

Day of Week1
Next 10 Run Times (UTC)
#1Mon, Jun 8, 2026, 09:00:00in 4d
#2Mon, Jun 15, 2026, 09:00:00in 11d
#3Mon, Jun 22, 2026, 09:00:00in 18d
#4Mon, Jun 29, 2026, 09:00:00in 25d
#5Mon, Jul 6, 2026, 09:00:00in 32d
#6Mon, Jul 13, 2026, 09:00:00in 39d
#7Mon, Jul 20, 2026, 09:00:00in 46d
#8Mon, Jul 27, 2026, 09:00:00in 53d
#9Mon, Aug 3, 2026, 09:00:00in 60d
#10Mon, Aug 10, 2026, 09:00:00in 67d
Cron Syntax Reference
*Every value (wildcard)
*/NEvery N units
a-bRange from a to b
a,b,cSpecific values
a-b/NRange with step
0 9 * * 1-5Weekdays at 9AM
Minute
0–59
Hour
0–23
Day of Month
1–31
Month
1–12
Jan, Feb, Mar…
Day of Week
0–6
Sun, Mon, Tue…

More Developer Tools

View all tools →
.*
Regex Tester
Test & debug regular expressions
±
Diff Checker
Compare two blocks of text
🎨
Color Picker
Pick colors, convert formats
Unix Timestamp
Convert Unix timestamps
{ }
JSON Formatter
Format, validate & explore JSON
YAML Formatter
Lint, format & convert YAML
</>
XML Formatter
Beautify & validate XML
CSV Formatter
View & format CSV tables

A cron expression is a compact string that tells a scheduler when to run a job: every minute, every weekday at 9 AM, the first of the month, and so on. The syntax is terse and easy to get wrong, which is why a typo can silently send a job off at the wrong time. This builder lets you assemble a cron expression with dropdowns and toggles instead of memorizing field order, then shows the resulting expression, a plain-English description of what it means, and the next several run times so you can confirm it does what you intend.

Everything runs in your browser. The schedule is parsed and the next run times are computed on your own machine, so nothing you type is uploaded or stored on a server. Paste an existing expression to decode it, or build one from scratch and copy it into your crontab, CI config, or scheduler of choice.

How it works

A standard cron expression has five fields, separated by spaces:

* * * * *
│ │ │ │ └─ day of week (0-6, Sunday = 0)
│ │ │ └─── month (1-12)
│ │ └───── day of month (1-31)
│ └─────── hour (0-23)
└───────── minute (0-59)

Each field accepts more than a single number:

  • * means every value for that field.
  • 5 means exactly that value.
  • 1-5 is a range (Monday through Friday in the day-of-week field).
  • */15 is a step, here every 15 units.
  • 1,15,30 is an explicit list.

The builder maps each field to its own control so you don't have to count positions. As you change a value, the expression updates live, the description rewrites itself, and the upcoming run times recompute. You can also type an expression directly into the input to reverse-engineer something you already have.

A worked example

Say you want a backup to run at 2:30 AM every weekday. Build it field by field:

  • Minute = 30
  • Hour = 2
  • Day of month = * (any day)
  • Month = * (any month)
  • Day of week = 1-5 (Monday to Friday)

The result is:

30 2 * * 1-5

The builder reads this back as "At 02:30 on every day-of-week from Monday through Friday" and lists the next runs, e.g. tomorrow at 02:30, the day after at 02:30, skipping the weekend. If you instead wanted it every 30 minutes during business hours on weekdays, you'd use */30 9-17 * * 1-5. Checking the listed run times is the quickest way to catch a mistake before it ships.

Common use cases

Cron expressions show up far beyond the classic Unix crontab:

  • Server jobs — log rotation, database backups, cache warming, certificate renewal.
  • CI/CD pipelines — scheduled builds, nightly test runs, dependency-update checks.
  • Cloud schedulers — serverless functions and managed task runners that trigger on a cron schedule.
  • Container orchestration — periodic jobs that spin up a pod on a schedule.
  • App-level tasks — sending digest emails, generating reports, pruning stale data.

In each case the underlying syntax is the same five fields, so an expression you build here is portable. Always confirm the timezone the target system uses, since the same expression fires at different wall-clock times depending on whether the scheduler runs in UTC or local time.

Tips and gotchas

A few things trip people up:

  • Day-of-month and day-of-week are OR'd, not AND'd. If you set both to specific values (e.g. 0 0 13 * 5), the job runs on the 13th or on every Friday, not only on Friday the 13th. To target one, leave the other as *.
  • Sunday can be 0 or 7 in most implementations. Pick one and be consistent.
  • */N starts from zero, not from "now". */20 in the minute field fires at :00, :20, :40, not 20 minutes after you save it.
  • Steps don't evenly divide every range. */40 minutes fires at :00 and :40, then waits until :00 again, so the gap is uneven.
  • No timezone lives in the expression itself. The schedule is interpreted in whatever zone the scheduler is configured for.

Five fields vs. six (and seconds)

The classic cron format has five fields and its smallest unit is one minute, so it cannot express "every 10 seconds." Several modern schedulers extend the format with a leading seconds field, making six fields total:

* * * * * *
└─ seconds (0-59), then minute, hour, day, month, day-of-week

Some systems also add a trailing year field. These are extensions, not part of the original specification, so an expression that works in one scheduler may be rejected by another. Before copying an expression across systems, check how many fields the target expects. A six-field expression pasted into a five-field parser will misalign every value, which is a common source of "my job runs at a weird time" bugs. This builder focuses on the widely-supported five-field standard; if your platform needs seconds, add that field according to its own documentation.

Tips

  • Always check the next-run-times list before saving. It catches mistakes the expression alone hides.
  • Confirm whether your scheduler runs in UTC or local time. The expression carries no timezone of its own.
  • Leave day-of-month or day-of-week as `*` unless you specifically want the OR behavior between them.
  • Use `*/N` steps for regular intervals, but remember they count from zero, not from when you deploy.
  • Paste an existing expression into the input to decode an inherited cron line you don't recognize.
  • Keep a comment next to each cron line in your config so the next person knows what it does.

How to use Cron Expression Builder

  1. 1Pick the minute, hour, day, month, and weekday.
  2. 2The cron expression is generated for you.
  3. 3Read the plain-English summary and upcoming run times.
  4. 4Copy the expression into your crontab or scheduler.

Frequently asked questions

What does * * * * * mean in cron?

Five asterisks mean "every minute of every hour of every day." Each asterisk is a wildcard for one field: minute, hour, day-of-month, month, and day-of-week, in that order.

How do I run a cron job every 5 minutes?

Use `*/5 * * * *`. The `*/5` in the minute field fires at :00, :05, :10, and so on, every five minutes around the clock.

What's the difference between day-of-month and day-of-week?

They're separate fields and most schedulers OR them together. If you set both to non-wildcard values, the job runs when either matches, not only when both do. Leave one as `*` to avoid surprises.

Does the cron expression include a timezone?

No. The expression only describes the schedule. It runs in whatever timezone the scheduler is configured to use, which is often UTC on servers and cloud platforms.

Can cron run a job every few seconds?

Standard five-field cron has a one-minute minimum. Some schedulers add a leading seconds field for sub-minute scheduling, but that's a non-standard extension your specific platform has to support.

How do I schedule a job for weekdays only?

Set the day-of-week field to `1-5`, which covers Monday through Friday. For example, `0 9 * * 1-5` runs at 9:00 AM on weekdays.

Is Sunday 0 or 7 in cron?

Sunday is `0` in the original specification, and many schedulers also accept `7` as an alias for Sunday. Pick one convention and use it consistently.

Is anything I type here uploaded to a server?

No. The expression is parsed and the next run times are calculated in your browser, so nothing you enter leaves your device.

← All toolsRead our guides →