Cron Expression Generator
Build and read cron schedules — in plain English, with the next run times.
Every 5 minutes
- Mon, 3 Aug 2026, 13:40
- Mon, 3 Aug 2026, 13:45
- Mon, 3 Aug 2026, 13:50
- Mon, 3 Aug 2026, 13:55
- Mon, 3 Aug 2026, 14:00
About Cron Expression Generator
A cron expression generator builds the five-field schedule strings that crontab, CI pipelines, and schedulers use. Type an expression or pick a preset, and it translates the schedule into plain English and lists the next five times it will run in your time zone — so you can confirm a job fires when you expect before you ship it. Everything runs in your browser.
The five fields, in order
A standard cron expression is minute, hour, day of month, month, day of week — left to right, smallest unit first. Each field takes a number, a list separated by commas, a range with a hyphen, a step with a slash, or an asterisk meaning every value. So a schedule of 0 3 * * 1 runs at 03:00 on Mondays, and */15 9-17 * * 1-5 runs every fifteen minutes between 09:00 and 17:59 on weekdays.
Reading right to left is often easier when you are checking someone else's expression: establish which days first, then which hours, then which minutes. Most mistakes are a field out of position, and they are much easier to spot that way than by parsing left to right.
The day-of-month and day-of-week trap
These two fields do not behave like the others. When both are restricted — neither is an asterisk — cron treats them as OR, not AND. So 0 0 1 * 1 does not mean the first of the month when it falls on a Monday. It means the first of every month, and also every Monday, which is roughly five times more often than intended.
There is no way to express AND in standard cron. If you genuinely need the first Monday of the month, the usual approach is to schedule it for every Monday and have the job itself check the date and exit early. Leave one of the two fields as an asterisk unless you actively want the OR behaviour.
Time zones and daylight saving
Cron runs against the clock of whatever machine it is on, which is frequently UTC on a server and local time on a laptop. That difference alone accounts for a lot of jobs that fire at surprising hours. Always confirm the time zone the scheduler uses, and prefer setting it explicitly where the platform allows.
Daylight saving makes local-time schedules genuinely ambiguous twice a year. When clocks go forward, a job scheduled for 02:30 has no 02:30 to run at and is typically skipped; when they go back, that time occurs twice and the job may run twice. Anything that must not be skipped or duplicated — billing, reports, data exports — belongs on a UTC schedule, or outside the 01:00–03:00 window.
Writing schedules that behave
Avoid the top of the hour when you can. Everything in the world is scheduled at 0 * * * *, so a job at exactly midnight competes with every backup, log rotation, and cache purge on the machine. Shifting to 7 or 23 minutes past costs nothing and avoids the pile-up. When many jobs run on the same fleet, spreading their start minutes matters more than the exact time.
Also assume runs will overlap. Cron starts a new instance on schedule whether or not the previous one finished, so a five-minute job on a three-minute schedule eventually stacks up until the machine falls over. Use a lock file or the scheduler's own concurrency setting, and make the job safe to run twice — that assumption will be tested sooner or later.
Frequently asked questions
- What do the five fields in a cron expression mean?
- In order: 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). An asterisk means 'every'. So '0 9 * * 1-5' is 9:00 AM, Monday through Friday.
- What does * * * * * mean?
- Every asterisk means 'every value', so * * * * * runs the job every minute of every hour, every day. It's the most frequent schedule standard cron can express.
- What does */5 mean in cron?
- A slash is a step value: */5 in the minute field means 'every 5th minute' — 0, 5, 10, and so on. You can combine it with ranges too, like 0-30/10 for minutes 0, 10, 20, and 30.
- Does cron use UTC or local time?
- Cron runs in the server's time zone, which is often UTC but not always. This tool lists the next runs in your own time zone, so check what your server is set to before relying on the times you see here.
- How do I run a job every day at midnight?
- Use '0 0 * * *' — minute 0 of hour 0, every day. It's one of the presets, and the next-run list confirms it before you deploy.
- Why does setting both day of month and day of week behave oddly?
- When both fields are restricted, standard cron treats them as OR, not AND — the job runs if either matches. For example '0 0 13 * 5' runs on the 13th AND every Friday, not only Friday the 13th. The next-run preview makes this easy to spot.

