⏲️ Cron Expression Parser
Paste any 5-field cron expression — get what it means in plain English, the next 5 run times in your local timezone, and a field-by-field breakdown.
At 09:00, on Monday, Tuesday, Wednesday, Thursday and Friday.
| Field breakdown | ||
|---|---|---|
| 0 | Minute | 0–59 |
| 9 | Hour | 0–23 |
| * | Day of month | 1–31 |
| * | Month | 1–12 or JAN–DEC |
| 1-5 | Day of week | 0–7 or SUN–SAT (0 and 7 = Sunday) |
| Next 5 runs (your local time) |
|---|
| Mon, Jul 20, 2026, 09:00 AM |
| Tue, Jul 21, 2026, 09:00 AM |
| Wed, Jul 22, 2026, 09:00 AM |
| Thu, Jul 23, 2026, 09:00 AM |
| Fri, Jul 24, 2026, 09:00 AM |
Next-run times use your browser's timezone — the machine running the real crontab may use another (often UTC). Parsed entirely locally.
How the cron expression parser works
A cron expression is five fields — minute, hour, day-of-month, month, day-of-week — each accepting numbers, ranges (1-5), lists (1,15), steps (*/10) and names (MON, JAN). The parser expands each field to its matching values, explains the whole expression in plain English, and simulates the schedule forward to show the next run times in your local timezone — the fastest way to confirm a schedule does what you meant before it goes into a crontab or CI config. One subtlety it models correctly: when both day-of-month and day-of-week are restricted, classic cron fires when either matches (OR, not AND) — the single most common cause of jobs running more often than intended.
The classic footgun: "0 0 1 * 1" reads like "midnight on the 1st, if it’s a Monday" but actually fires on the 1st AND on every Monday — the two day fields OR together. If you need "the first Monday of the month", cron alone can’t say it; schedule Mondays and test the date in the job itself.
Frequently asked questions
What do the five cron fields mean?
In order: minute (0–59), hour (0–23), day of month (1–31), month (1–12 or JAN–DEC), day of week (0–7 or SUN–SAT, where both 0 and 7 are Sunday).
What does */15 mean?
"Every 15th value" — in the minute field it fires at :00, :15, :30 and :45. Steps combine with ranges too: 9-17/2 in the hour field means 9, 11, 13, 15 and 17.
Why does my job run more often than expected?
Usually the day-of-month/day-of-week OR rule: if both fields are restricted, matching either one triggers the job. "0 0 1 * 1" runs on the 1st and every Monday, not only when they coincide.
What timezone are the next-run times shown in?
Your browser’s local timezone. Remember the server running the real crontab uses its own timezone (often UTC) — a frequent source of off-by-hours surprises.
Does it support @daily and 6-field (seconds) syntax?
This parser covers the standard 5-field syntax that crontab, GitHub Actions and most schedulers use. @daily is shorthand for "0 0 * * *" — paste the long form to inspect it.
Related network tools
From the blog
-
chmod 755 Explained: Unix File Permissions Without the Guesswork
What chmod 755 actually means, how the numbers work (read=4, write=2, execute=1), the difference between 644 and 755, when to use 600, and why chmod 777 is almost always the wrong fix. With the setuid/setgid/sticky bits explained.
-
Cron Syntax Explained: The Five Fields, the Shortcuts, and the OR-Rule Trap
How cron expressions work: the five fields (minute, hour, day-of-month, month, day-of-week), the special characters (* , - /), what */15 means, and the day-of-month/day-of-week OR-rule that makes jobs run more often than expected.