Cron Expression Parser
Translate a cron expression into plain English and see its next run times.
| Expression | */15 9-17 * * 1-5 |
|---|---|
| Means | Every 15 minutes during 09:00–17:59 on weekdays |
| Runs per day | 36 |
| Next run | Tue, 27 Oct 2026 16:00 (UTC) |
| Minute | 0, 15, 30, 45 |
| Hour | 9, 10, 11, 12, 13, 14, 15, 16, 17 |
| Day of month | every |
| Month | every |
| Day of week | 1, 2, 3, 4, 5 |
| # | Next run (UTC) | In |
|---|---|---|
| 1 | Tue, 27 Oct 2026 16:00 | 5 min |
| 2 | Tue, 27 Oct 2026 16:15 | 20 min |
| 3 | Tue, 27 Oct 2026 16:30 | 35 min |
| 4 | Tue, 27 Oct 2026 16:45 | 50 min |
| 5 | Tue, 27 Oct 2026 17:00 | 1 hr 5 min |
| 6 | Tue, 27 Oct 2026 17:15 | 1 hr 20 min |
| 7 | Tue, 27 Oct 2026 17:30 | 1 hr 35 min |
| 8 | Tue, 27 Oct 2026 17:45 | 1 hr 50 min |
| 9 | Wed, 28 Oct 2026 09:00 | 17 hr 5 min |
| 10 | Wed, 28 Oct 2026 09:15 | 17 hr 20 min |
*/15 9-17 * * 1-5 # Every 15 minutes during 09:00–17:59 on weekdays
Paste a cron expression to see what it actually means and exactly when it will next fire. Syntax errors are explained rather than just reported, and the next ten run times are calculated so you can confirm the schedule matches your intent.
Shorthands such as @daily and @hourly are understood,
and month and day names (JAN, MON) work too.
How it works
A cron expression is five fields separated by spaces:
minute hour day-of-month month day-of-week
Each accepts a number, a list (1,15), a range
(9-17), a step (*/5), or * for "every".
Combined: */15 9-17 * * 1-5 means every fifteen minutes between 9am
and 5pm, Monday to Friday.
The day-of-week trap. When day-of-month and
day-of-week are both restricted, cron treats them as OR, not AND.
So 0 0 1 * 1 runs on the 1st of the month and on every
Monday — not only on Mondays that happen to fall on the 1st. This surprises
nearly everyone, and the next-run list here makes it obvious.
Two more things that catch people out:
- Six fields is a different format. Quartz and Spring add a leading seconds field. Pasting a six-field expression into Unix crontab shifts every field by one, so a job you meant to run hourly runs at a completely different time.
- Timezone. Cron uses the server's local timezone, not yours. A job set for 02:00 runs at 02:00 wherever the server thinks it is — and during daylight-saving transitions a job can run twice or not at all.
On frequency: anything more often than once a minute is impossible, since minute is the smallest unit. If you need finer granularity, run a job every minute that loops internally, or use a proper queue worker.
Frequently asked questions
Why does my job run more often than expected?
Almost always the day-of-week OR rule. If both day-of-month and day-of-week are set, cron runs when EITHER matches. "0 0 1 * 1" fires on the 1st and on every Monday. To require both, leave one as * and check the condition inside your script.
What timezone does cron use?
The server's local timezone, which is often UTC and often not what you assume. Check with the date command on the server. Some cron implementations support a CRON_TZ variable at the top of the crontab.
What is the difference between */5 and 5?
*/5 in the minute field means every fifth minute — 0, 5, 10 and so on. A plain 5 means only at minute 5, once per hour. Mixing these up is the difference between 288 runs a day and 24.
Why does my six-field expression not work?
Six fields is the Quartz/Spring format, which adds seconds at the front. Unix cron expects five. Pasting six into crontab shifts everything by one position, so the schedule is silently wrong rather than rejected.
Can I run something every 30 seconds?
Not with cron — a minute is the smallest unit. Either run every minute and sleep 30 seconds for the second execution, or use a persistent worker or systemd timer, which supports sub-minute intervals.
What happens during daylight saving changes?
A job scheduled in the hour that is skipped forward may not run at all; one in the repeated hour may run twice. If that matters, schedule outside 01:00-03:00 or set the server to UTC, which has no transitions.
Related tools
Cron Expression Generator
Build a cron schedule from dropdowns and preview the next runs.
Server ConfigUnix Timestamp Converter
Convert Unix timestamps to dates and back, in any timezone.
Developer UtilitiesTime Zone Converter
Instantly convert a date and time between any two global time zones.
Developer UtilitiesBackup Script Generator
Create bash scripts to automate database and file backups via cron.
Server ConfigNginx Config Generator
Build an nginx server block for PHP, WordPress, Laravel, SPAs or a proxy.
Server Config.htaccess Generator
Build an .htaccess file for redirects, HTTPS, caching and security.
Server ConfigNeed hosting that just works?
Free SSL, daily backups and 24×7 support on every Loudhost plan.