⚙️ DevOps Utilities
Cron Syntax Cheat Sheet: How to Read Cron Expressions
By Justin Le
· 6 min read · Updated June 27, 2026 Cron expressions are dense but logical. Once you know what the five fields and four special characters mean, you can read — and write — almost any schedule. Here's the cheat sheet.
The five fields
A standard cron line has five space-separated fields, always in this order:
┌───────────── minute (0–59)
│ ┌─────────── hour (0–23)
│ │ ┌───────── day of month (1–31)
│ │ │ ┌─────── month (1–12)
│ │ │ │ ┌───── day of week (0–7, 0 and 7 = Sunday)
│ │ │ │ │
* * * * * command
The four special characters
*— every value.* * * * *runs every minute.,— a list.0 8,12,18 * * *runs at 8am, noon and 6pm.-— a range.0 9-17 * * *runs hourly from 9am to 5pm./— a step.*/15 * * * *runs every 15 minutes.
You can combine them: 0-30/10 means 0, 10, 20, 30. The pieces apply
independently per field, which is what makes cron so expressive.
Common schedules
*/5 * * * *— every 5 minutes.0 * * * *— every hour, on the hour.0 0 * * *— every day at midnight.0 9 * * 1-5— 9am on weekdays.30 2 * * 0— 2:30am every Sunday.0 0 1 * *— midnight on the 1st of each month.0 0 1 1 *— midnight on January 1st.
Macros (shorthand)
Many cron implementations accept named shortcuts: @hourly,
@daily (midnight), @weekly (Sunday midnight),
@monthly and @yearly. They're easier to read than the
five-field equivalents and mean exactly the same thing.
The day-of-month / day-of-week gotcha
This trips up almost everyone. When both the day-of-month and day-of-week
fields are restricted (neither is *), cron runs when either
matches — not both. So 0 0 13 * 5 fires on the 13th of every month
and on every Friday, not only on Friday the 13th. If you need a specific
weekday-and-date combination, you generally add a check inside the job itself.
Timezones
Cron runs in the server's timezone, which is often UTC. A job scheduled for
0 9 * * * fires at 9am server time, which may not be 9am where you
are. Always confirm the server's timezone before relying on a schedule.
Test before you trust
The safest way to verify a cron line is to see its next run times. Paste any expression into our cron explainer for a plain-English breakdown and the next five fire times in your local timezone. If your job reads timestamps, the Unix timestamp converter pairs nicely.
Frequently asked questions
What do the five cron fields mean?
In order: minute (0–59), hour (0–23), day of month (1–31), month (1–12), and day of week (0–7, where 0 and 7 both mean Sunday).
What does */15 mean in cron?
The /15 step in the minute field means 'every 15 minutes' — it fires at minute 0, 15, 30 and 45 of every hour.
Why does my cron job with a day and weekday run too often?
When both the day-of-month and day-of-week fields are set, cron runs when either matches, not both. To target a specific date-and-weekday, add a condition inside the job.
Try the related tools
- Cron Expression Explainer Decode any cron schedule into plain English and preview the next run times.
- Unix Timestamp Converter Convert Unix/epoch timestamps to human-readable dates and back — seconds or milliseconds.
- JSON Formatter & Validator Beautify, minify and validate JSON with clear error messages.
Related guides
- Unix Timestamps Explained: Epoch, Seconds vs Milliseconds Epoch time, demystified: what the number really means, the seconds-vs-milliseconds bug that bites everyone, and why timestamps have no timezone.
- 301 vs 302 Redirects: Which to Use (and Why It Matters for SEO) 301 or 302? The wrong choice can quietly tank your SEO. Here's what each redirect means, when to use it, and the chain mistakes to avoid.
- JSON vs YAML: When to Use Each JSON and YAML describe the same data in very different styles. Here's how they compare, the YAML traps to watch for, and which to reach for when.