Skip to main content

Cron Expression Builder & Tester

Paste a standard 5-field cron string and see the next five fire times in your local timezone, a plain-English description, and per-field validation. Free and 100% in your browser.

Minute
*/5
Hour
*
Day-of-Month
*
Month
*
Day-of-Week
*

Valid schedule

Every 5 minutes

Next 5 Execution Times (your local timezone)
  • Calculating upcoming run times…

Quick Presets

Next 5 Fire Times

Computed from your local clock so you can immediately verify whether the schedule lines up with your intent — no mental math, no surprises in staging.

Per-Field Validation

If any of the five fields is invalid, we tell you which one and why. Catches off-by-one ranges, illegal steps, and month/weekday name typos.

12 Common Presets

One-click templates for the schedules you actually use — every 5 minutes, hourly, daily at 9, weekdays, monthly-on-the-first, quarterly, yearly.

100% Client-Side

Parsing, validation, and next-fire calculation all run in your browser. Your scheduling logic stays local — no server logs, no analytics on the expression.

Cron Expression Builder: Test Any Schedule Against Real Fire Times

A cron expression is five space-separated fields — minute, hour, day-of-month, month, day-of-week — that define a recurring schedule. Paste one and this builder validates each field, writes a plain-English description, and lists the next five fire times in your local timezone. It targets standard 5-field UNIX cron used by GitHub Actions, Kubernetes, and Vercel Cron. Free, and 100% in your browser.

How to build and test a cron expression

  1. Pick the closest preset (every 5 minutes, daily at 9, weekdays, monthly, quarterly) to skip blank-page syntax recall.
  2. Edit the five fields directly — use * for "any", , for lists, - for ranges, and / for steps.
  3. Read the plain-English description to confirm the schedule matches your intent.
  4. Check the next five fire times, shown in your browser local timezone, for any weekday or day-of-month edge case.
  5. Convert to UTC if your runner needs it, then paste the expression into your crontab or workflow file.

What is cron and how the fields work

The cron daemon dates to Version 7 UNIX (1979), and the field format most systems use today was standardized by Paul Vixie in 1987. A standard expression has exactly five fields read left to right: minute 0-59, hour 0-23, day-of-month 1-31, month 1-12 (or JAN-DEC), and day-of-week 0-6 (or SUN-SAT, where both 0 and 7 mean Sunday). The behaviour is defined in the POSIX crontab specification (IEEE Std 1003.1, The Open Group).

The most surprising spec rule governs the two day fields. When both day-of-month and day-of-week are restricted (neither is *), cron uses OR logic, not AND. The POSIX text states the job runs when either the day-of-month or the day-of-week field matches the current day. This builder follows that rule exactly — so 0 0 1 * MON fires on the 1st of every month and on every Monday.

Worked examples: expression → meaning

Every 15 minutes

*/15 * * * * → fires at :00, :15, :30, :45 of every hour

Weekdays at 9 AM

0 9 * * 1-5 → minute 0, hour 9, Monday through Friday

Step from an anchor

5/10 * * * * → minute 5, then every 10th: :05, :15, :25, :35, :45, :55 (n/p runs from n to the field max)

Edge case · the timezone gotcha

0 9 * * 1-5 on GitHub Actions or Vercel fires at 9:00 AM UTC, which is 4:00 or 5:00 AM US Eastern depending on daylight saving — cloud runners ignore your local clock. This builder shows fire times in your browser local timezone, so subtract your UTC offset before pasting into a workflow file.

Cron field reference

The five fields and their allowed values, in order. All five accept *, ,, -, and /.

PositionFieldAllowed valuesAliases
1Minute0–59
2Hour0–23
3Day of month1–31
4Month1–12JAN…DEC
5Day of week0–6 (Sun=0)SUN…SAT
CharacterMeaningExample
*All values in the field* * * * * = every minute
,List of discrete values0 8,12,17 * * * = 8 AM, noon, 5 PM
-Inclusive range9-17 = 9 through 17
/Step value*/5 = every 5th, 10-20/2 = 10,12,14,16,18,20

Out of scope for 5-field cron: macros like @daily, a leading seconds field, and the L, W, and # characters — those belong to Quartz and AWS EventBridge. Quartz adds seconds at the front and an optional year at the end; AWS EventBridge adds a year and requires ?in either the day-of-month or day-of-week field.

The one-year horizon most testers do not mention

The next-fire engine advances one minute at a time and stops after 366 days(60 × 24 × 366 = 527,040 minutes). For everyday schedules that is invisible. But a rare expression like 0 0 29 2 * (midnight on Feb 29) can return fewer than five upcoming times — leap days are more than a year apart, so the scan hits its cap before finding them all. That is a deliberate guard against runaway loops, not a bug.

Two other behaviours worth knowing: the day-of-week field normalizes 7 to Sunday, and a wrap-around range such as 5-1 in that field is expanded to Friday, Saturday, Sunday, Monday — a convenience that pure Vixie cron does not always accept.

Runs 100% in your browser

Your data never leaves your device. Parsing, validation, the description, and the next-fire scan all run locally in JavaScript — no uploads and no server logs of your schedules. I tested this builder across every preset plus awkward cases: the leap-day expression 0 0 29 2 *, the day-of-month/day-of-week OR rule with 0 0 1 * MON, and weekday-name aliases like 0 17 * * FRI. The fire-time list stays instant.

Frequently asked questions

Is this cron builder free?

Yes — 100% free with no signup and no usage cap. Every step runs in your browser, so it works offline once the page loads.

Why does my GitHub Actions cron run at the wrong hour?

GitHub Actions and most cloud runners interpret cron in UTC, not your local timezone. This builder shows fire times in your local timezone, so subtract your UTC offset before pasting into a workflow file.

Can I use names like MON or JAN?

Yes. Day-of-week accepts SUN–SAT and month accepts JAN–DEC, case-insensitive. 0 17 * * FRI equals 0 17 * * 5 and fires every Friday at 5 PM.

What is the smallest interval cron supports?

One minute. Standard 5-field cron has no seconds field. For sub-minute precision use Quartz, systemd timers, or BullMQ.

Last updated: June 2, 2026 · Runs 100% in your browser — no uploads, nothing leaves your device.

Need a different tool?

Browse all 89 free, in-browser tools — or tell us what we should build next.

Browse all tools