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:
| Position | Field | Allowed values |
|---|---|---|
| 1 | Minute | 0–59 |
| 2 | Hour | 0–23 (24-hour clock) |
| 3 | Day of month | 1–31 |
| 4 | Month | 1–12 or JAN–DEC |
| 5 | Day of week | 0–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,15in the day-of-month field means the 1st and the 15th.-— a range.1-5in the day-of-week field means Monday through Friday./— steps.*/15in the minute field means every 15 minutes (0, 15, 30, 45).9-17/2means 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 minutes9-17(hour) — from 9 AM through 5 PM*(day of month) — every day*(month) — every month1-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:
| Expression | When it runs |
|---|---|
* * * * * | Every minute |
*/5 * * * * | Every 5 minutes |
0 * * * * | Every hour, on the hour |
0 0 * * * | Every day at midnight |
0 9 * * 1-5 | 9:00 AM, Monday–Friday |
30 2 * * 0 | 2: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
0and7as Sunday.SUNworks 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. So0 0 13 * 5runs 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
secondsfield (six total) or accept macros like@dailyand@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.