Cron Expression Parser
Explain a cron expression in English and preview when it actually fires.
Common schedules
About the Cron Parser
Paste a cron expression to get a plain-English reading of it alongside the next times it will actually fire, in UTC. Both halves matter: a sentence can read convincingly and still be a misreading, so the run times are the evidence. The parser also names the rule that catches most people — when the day-of-month and day-of-week fields are both restricted, cron fires when either matches, so 0 0 13 * 5 means "the 13th, and every Friday" rather than "Friday the 13th". Standard five-field syntax is supported along with an optional seconds field, names for months and weekdays, and the @daily-style macros. The Quartz-only L, W and # extensions are refused rather than guessed at, since most schedulers reject them and a silent acceptance here would mean a failure where it runs.
What does the five-field order mean?
Minute, hour, day of month, month, day of week — in that order. A sixth field, if present, is prepended as seconds, which is what many modern schedulers accept.
Why does "0 0 13 * 5" fire more often than I expect?
Because when both the day-of-month and day-of-week fields are restricted, cron treats them as OR, not AND. That expression means "the 13th of the month, and additionally every Friday" — not "Friday the 13th". This is specified behaviour and it surprises nearly everyone, so the tool states it explicitly whenever both fields are set.
Which timezone are the run times in?
UTC. A cron expression has no timezone of its own — the timezone comes from the machine or scheduler running it. Showing the preview in your local zone would quietly disagree with your server, so UTC is used and labelled.
Are L, W and # supported?
No, deliberately. Those are Quartz extensions that standard cron, most container schedulers and most cloud cron services reject. Accepting them here would let you ship an expression that fails where it runs, so they are refused with an explanation instead.
What about @reboot?
It fires when the daemon starts, so it has no schedule that can be predicted. The other macros — @hourly, @daily, @weekly, @monthly, @yearly — all expand and preview normally.
Why does it reject a range like fri-mon?
A range that wraps around the end of the week is not portable: schedulers disagree on whether it means anything at all. Writing it as "fri,sat,sun,mon" is unambiguous everywhere.
Related: Timestamp Converter · Regex Tester · JSON Formatter
Keywords: cron parser, crontab, cron expression explained, cron next run, cron schedule, cron generator