Cron Expression Parser
Turn `*/15 9-17 * * 1-5` into "Every 15 minutes between 09:00 and 17:59, on weekdays". The parser checks every field, explains what it matches and shows the next five fire times.
A description you can read aloud
The five fields are parsed independently and then turned into one sentence, in English or Japanese. Ranges become "from Monday through Friday", steps become "every 15 minutes", and lists are joined naturally. If the expression is invalid, the message names the field and the reason instead of failing silently.
The next five runs, in your own time zone
Schedules are easy to misread, so the tool simulates the schedule forward from now and lists the next five fire times with their weekday. That is the fastest way to confirm that a schedule you have just written does what you meant, especially with a day-of-month and day-of-week combination.
The rule that catches everyone out
When both day-of-month and day-of-week are restricted, cron fires when EITHER matches - not both. So `0 0 1 * 1` runs on the first of the month and on every Monday. If you meant "the first Monday", use `0 0 1-7 * 1`, which is the standard workaround.
Frequently asked questions
Is my expression sent to a server?
No. Nothing you paste leaves your browser. The page loads a small amount of JavaScript, and every calculation happens on your own machine - there is no server to send data to. The parser, the description generator and the schedule simulation are all local code.
Which cron dialect is this?
Standard five-field cron: minute, hour, day of month, month, day of week - the syntax used by Linux crontab, Kubernetes CronJobs and most schedulers. Nicknames such as `@daily` and `@hourly` are accepted. Six-field expressions with a leading seconds field (Quartz, Spring) are detected and explained, not parsed.
Which time zone are the run times in?
Your device's local zone. A real cron daemon uses the server's zone, or `CRON_TZ` / `TZ` if set, so a schedule that looks right locally can fire at a different hour in production. Check the server's zone before relying on an exact hour.
What is the difference between `*/5` and `0/5`?
`*/5` means every fifth value starting from the lowest - 0, 5, 10 and so on - and is standard. `0/5` means the same thing in Quartz but is not valid in classic cron. Use `*/5` unless you are specifically targeting Quartz.