Skip to main content

Cron Decoder - decode any cron expression online

At 00:00, on day 1 of the month.

Next runs · UTC

Run in CrontapCheatsheet

Calendar

September 2026 · UTC

0 runs

About this tool

Paste a cron string and CronTool decodes every field into plain English. The decoder works for standard Unix crontab, AWS EventBridge, Vercel cron, Quartz Scheduler and other extended dialects - including the awkward modifiers (L, W, ?, #) most documentation glosses over.
Cron is information-dense by design. A 5-character string like */5 * * * * packs five independent fields. The decoder unpacks them so you can read your schedule the way you read a sentence - left to right, no flicking between docs.

What the cron decoder shows

  • Field-by-field breakdown - value, English meaning, accepted range and supported wildcards.
  • Plain-English summary - one-sentence description of the whole schedule.
  • Calendar of next runs - the next 30+ fires on a real month view.
  • Validation - invalid fields highlighted in red with the parser error.
  • Variations - cross-links to one-step-away cron expressions.

Decoder support for modifiers

The decoder recognises the major extended cron modifiers:

  • ? - “no specific value”. Used in Quartz / AWS to resolve the day-of-month vs day-of-week conflict.
  • L - “last”. 0 0 L * * is last day of the month; see the last-day-of-month guide for the full pattern.
  • W - “weekday nearest”. Quartz only.
  • # - “Nth weekday of the month”. 2#1 is the first Monday.

Examples decoded

  • 0 12 * * * - At 12:00 every day.
  • 0 0 ? * MON-FRI - At 00:00 every weekday (Quartz / AWS).
  • 0 0 LW * ? - At 00:00 on the last weekday of the month (Quartz).
  • 0 30 9 ? * 2#3 - At 09:30 on the third Monday of every month.
  • 0 0 1 * * - At 00:00 on the 1st of every month.

Examples

  • 0 18 * * *
    Every day at 18:00
  • 0 */5 * * *
    Every 5 hours
  • 0 18 * * 1-5
    Weekdays at 18:00
  • 0 0 1 * *
    Once a month, on the 1st at midnight

Cheatsheet

Full cheatsheet
FieldReq.RangeWildcards
minuteyes0-59, - * /
houryes0-23, - * /
day of monthyes1-31, - * /
monthyes1-12 or JAN-DEC, - * /
day of weekyes0-6 or names; some dialects use 0-7 or 1-7 — see Dialects, - * /

Frequently asked questions

Syntax

How do I decode a cron expression?

Paste the cron into the editor. CronTool shows editable labeled fields, a plain-English sentence, five next runs in the selected timezone, and a navigable month calendar.

What does the decoder show for each field?

It places each token in an editable labeled field with a help popover for range and syntax. The combined sentence, five next runs, and calendar show the resulting schedule; CronTool does not display a semantic AST.

Cron field reference
What's the difference between decoding and writing a cron?

Decoding takes a cron string and explains it. Writing (or building) goes the other way - you describe the schedule in your head and compose the cron string. Use the cron builder for the latter, or the cron tester to validate as you write.

Cron builder
How does the decoder explain L, W, #, and ??

L selects a last occurrence, W the nearest weekday, # an nth weekday, and ? leaves a day field unspecified. Exact support depends on the dialect.

Operator reference

Timing

What does the field decoder reveal about */5?

It means every 5 minutes: minute values 0, 5, 10, and so on through 55. It does not mean only the fifth minute of each hour. Expression: */5 * * * *

Open in editor
Every 5 minutes guide
How does the decoded minute field separate literals from steps?

A literal 5 means minute 5 of every hour, such as 09:05 and 10:05. The step */5 means every five minutes. Expression: 5 * * * *

Open in editor
Minutes past the hour guide

Days and months

How does the decoder read two restricted day fields?

For Vixie cron, 0 9 1 * 1 means every Monday OR every first day of the month. Quartz and AWS instead require ? in one day field. Expression: 0 9 1 * 1

Open in editor
Day-field rules
What does 0 0 9 ? * MON#2 decode to?

It means 09:00:00 on the second Monday of every month in a Quartz-style extended expression. The ? leaves day-of-month unspecified. Expression: 0 0 9 ? * MON#2

Open in editor
Nth weekday rules
Can a field decode prove a fixed elapsed interval?

No. A step selects values inside one field and resets at the boundary. In day-of-month, */7 selects 1, 8, 15, 22, and 29, then restarts next month. Expression: 0 0 */7 * *

Open in editor
Step operator details
Why can every decoded field look legal yet produce no run?

Field validity does not guarantee a possible date. 0 0 30 2 * uses legal values but asks for February 30, so CronTool reports that it never fires. Expression: 0 0 30 2 *

Open in editor

Timezones and DST

Does the English decoding include a timezone?

The sentence describes clock fields, while the selected timezone controls the next-run timestamps and calendar. Confirm that timezone against the scheduler's actual configuration.

Timezone reference

Platforms

Can the decoder handle AWS or Quartz cron?

It can parse many six- and seven-field forms in Extended mode, but it does not identify or validate a target dialect. Use the dialect matrix and Copy as output, then verify the result with AWS or Quartz.

Dialect matrix

Debugging

Can I decode a cron without actually running it?

Yes. CronTool never executes the scheduled command. In production, however, PostHog events may include valid, copied, or shared cron strings, so do not assume the expression remains only in the tab.

How do I share a decoded cron?

Share /?cron=<expression> and add mode=extended when needed. Add tz=<IANA zone> if the decoded timestamps must use the same timezone; Copy link omits timezone.

Can the decoder explain why my command failed?

No. It explains and validates the schedule only; it cannot see your server's PATH, environment, permissions, logs, or command result, and it never executes commands.

Write the cron here. Run it on Crontap.

Point Crontap at any URL. Pick any cron. Done.

WordPress, Shopify, Railway, Cloud Run, Vercel, HubSpot, Ghost, your own box. If it answers HTTP, Crontap can drive it on a clock you can read, in the timezone that actually matters, and page you when something breaks.

1.9k+ teams · Free forever tier · No credit card