Skip to content
tecuy
Developer & Data

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.

Dialect supported

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

  1. 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.
  2. Click Parse.
  3. Read Meaning for the plain-English description of the schedule.
  4. 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.