Cron Expression Parser
Parse a standard 5-field Unix cron expression into a plain-English description and its next execution times — correctly implements the day-of-month/day-of-week OR rule.
Standard 5-field Unix/POSIX cron (minute, hour, day-of-month, month, day-of-week) — the same syntax as crontab(5), including the day-of-month/day-of-week OR rule: when both day fields are restricted and neither starts with *, a date matching either one qualifies. As in Vixie cron and cronie, a stepped star such as */2 still counts as starting with *, so both fields must then match. The shortcuts @yearly, @monthly, @weekly, @daily and @hourly are expanded to five fields. This is not Quartz cron (6–7 fields, includes seconds) and not AWS EventBridge cron (6 fields, different day-of-week numbering) — expressions written for those systems may not mean the same thing here.
Parsed and computed entirely in your browser — nothing you enter here is sent to a server. Execution times are computed in UTC.
Enter a standard 5-field Unix cron expression and get a plain-English description plus the next 5 times it would actually run, computed in UTC. Correctly implements the day-of-month/day-of-week OR rule — the single most common mistake in hand-written cron logic.
This is the crontab(5) dialect specifically — not Quartz (which adds a seconds field and requires ? in one of the two day fields) and not AWS EventBridge cron (6 fields, different day-of-week numbering). An expression written for those systems may not mean the same thing here.
How to use the Cron Expression Parser
- Type a 5-field cron expression or a shortcut such as @daily into the box, or click one of the example buttons such as Every 15 minutes.
- Click Parse.
- Read Meaning for the plain-English description of the schedule.
- Check Next 5 executions (UTC, from now) to confirm the run times are what you expect.
Example: The day-of-month OR day-of-week rule
Parsing 0 9 1 * 1 gives the meaning At hour 9, minute 0, on day-of-month 1 OR on mon. Starting from 2026-10-28 12:00 UTC, the next runs are 2026-11-01 09:00:00 UTC (the 1st, a Sunday), then 2026-11-02, 2026-11-09, 2026-11-16 and 2026-11-23 at 09:00:00 UTC (Mondays), not only Mondays that fall on the 1st.
Questions about the Cron Expression Parser
- Why are the times shown in UTC instead of my time zone?
- The next run times are always calculated in UTC. A cron daemon normally uses the server's own time zone, so convert to that zone, or set the server to UTC, before relying on the times shown.
- Can I use names like mon-fri or jan?
- Yes. Three-letter month names (jan to dec) and day names (sun to sat) work, in any letter case, including in ranges such as mon-fri. Day-of-week 0 and 7 both mean Sunday.
- Why does 0 9 */2 * 1 only run on some Mondays?
- As in Vixie cron and cronie, the OR rule applies only when neither day field starts with *. Here day-of-month starts with *, so both must match: from 2026-10-28 the next runs are 2026-11-09 and 2026-11-23 at 09:00 UTC, odd-numbered days that are Mondays.
- Are shortcuts like @daily or symbols like L, W and ? supported?
- Shortcuts are: @yearly, @annually, @monthly, @weekly, @daily, @midnight and @hourly are expanded, so @daily is shown as short for 0 0 * * *. L, W, # and ?, and 6- or 7-field expressions, are Quartz or AWS syntax and get an error saying so. @reboot has no schedule to show.
- Why do I get "No matching execution found within the next 4 years"?
- The expression parses but can never fire, for example 0 0 30 2 *, since February never has a 30th day. Check the day-of-month and month fields together.