← Back to blog
6 min read

How to Read a Cron Expression (Without crontab.guru)

What the five fields of a cron expression actually mean, a cheat sheet of common patterns, the gotchas that trip everyone up — and how to read any cron line straight from your clipboard on macOS.

You're reading a crontab, a CI config, or a Kubernetes CronJob, and you hit a line like */15 9-17 * * 1-5. You know it's a schedule. You have no idea when it actually runs. So you open crontab.guru, paste it in, read the answer, and switch back.

Cron syntax is compact and easy to forget between the times you need it. This post breaks down exactly what each field means, gives you a cheat sheet of common patterns, covers the gotchas that trip almost everyone up, and shows how to read any cron line inline from your clipboard on a Mac.

The five fields of a cron expression

A standard cron expression is five values separated by spaces. Each field controls one part of the schedule, in this order:

PositionFieldAllowed values
1Minute0–59
2Hour0–23 (24-hour clock)
3Day of month1–31
4Month1–12 or JAN–DEC
5Day of week0–6 (0 = Sunday) or SUN–SAT

So 30 2 * * * reads left to right as: minute 30, hour 2, every day of the month, every month, every day of the week — i.e. 2:30 AM every day.

The four special characters

Each field can hold more than a single number. Four characters do almost all the work:

  • *every value. In the hour field, * means every hour.
  • ,a list. 1,15 in the day-of-month field means the 1st and the 15th.
  • -a range. 1-5 in the day-of-week field means Monday through Friday.
  • /steps. */15 in the minute field means every 15 minutes (0, 15, 30, 45). 9-17/2 means every 2 hours from 9 to 17.

A worked example

Take the line from the top: */15 9-17 * * 1-5. Field by field:

  • */15 (minute) — every 15 minutes
  • 9-17 (hour) — from 9 AM through 5 PM
  • * (day of month) — every day
  • * (month) — every month
  • 1-5 (day of week) — Monday through Friday

Put together: every 15 minutes, between 9 AM and 5 PM, Monday through Friday. A typical "during business hours" polling schedule.

Common cron patterns (cheat sheet)

Most real-world schedules are small variations on a handful of patterns:

ExpressionWhen it runs
* * * * *Every minute
*/5 * * * *Every 5 minutes
0 * * * *Every hour, on the hour
0 0 * * *Every day at midnight
0 9 * * 1-59:00 AM, Monday–Friday
30 2 * * 02:30 AM every Sunday
0 0 1 * *Midnight on the 1st of every month

The gotchas that trip everyone up

Cron has a few sharp edges that cause real bugs — worth knowing before you trust a schedule:

  • Sunday is both 0 and 7. In most cron implementations the day-of-week field treats 0 and 7 as Sunday. SUN works too.
  • Day-of-month and day-of-week are an OR, not an AND. If you set both fields (neither is *), most cron daemons run the job when either matches. So 0 0 13 * 5 runs on the 13th and on every Friday — not only on Friday the 13th.
  • It's the local server's time zone. Cron fires against whatever time zone the machine (or the scheduler) is set to. A 0 0 * * * job is midnight where the server lives, not where you do.
  • Exactly five fields is the standard — but not the only format. Some schedulers add a leading seconds field (six total) or accept macros like @daily and @hourly. Check which flavor your tool uses before copying a line between systems.

How to read cron inline on your Mac

crontab.guru is a good tool — but it's a browser tab you leave your editor for, every single time. The expression is already on your clipboard; you shouldn't have to go anywhere to understand it.

ClipBear detects when you copy a cron expression and shows a plain-English description of its schedule right in the clipboard entry — on-device, nothing uploaded. Copy 0 9 * * 1-5 from a config file and you see "9:00 AM, Monday through Friday" without switching windows. The round-trip of copy, open crontab.guru, paste, read, switch back collapses into copy and read.

It's the same idea as the rest of ClipBear: your clipboard already has the data, so your clipboard manager should tell you what it means.

Frequently asked questions

What order are the cron fields in? Minute, hour, day of month, month, day of week — left to right. A handy mnemonic is that they go from the smallest unit of time to the largest.

What does */15 mean? "Every 15" of that field, starting at 0. In the minute field that's 0, 15, 30, 45 — i.e. every 15 minutes.

Is Sunday 0 or 7? Both, in most cron implementations. 0, 7, and SUN all mean Sunday.

Why did my job run on the wrong day? Almost always the day-of-month/day-of-week OR trap: if both fields are set, the job runs when either matches. To run only on a specific weekday, leave day-of-month as *.

Do I need to be online to read a cron expression? No. Parsing cron is pure local logic. ClipBear translates it on your Mac, offline.

Stop tabbing to crontab.guru

Reading a cron expression is a lookup you do constantly and forget constantly. The five fields are simple once they're in front of you — and you shouldn't have to open a website to see them. Reading it from your clipboard is faster and keeps you in your editor.

Try ClipBear free for 14 days at clipbear.app. Everything stays on your Mac.