Skip to content

Cron Expression Builder

Build standard 5-field or Quartz 6-field cron expressions visually, see the next 5 execution times, and read what they actually mean in plain English before deploying.

In your browseryour files never leave your device.

Learn more
Format
* * * * *
Every minute
Next 5 runs
Computed in your browser — local time
  1. 2026-05-22 04:50:00
    in 58 seconds
    today
  2. 2026-05-22 04:51:00
    in 1 minute
    today
  3. 2026-05-22 04:52:00
    in 2 minutes
    today
  4. 2026-05-22 04:53:00
    in 3 minutes
    today
  5. 2026-05-22 04:54:00
    in 4 minutes
    today
Presets (25)⌘Enter validate
*
Minute
*
Hour
*
Day (M)
*
Month
*
Day (W)

About this tool

Cron has used the same five-field syntax since 1975 — minute, hour, day-of-month, month, day-of-week — and people still get it wrong because the rules are subtle. Day-of-week starts on Sunday (0) in most implementations but Monday (1) in some. Both day-of-month and day-of-week active means OR not AND, which trips everyone the first time they hit it. * means every; */5 means every fifth value starting at zero; specific values like 0 9 mean minute 0 of hour 9 (i.e. 9 AM exactly). This builder lets you pick from common presets or set each field via dropdown. As you change anything, the cron string and a plain-English description update together — so before you commit "0 9 * * 1" to a crontab, you read "At 09:00, only on Monday" and confirm that is what you wanted.

How to cron expression builder

  1. Pick a preset or start fresh

    Common schedules are one click away — every minute, hourly, daily midnight, Monday 9 AM, monthly. Or set each field manually if your schedule is unusual. The defaults are all "every" (*) which means the job runs every minute, which is rarely what you actually want but is a clean starting point.

  2. Adjust the fields

    Minute, hour, day-of-month, month, day-of-week. Each has a dropdown of sensible options plus the option to type a value directly. Common values: minute can be 0 (top of the hour), */5 (every 5 minutes), or specific minute. Hour can be a specific 0-23 value or */N for "every N hours". Day-of-week supports ranges (1-5 for Mon-Fri) and lists (0,6 for weekends).

  3. Read the description

    Plain English explains when the job runs. "At 09:00 on Monday through Friday" is much harder to misread than 0 9 * * 1-5. If the description does not match your intent, fix the fields before you commit.

  4. Copy the expression

    One-click copy. Paste into crontab, .github/workflows/*.yml under "schedule.cron", a Kubernetes CronJob spec's spec.schedule, an AWS EventBridge rule expression, or your scheduler of choice. The expression is the same everywhere.

Features

Visual field-by-field editing

Dropdowns for minute, hour, day-of-month, month, and day-of-week. Each dropdown shows human-readable options ("Every 15 min", "Mon-Fri", "January") next to the cron syntax they generate. The 5-field expression updates as you change any field, and the dropdowns update if you type the expression directly — so you can work from either end.

Plain-English description

Below the cron expression, a sentence describes when the job will run: "At 09:00, on Monday." This catches the off-by-one mistakes that cause a job to run 6 hours late, or run every day instead of weekly, before they become a 3 AM PagerDuty alert. The description is generated from the expression, not from the dropdowns, so it correctly describes anything you paste in — including expressions someone else wrote.

Next 5 run times computed live

Below the description, the tool computes the next 5 execution times in your local timezone using cron-parser — the same library most Node.js cron schedulers use. Each row shows the absolute datetime ("2026-05-19 09:00:00"), a relative hint ("in 18 hours", "tomorrow", "in 3 days"), and a small chip marking whether the run is today, this week, or further out. The list updates instantly as you edit the expression. Toggle "Show 10" if 5 is not enough to confirm a long cadence. This is the fastest way to catch an expression that looks right but actually fires every day instead of every Monday — you see the dates with your own eyes before deploying.

Preset shortcuts

One-click presets for the schedules everyone actually uses: every minute, every hour, daily at midnight, Monday 9 AM, monthly on the 1st. Clicking a preset fills both the expression and all the field dropdowns so you can fine-tune from there. These five cover maybe 70% of all cron expressions in the wild; the rest are slight variations on these.

Frequently asked questions

Standard 5-field cron or 6-field (with seconds)?
5-field — minute, hour, day-of-month, month, day-of-week. The Unix vixie-cron format and what GitHub Actions, Kubernetes, AWS EventBridge, and most other schedulers use. The 6-field format (with a leading seconds field) is Quartz Scheduler syntax, common in Spring Boot and some Java schedulers. This tool supports both — toggle between Unix and Quartz at the top, and the field editors, presets, validation, and next-runs panel all adapt. Cron does not have sub-minute resolution natively; for second-level scheduling, you usually want a different scheduler entirely.
Can I see when my cron will actually run?
Yes — the tool computes the next 5 execution times for any valid expression and shows them right under the plain-English description. Each row shows the absolute date in your local timezone (formatted as "YYYY-MM-DD HH:MM:SS") and a relative hint like "in 18 hours" or "tomorrow." Click "Show 10" to see more runs if 5 is not enough to confirm the cadence. The computation runs in your browser via cron-parser — no server roundtrip, no data leaves the page. If the expression is invalid or describes a moment that never fires (like February 30), the panel disappears and the validation toast explains why. This is the single fastest way to verify that "0 0 * * 1" really means what you think before you commit it to a crontab or a CI workflow.
Day-of-week starts at 0 (Sunday) or 1 (Monday)?
Both conventions exist and which one your scheduler uses depends on the implementation. Vixie cron (Linux crontab, most cloud schedulers) uses 0 = Sunday, 6 = Saturday, with 7 also accepted as Sunday for compatibility. ISO 8601 starts on Monday = 1. This builder uses the Vixie convention (Sunday = 0) because that is what most cloud schedulers accept. Always check your scheduler's docs to confirm — getting this wrong off by one day is a classic cron gotcha.
What happens when day-of-month and day-of-week are both specified?
They OR together, not AND. So "0 0 15 * 1" means "at midnight on the 15th of any month OR on any Monday" — not "the 15th, only if it falls on a Monday." This is genuinely counterintuitive and causes more cron bugs than any other rule. If you want AND, you have to use the same field for both or accept the broader schedule. The workaround is to leave one field as * and handle the constraint in your job code.
Where can I use a 5-field cron expression?
Linux crontab (the original), GitHub Actions (with the caveat that GitHub queues jobs at peak times and may delay them by minutes), GitLab CI scheduled pipelines, AWS EventBridge schedule rules (which support both cron and rate expressions), Google Cloud Scheduler, Azure Logic Apps recurring triggers, Kubernetes CronJobs (with seconds-accurate scheduling in newer versions), Vercel cron jobs, Cloudflare Workers cron triggers, Docker Compose with a cron sidecar, ofelia for Docker, Airflow DAG schedules, and most CI/CD tools. The syntax is universal across the ecosystem.