cron syntax. made simple.

build cron expressions visually or paste one to decode it. see the next 5 run times instantly.

Expression
min
hour
dom
mon
dow
Human Readable

at minute 0 of every hour

Next 5 Runs
  • 1Thu, Jun 4, 2026, 07:00 PM
  • 2Thu, Jun 4, 2026, 08:00 PM
  • 3Thu, Jun 4, 2026, 09:00 PM
  • 4Thu, Jun 4, 2026, 10:00 PM
  • 5Thu, Jun 4, 2026, 11:00 PM

What this tool does

Build a cron expression visually — pick the minute, hour, day, and so on — or paste an existing expression and see it decoded. The next five fire times are computed live, so you can sanity-check that the schedule actually does what you meant.

The five-field shape

A standard cron expression is five space-separated fields:

text
* * * * *
| | | | |
| | | | +-- day of week  (0-6, Sunday = 0)
| | | +---- month        (1-12)
| | +------ day of month (1-31)
| +-------- hour         (0-23)
+---------- minute       (0-59)

Each field can be a single number, a list (1,15,30), a range (9-17), a step (*/5 = every 5 units), or any combination. *means “every value of this field.”

Common expressions, decoded

  • 0 * * * * — every hour, on the hour.
  • */15 * * * * — every 15 minutes (at :00, :15, :30, :45).
  • 0 9 * * 1-5 — 9:00 AM, Monday through Friday.
  • 0 0 1 * * — midnight on the 1st of every month.
  • 0 0 * * 0 — midnight every Sunday.
  • 30 2 * * 1 — 2:30 AM every Monday.

The day-of-month / day-of-week trap

If both day-of-month and day-of-week are specified (neither is *), most cron implementations run the job when either matches — not both. This is usually the opposite of what people expect.

Example: 0 12 1 * 1means “noon on the 1st of the month, OR noon on Mondays.” If you wanted “the 1st anda Monday,” cron alone cannot express it — you need application-level filtering.

Cron flavors

The five-field shape above is the original Unix cron from 1975 and the most widely supported. Several extensions exist:

  • Quartz cron (Java) — adds a seconds field at the start and a year field at the end (7 fields). Used by Quartz Scheduler, Spring, many Java schedulers.
  • AWS cron — for EventBridge / CloudWatch Events. Adds a year field, uses ? where Unix would use * for one of the day fields.
  • Vixie cron predefined names @hourly, @daily, @weekly, @monthly, @yearly, and @reboot. Convenience aliases for the most common patterns.

This tool produces standard five-field Unix cron, which is accepted by Linux cron, GitHub Actions, GitLab CI, Vercel cron, Cloudflare cron triggers, and most scheduler platforms.

Confirm your platform's timezone

Cron itself has no timezone — it runs on whatever the host machine's clock says. Different platforms set this differently: GitHub Actions runs in UTC. Vercel cron runs in UTC. Linux cron runs in the system timezone (usually local). The same expression fires at different wall-clock times depending on where it lives. Confirm before scheduling anything time-sensitive.

What this tool does

Build a cron expression visually — pick the minute, hour, day, and so on — or paste an existing expression and see it decoded. The next five fire times are computed live, so you can sanity-check that the schedule actually does what you meant.

The five-field shape

A standard cron expression is five space-separated fields:

text
* * * * *
| | | | |
| | | | +-- day of week  (0-6, Sunday = 0)
| | | +---- month        (1-12)
| | +------ day of month (1-31)
| +-------- hour         (0-23)
+---------- minute       (0-59)

Each field can be a single number, a list (1,15,30), a range (9-17), a step (*/5 = every 5 units), or any combination. *means “every value of this field.”

Common expressions, decoded

  • 0 * * * * — every hour, on the hour.
  • */15 * * * * — every 15 minutes (at :00, :15, :30, :45).
  • 0 9 * * 1-5 — 9:00 AM, Monday through Friday.
  • 0 0 1 * * — midnight on the 1st of every month.
  • 0 0 * * 0 — midnight every Sunday.
  • 30 2 * * 1 — 2:30 AM every Monday.

The day-of-month / day-of-week trap

If both day-of-month and day-of-week are specified (neither is *), most cron implementations run the job when either matches — not both. This is usually the opposite of what people expect.

Example: 0 12 1 * 1means “noon on the 1st of the month, OR noon on Mondays.” If you wanted “the 1st anda Monday,” cron alone cannot express it — you need application-level filtering.

Cron flavors

The five-field shape above is the original Unix cron from 1975 and the most widely supported. Several extensions exist:

  • Quartz cron (Java) — adds a seconds field at the start and a year field at the end (7 fields). Used by Quartz Scheduler, Spring, many Java schedulers.
  • AWS cron — for EventBridge / CloudWatch Events. Adds a year field, uses ? where Unix would use * for one of the day fields.
  • Vixie cron predefined names @hourly, @daily, @weekly, @monthly, @yearly, and @reboot. Convenience aliases for the most common patterns.

This tool produces standard five-field Unix cron, which is accepted by Linux cron, GitHub Actions, GitLab CI, Vercel cron, Cloudflare cron triggers, and most scheduler platforms.

Confirm your platform's timezone

Cron itself has no timezone — it runs on whatever the host machine's clock says. Different platforms set this differently: GitHub Actions runs in UTC. Vercel cron runs in UTC. Linux cron runs in the system timezone (usually local). The same expression fires at different wall-clock times depending on where it lives. Confirm before scheduling anything time-sensitive.

more free tools

PDF utilities, image tools, developer helpers — all free, no signup.

Something wrong?