How to Read a Cron Expression

By Ramanathan Aug 26, 2026 2 min read Cron Expression Parser

Cron expressions schedule recurring jobs, but the terse five-field syntax is easy to misread. Once you know the fields and the operators, any expression becomes readable. Here's the breakdown.

The five fields

A standard cron expression has five space-separated fields, in this order:

┌ minute (0–59)
│ ┌ hour (0–23)
│ │ ┌ day of month (1–31)
│ │ │ ┌ month (1–12)
│ │ │ │ ┌ day of week (0–6, Sunday = 0)
│ │ │ │ │
* * * * *

* * * * * means "every minute of every hour of every day" — a * is "any value" for that field.

Operators

Each field accepts more than a single number:

  • */5 — a step: every 5th value (*/5 in the minute field is every 5 minutes)
  • 9-17 — a range: 9 through 17
  • 1,15 — a list: the 1st and the 15th
  • 9-17/2 — a step within a range: 9, 11, 13, 15, 17
  • Names also work in the last two fields: JAN, MON

So */5 9-17 * * 1-5 is "every 5 minutes, from 9am to 5pm, Monday to Friday".

The day-of-month / day-of-week rule

This one trips people up. When both the day-of-month and day-of-week fields are restricted (neither is *), the job runs when either matches — not both. When only one is restricted, that one must match. It's the standard behavior inherited from Vixie cron.

Related

Part of The Complete Guide to Dates and Times. See the Unix Timestamp Converter for working with epoch times, and the Regex Tester for another compact syntax worth testing live.

Try it

Paste any cron expression to see it explained field by field, with the next five run times — everything runs in your browser, nothing uploaded.

About the author

Ramanathan · Software Engineer & Solutions Architect

I'm a Software Engineer and Solutions Architect with 20+ years of experience building enterprise applications across BFSI, Healthcare, Retail, Manufacturing, and Industrial Automation. I've spent those two decades living in JSON, tokens, regexes, and config files — so I built the fast, private, no-login developer tools I always wanted to reach for myself.

Last updated: Aug 26, 2026