Cron Expression Parser
Enter a cron expression to get a plain-English description of its schedule and the next times it will run.
| Expression | Meaning |
|---|---|
* * * * * | Every minute |
*/15 * * * * | Every 15 minutes |
0 9 * * 1-5 | At 09:00, Monday through Friday |
30 2 * * SUN | At 02:30 on Sunday |
0 0 1 * * | At midnight on the first day of every month |
0 */6 * * * | Every six hours, on the hour |
@daily | Once a day at midnight (same as 0 0 * * *) |
What does the cron expression parser do?
It describes a five-field cron schedule in plain English and lists the next five times it would fire, so you can check it before it goes into a crontab, a Kubernetes CronJob or a CI workflow. The fields are minute, hour, day of month, month and day of week, as documented in the crontab(5) manual page. The parser follows the rules of Vixie cron and its descendants such as cronie, which most Linux distributions ship.
This page concentrates on the tool. For the syntax itself — every operator, ready-made schedules and how other schedulers differ — read Cron syntax explained, with examples.
How to use it
- Type or paste an expression into Cron expression, for example
*/15 9-17 * * 1-5. Only the schedule goes here, not the command that follows it in a crontab line. - Read Schedule, the plain-English description. It updates on every keystroke; there is no button to press.
- Check Next runs (your local time): the next five matching minutes after now, in your browser’s time zone.
- If parsing fails, a message above the results names the problem.
What the parser accepts
- Exactly five fields separated by spaces or tabs. Values may use
*, lists (1,15), ranges (9-17) and steps (*/10,0-30/10). - Month and weekday names in any letter case, including inside ranges and lists, such as
MON-FRIorjan,jul. Both 0 and 7 mean Sunday. - A start and step with no range end, such as
5/15(minutes 5, 20, 35, 50). Some cron daemons reject it;5-59/15is portable. ?, which is treated like*so that Quartz-style day fields can be pasted.- The macros
@yearly,@annually,@monthly,@weekly,@daily,@midnightand@hourly.@rebootis rejected because it has no clock times to list.
How the two day fields combine
When both day fields are restricted, cron runs on days matching either, and the description says “or”. Following Vixie cron, a day field starting with * counts as unrestricted even with a step, so */2 is combined with the other day field using “and”. The guide explains the rule in detail.
Verified examples
The descriptions are copied from the tool. The first runs were produced by the page with the clock set to Saturday 3 October 2026, 11:00 London time.
| Expression | Schedule (as shown) | First runs listed |
|---|---|---|
*/15 9-17 * * 1-5 | At every 15th minute past hour 9 through 17 on Monday through Friday. | Mon 5 Oct 09:00, 09:15, 09:30 |
0 0 13 * 5 | At 00:00 on day-of-month 13 or on Friday. | Fri 9 Oct, Tue 13 Oct, Fri 16 Oct |
0 0 */2 * 1 | At 00:00 on every 2nd day-of-month and on Monday. | Mon 5 Oct, Mon 19 Oct, Mon 9 Nov |
0 0 1 */3 * | At 00:00 on day-of-month 1 in every 3rd month. | 1 Jan 2027, 1 Apr 2027, 1 Jul 2027 |
* 2 * * * | At every minute past hour 2. | Sun 4 Oct 02:00, 02:01, 02:02 (a slip for 0 2 * * *) |
0 0 29 2 * | At 00:00 on day-of-month 29 in February. | Tue 29 Feb 2028, Sun 29 Feb 2032 (only two in the window) |
Common problems and fixes
| Message or symptom | Cause | Fix |
|---|---|---|
| “A cron expression needs exactly 5 fields … found 6.” | A crontab line with its command was pasted, or the expression has a Quartz seconds field or an AWS year field. | Keep only the five schedule fields. |
| “"L" is not a valid day-of-month value.” | L, W and # are Quartz and AWS extensions. | Use a range and a check in the command; see the guide. |
| “The minute value 60 is out of range (0–59).” | Minutes run 0–59, hours 0–23, days 1–31, months 1–12. | Write 0, not 60, for the top of the hour, and 0, not 24, for midnight. |
| “The range "FRI-MON" runs backwards.” | Ranges cannot wrap around the end of the week or year. | Use a list: FRI-SAT,SUN-MON or 5,6,0,1. |
| “Never — this date does not occur” | The day and month can never coincide, such as 30 February. | Check the day-of-month and month fields. |
| Run times are hours away from the server’s | The list uses your browser’s time zone; the cron daemon uses its own, often UTC. | Convert with the Unix Timestamp Converter, or set your schedule in the server’s zone. |
Clock changes
Run times are worked out in your local calendar. A time that falls in the hour skipped when clocks go forward is listed at the shifted time: in London, 30 1 28 3 * shows 02:30 on 28 March 2027. During the repeated hour in autumn, each time is listed once. What your cron daemon actually does at those moments depends on its implementation.
Frequently asked questions
Can I paste a line straight from my crontab?
Only the first five fields. The command (and, in /etc/crontab, the user name) would be counted as extra fields, and variable lines such as CRON_TZ=UTC are not understood.
Will it check my Quartz, Spring or AWS EventBridge expression?
Not directly. Those formats add a seconds or year field and number weekdays 1–7 from Sunday. Convert to five-field Unix syntax first, minding the weekday numbers, then check it here.
Why does 0 0 */2 * 1 skip some Mondays?
Because */2 starts with an asterisk, Vixie cron treats the day-of-month field as unrestricted and requires both fields to match: Mondays that fall on an odd date. Schedulers that do not follow this rule would run on every Monday plus every odd date, so avoid mixing steps with a weekday when portability matters.
How far ahead does it search for run times?
About eight years, day by day. That is enough to find leap days, so 0 0 29 2 * lists the two 29 Februarys in that window rather than five dates.
Does a GitHub Actions or Kubernetes schedule run at the times shown?
Only if your browser is in the same time zone as the scheduler. GitHub Actions schedules run in UTC, and a Kubernetes CronJob uses its timeZone setting or the controller’s zone, so compare the list with that zone in mind.
Is my expression sent anywhere?
No. Parsing and the run-time calculation happen in your browser, and nothing you type is uploaded.
Guides
Cron Syntax Explained, With Examples
The five cron fields, ranges, steps and lists, the day-of-month and day-of-week rule, and ready-made schedules you can copy.
Unix Timestamps Explained: Seconds, Milliseconds and Time Zones
What a Unix timestamp is, seconds versus milliseconds, converting in JavaScript, Python and SQL, time zones, leap seconds and the year 2038 problem.