Cron Expression Builder
Write a cron schedule, read it back in plain English, and see exactly when it will next run.
About the Cron Expression Builder
Five fields, in order: minute, hour, day of month, month, day of week. Each takes a number, a range like `1-5`, a list like `1,15`, a step like `*/15`, or `*` for every value. Month and day-of-week also accept three-letter names, and `7` means Sunday as well as `0`.
The rule that catches people out is what happens when you restrict both day fields. `0 0 1 * 1` does not mean the first of the month when it falls on a Monday — it means the first of the month **or** any Monday, whichever comes round. Cron treats those two fields as OR when both are set, and AND everywhere else. The description here says so explicitly, and the next-run list proves it.
Those next run times are the part worth trusting. A description can be read the way you already expected; a list of timestamps cannot. They are calculated in your own timezone — which is worth remembering, because the server running your job may well be on UTC, and that is the commonest reason a schedule fires an unexpected number of hours off.
Shorthands like `@daily` and `@hourly` are expanded so you can see what they actually mean.
How it works
Type a cron expression, or build one from the fields.
Read the plain-English description to check it says what you meant.
Look at the next run times — they settle any remaining doubt.
Frequently asked questions
- What do the five fields in a cron expression mean?
- Minute, hour, day of month, month, day of week — in that order. `0 3 * * 1` is 03:00 every Monday.
- Does restricting both the day of month and day of week mean AND or OR?
- OR, which surprises nearly everyone. `0 0 1 * 1` fires on the first of the month and on every Monday, not only on first-of-the-months that are Mondays. Every other combination of fields is AND.
- How do I run something every 15 minutes?
- `*/15 * * * *`. The step syntax means "every nth value", so that expands to minutes 0, 15, 30 and 45 of every hour.
- Is Sunday 0 or 7?
- Both, in most implementations. `0` is standard and `7` is widely accepted as an alias. This tool treats them the same.
- What timezone do the next run times use?
- Yours, as your browser reports it. Your server very likely runs on UTC instead, and that mismatch is the usual explanation for a job firing at an unexpected hour.
- Why does my schedule show no upcoming runs?
- Because it can never fire. `0 0 30 2 *` asks for the thirtieth of February, which does not exist. The tool scans four years ahead — enough to catch a 29 February schedule — and reports nothing rather than pretending.
Privacy
Everything happens locally. Your files are read by your own browser, processed on your device, and never uploaded — closing the tab is all it takes to erase them.
Related tools
Regex Tester
Test regular expressions live with match highlighting and capture groups.
Code to Image
Turn a code snippet into a shareable image, with syntax highlighting and themes.
CSS Gradient Generator
Build linear, radial and conic CSS gradients visually and copy the code.
CSV to JSON Converter
Convert CSV to JSON and back, with proper quoting, type inference and a table preview.
JSON Formatter
Format, validate and minify JSON with clear error positions.
JWT Decoder
Decode a JSON Web Token's header and payload, and verify an HMAC signature.