⏱️ Cron Expression Decoder + Builder

Paste any cron expression to get a human-readable description and the next 10 run times, or build one field by field.

Presets:

Supports 5-field (min hour DOM mon DOW) and 6-field (sec min hour DOM mon DOW) expressions, the @ shortcuts, and step / range / list / name forms.

📖 Cron cheat sheet

Field layout

*any value
*/nstep — every n units
a-brange — a to b inclusive
a,b,clist of specific values
a-b/nrange with step
Llast day (DOM/DOW) — approximate
Wnearest weekday — approximate
5#22nd Friday — approximate

@ shortcuts

@hourly0 * * * *
@daily / @midnight0 0 * * *
@weekly0 0 * * 0
@monthly0 0 1 * *
@yearly / @annually0 0 1 1 *
@rebootrun at startup (not schedulable)

Field order

5-fieldmin hour DOM month DOW
6-fieldsec min hour DOM month DOW

About the Cron Decoder

Paste any cron expression and get a plain-English description plus the next ten times it will fire, computed locally in your browser. Or use the builder to assemble one field by field, with live feedback as you type.

How to use

  1. Pick a preset chip — or switch to Build and edit each field.
  2. Read the description to sanity-check what the expression really means.
  3. Scan the next-runs list to confirm the schedule matches your intent.
  4. Copy the assembled expression and paste it into your crontab / scheduler.

Common use cases

  • Sanity-checking a crontab line before deploying it.
  • Translating a teammate's cron into English in a code review.
  • Building a new schedule and previewing the next few runs.
  • Catching an off-by-one mistake (every other minute vs every 2 minutes).

Tips

  • Next-run times use your local timezone. Most servers run cron in UTC.
  • When day-of-month and day-of-week are both specified, Vixie cron triggers when either matches.
  • Day-of-week accepts 0 or 7 for Sunday — both are normalized to Sunday.
  • Extended syntax (L, W, #) parses but the preview is marked approximate — verify against your scheduler's docs.

FAQ

Which cron syntax does this support?
Standard Vixie / Unix cron: 5 fields (minute, hour, day-of-month, month, day-of-week) or 6 fields with a leading seconds field. * (every), */n (step), a-b (range), a,b,c (list), names like MON or JAN, and the @hourly / @daily / @weekly / @monthly / @yearly shortcuts are all parsed.
Are the next-run times in my local timezone?
Yes. Times are computed in your browser using the local Date object, so the schedule reflects the timezone of the device you're viewing the page on. Servers usually evaluate cron in UTC — keep that in mind when sanity-checking a production schedule.
What about L, W, and # (extended syntax)?
L (last), W (nearest weekday) and # (nth-weekday of month) are best-effort. The expression still parses, but the human description and the next-runs list flag it as approximate so you don't trust the preview blindly.
Why does day-of-month and day-of-week behave oddly together?
When both fields are constrained (neither is *), Vixie cron triggers when either matches (OR, not AND). The next-runs list follows that rule, so 0 0 1 * MON fires on every Monday and the 1st of the month.
Does any of this hit a server?
No. Parsing, the human description, and the next-runs computation all run locally in your browser. The page is a single static HTML file.

More tools

JSON

Code

Ornaments

Image

Web / SEO

Generators

PDF