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.
Valid schedule
Every 5 minutes
- 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
- Pick the closest preset (every 5 minutes, daily at 9, weekdays, monthly, quarterly) to skip blank-page syntax recall.
- Edit the five fields directly — use
*for "any",,for lists,-for ranges, and/for steps. - Read the plain-English description to confirm the schedule matches your intent.
- Check the next five fire times, shown in your browser local timezone, for any weekday or day-of-month edge case.
- 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 /.
| Position | Field | Allowed values | Aliases |
|---|---|---|---|
| 1 | Minute | 0–59 | — |
| 2 | Hour | 0–23 | — |
| 3 | Day of month | 1–31 | — |
| 4 | Month | 1–12 | JAN…DEC |
| 5 | Day of week | 0–6 (Sun=0) | SUN…SAT |
| Character | Meaning | Example |
|---|---|---|
| * | All values in the field | * * * * * = every minute |
| , | List of discrete values | 0 8,12,17 * * * = 8 AM, noon, 5 PM |
| - | Inclusive range | 9-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.
Related developer & scheduling tools
Convert Unix time to local for UTC offsets
Timezone ConverterTranslate a local schedule to UTC
UUID GeneratorTag each scheduled run with a correlation ID
Regex TesterValidate log patterns from scheduled jobs
JSON FormatterInspect job payloads and config
Number Base ConverterDecode hex and octal exit codes
HTTP Status CodesLook up codes from scheduled API checks
Hash GeneratorChecksum artifacts produced by a job
HMAC GeneratorSign webhook payloads from triggers
Random Number GeneratorJitter retry delays for scheduled tasks
All ToolsBrowse the full Toolk utility hub
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.