Skip to content
TabBench

Cron Expression Explainer

Read any cron expression in plain English, see its next run times, and build new schedules without memorising the syntax.

Runs in your browser. Nothing you add is uploaded.

What the Cron Expression Explainer does

Cron expressions schedule jobs on Linux servers, in CI pipelines, cloud schedulers and many web frameworks, but five fields of numbers and asterisks are hard to read correctly. Paste an expression like 30 2 * * 1-5 and this explainer translates it into plain English — "at 02:30 on weekdays" — breaks down each field, and lists the next times it will run in your time zone or in UTC. It checks every value, warns about the mistakes that make jobs run at the wrong time, and understands names, @daily shortcuts and the L, W and # characters. Because the same text means different things in different schedulers, it can read an expression the way Linux crontab, Spring, Quartz or AWS EventBridge would. To write a new one, switch to the builder and pick how often it should run.

How to read a cron expression

  1. Paste or type a cron expression: minute, hour, day of month, month and day of week. Six- and seven-field expressions with seconds or a year are recognised too.
  2. If it came from Spring, Quartz or AWS, check that Read as shows the right scheduler — they number weekdays differently.
  3. Read the plain-English description and the field-by-field breakdown, and fix anything marked as an error or warning.
  4. Check the next run times, in your time zone or in UTC for GitHub Actions and cloud schedulers.
  5. Or switch to Build a schedule, choose how often it runs, and copy the expression into your crontab, workflow file or scheduler.

The Cron Expression Explainer runs entirely in your browser — nothing you enter is uploaded, stored, or logged.

When to use it

Checking a schedule before deploying

A backup job meant for 2 a.m. daily written as * 2 * * * actually runs every minute between 2:00 and 2:59 — sixty times. Reading the explanation before deploying catches that kind of mistake.

Understanding someone else's crontab

Inherited servers often have dozens of undocumented jobs. Translating each line tells you what runs when, which is the first step to cleaning them up.

Writing CI and cloud schedules

GitHub Actions, Kubernetes CronJobs and most cloud schedulers use the same five-field syntax. Build the expression here, then paste it into the workflow file.

Good to know

  • Most cron systems run in UTC unless configured otherwise. 30 3 * * * in UTC is 9:00 a.m. in India.
  • When both day of month and day of week are set, classic cron runs the job when either matches, not only when both do.
  • */15 in the minute field means every 15 minutes starting at :00, not every 15 minutes from when the job was installed. A step that doesn't divide 60, such as */7, leaves a short gap at the end of each hour.
  • GitHub Actions runs scheduled workflows at most every 5 minutes, in UTC, and may start them a few minutes late when it's busy.
  • Avoid scheduling many jobs at exactly midnight or on the hour; spreading them by a few minutes reduces load spikes.

Frequently asked questions

What do the 5 asterisks in a cron expression mean?

The 5 fields represent: Minute (0-59), Hour (0-23), Day of the Month (1-31), Month (1-12), and Day of the Week (0-6, with 0 being Sunday).

Why does my 6-field cron expression mean something different?

Six fields come in two layouts. Spring, node-cron and Quartz put seconds first; AWS EventBridge puts a year last. Quartz and AWS also count Sunday as 1 instead of 0. Choose the scheduler under Read as and the description and run times follow its rules.

What do the symbols * , - and / mean?

* means every value, a comma separates a list (1,15), a hyphen gives a range (1-5 is Monday to Friday in the weekday field) and a slash gives a step (*/10 is every tenth value). They can be combined, for example 0-30/10.

Is Sunday 0 or 7?

Both work in most implementations: the day-of-week field accepts 0 to 6 with 0 as Sunday, and many also accept 7 as Sunday. Using 0 is the most portable choice.

Can cron run a job every 30 seconds?

Not in standard five-field cron, whose smallest unit is one minute. Some systems such as Quartz and certain cloud schedulers add a seconds field, but that syntax is not portable to Linux crontab.