Cron Expression Builder
Build and explain cron expressions in plain English.
Five space-separated fields: minute hour day-of-month month day-of-week. Supports *, */n, a-b and a,b,c.
Mon, May 25, 2026, 09:00 AMTue, May 26, 2026, 09:00 AMWed, May 27, 2026, 09:00 AMThu, May 28, 2026, 09:00 AMFri, May 29, 2026, 09:00 AM
Times are shown in your local time zone.
How to use Cron Expression Builder
What this tool does
A cron expression is a compact five-field string that tells a scheduler when to
run a job. It is powerful but famously hard to read at a glance — 0 9 * * 1-5
gives no hint that it means “weekday mornings”. This tool fixes that. Type or build
an expression and it does three things: it validates the syntax, it translates the
expression into a plain-English sentence, and it calculates the next five times
the job would actually run. A row of preset buttons fills in common schedules so
you do not have to remember the syntax. Everything is computed inside your
browser.
Why you might need it
Cron expressions show up everywhere — system crontabs, CI pipelines, serverless
schedulers, database jobs, backup scripts. Writing one by hand is error-prone, and
a wrong expression fails quietly: the job simply runs at the wrong time, or never.
Reading someone else’s expression is just as hard. This tool gives you a fast
feedback loop. You can confirm that */15 * * * * really means “every 15 minutes”,
check that a nightly backup is not accidentally set to run every minute, and see
concrete upcoming run times rather than trusting your mental model of the syntax.
How to use it
- Type a cron expression into the field, or click a preset to fill it in.
- Read the green summary — the plain-English description of when the job runs.
- Check the Next 5 runs list to see concrete dates and times in your local time zone.
- Click Copy expression to copy the finished cron string into your crontab, CI config or scheduler.
If the expression is invalid, a red message explains exactly which field is wrong and why, so you can fix it immediately.
Field syntax explained
Each of the five fields accepts the same building blocks. A plain number like 5
matches that single value. An asterisk * matches every value in the field’s
range. A step such as */15 matches every 15th value starting from the minimum —
in the minute field that is :00, :15, :30, :45. A range like 1-5 matches
every value from 1 to 5 inclusive; in the day-of-week field that is Monday through
Friday. A list 1,15,30 matches each value you name. You can combine a range with
a step too: 0-30/10 matches 0, 10, 20 and 30. The fields, in order, are minute,
hour, day-of-month, month, and day-of-week, where day-of-week counts 0 for Sunday
through 6 for Saturday.
Common pitfalls
The single most surprising rule in cron is how the two day fields combine. When
both day-of-month and day-of-week are set to something other than *, the job
runs whenever either condition is true — not only when both are. So
0 0 13 * 5 runs at midnight on the 13th of every month and on every Friday,
which is rarely what people expect. Another trap is the time zone: this tool shows
your local time, but a server’s cron daemon uses the server’s own time zone, often
UTC. Always confirm which zone your scheduler runs in. Finally, this tool covers
the classic numeric syntax; it does not interpret shortcuts like @daily or
named values like MON and JAN, which only some cron implementations support.
Tips and advanced use
Use the next-run list as a sanity check before you deploy a schedule — if the
upcoming times do not look right, the expression is wrong no matter how plausible
it reads. When you want a job spread out rather than all firing on the hour, a
step like 7,37 * * * * or */20 avoids the thundering-herd effect of everything
running at :00. And because the whole tool runs locally, you can paste in
expressions from private infrastructure without any of it leaving your machine.
Frequently asked questions
Is my cron expression sent to a server?
What do the five fields mean?
What time zone are the next run times in?
How do day-of-month and day-of-week interact?
Does it support special strings like @daily or names like MON?
Related tools
JSONPath Tester
Test JSONPath queries against a JSON document.
Timestamp to Date
Convert Unix timestamps into readable dates.
Date to Timestamp
Convert dates into Unix timestamps.
SQL to JSON
Convert SQL INSERT statements into JSON.
JSON Schema Generator
Infer a JSON Schema from a sample document.
ASCII Table Reference
Browse the full ASCII character reference table.