Free

Cron Expression Explainer

Plain English, plus the next ten runs in your timezone and in UTC. Because the question is almost never what the fields mean - it is when the thing will actually fire.

  • Free forever
  • No signup
  • Runs in your browser

At a glance

Takes
A five-field Unix cron expression
Returns
Plain English, field by field, plus the next ten fire times
Handles
Both 0 and 7 for Sunday, and the step and range syntax people mistype
Privacy
Runs in your browser - nothing you paste is uploaded

Nothing you type leaves this page

This tool runs entirely in your browser. Nothing you type or paste is sent to Revquix or to anyone else, no account is needed, and the page keeps working with your network disconnected.

Full detail in our privacy policy and AI policy.

How this works

About Cron Explainer

What it checks, what it deliberately does not, and how to read the output.

The rule that catches everybody

When both the day-of-month and the day-of-week field are restricted, cron fires when either one matches - not when both do. So 0 0 1 * 1 does not mean the first of the month when it falls on a Monday. It means the first of the month, and also every Monday, which is roughly five times as often as most people intend. When one of the two fields is a star, the other simply applies and the surprise disappears.

This tool spells the rule out in the explanation rather than leaving it implicit, and the next-run table makes it visible: you can see the extra fires in the dates. It is the single commonest cron bug and it usually reaches production because the expression looks correct.

Next runs, in a real timezone

Cron fields are wall-clock times in whatever zone the daemon is running in, which is why a job that should run at 02:00 IST is often scheduled for 20:30 UTC by hand and then quietly wrong after a clock change. Pick a zone here and the next ten runs are computed against that zone's actual daylight-saving rules, with the equivalent UTC instant beside each one.

The calculation walks the calendar field by field rather than testing every minute, so a once-a-year expression answers as quickly as a once-a-minute one. If an expression cannot fire at all - 0 0 30 2 * asks for the thirtieth of February - it says so, which is more useful than an empty table.

  • Five-field Unix syntax, or six with a leading seconds field
  • Ranges, steps, lists, and month and weekday names
  • Macros: @yearly, @monthly, @weekly, @daily, @hourly
  • Both 0 and 7 accepted for Sunday

What it will not do

It covers standard Unix, or Vixie, cron. Quartz and Spring add L for last, W for nearest weekday, and the nth-weekday hash, and those are rejected with a message naming them rather than approximated. Ignoring a modifier we do not understand would produce a schedule that looks right and is not, which on a scheduling tool is the worst possible failure.

It also cannot know your server's zone, its clock skew, or whether the daemon was running - so these are the times the expression describes, not a promise that a job fired. And @reboot is not a schedule at all: it fires once at startup, so there is nothing to list.

FAQ

Questions people actually ask

The ones that come up before somebody uploads anything.

Why does my job run more often than the expression looks like it should?

Because you have set both the day-of-month and the day-of-week field. Cron treats that as a match on either, so the two conditions add together instead of narrowing each other. Set one of them to a star and the schedule becomes what you probably intended.

Which cron syntax does this use - Unix or Quartz?

Unix, also called Vixie cron: the five-field form used by crontab, Kubernetes CronJob and most schedulers. Six fields are accepted and read as seconds-first, which is the Quartz and Spring convention. Quartz's L, W and # extensions are refused rather than guessed at.

Is 0 or 7 Sunday?

Both, and this tool accepts either. The original Unix convention is 0 through 6 starting at Sunday; 7 was added later as an alias so that ranges like 1-7 could mean Monday through Sunday. If you are writing a range that crosses the weekend, check it against the run table rather than trusting the arithmetic.

How are daylight-saving changes handled?

Using the IANA timezone database built into your browser, which is almost certainly the same data your server uses. A wall-clock time skipped by a spring-forward resolves to the next real instant, which is what most cron implementations do; an hour that occurs twice in an autumn transition will show the first occurrence.

Does anything I type get sent to a server?

No. Parsing, explaining and the next-run calculation all happen in your browser using its own timezone data. There is no request at any point, and the page works offline once loaded.

Next, try one of these

More from Developer, or browse the full catalogue.

The job that fires at the wrong time

Scheduling is easy. Idempotency is the hard part.

What happens when two instances of the job overlap, when the box was down at 3am, when the run takes longer than the interval - none of that is in the expression. An hour with an engineer who has operated this in production is where those get designed rather than discovered.

Talk to an engineer from ₹549/hr