How to Read and Write Cron Expressions
If you've ever set up a scheduled job — a nightly backup, or an hourly email digest — you've run into cron expressions: a short string that defines exactly when a job runs.
The basic structure of cron
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sunday=0)
│ │ │ │ │
* * * * *Common patterns
0 0 * * * — Every day at midnight
*/15 * * * * — Every 15 minutes
0 9 * * 1-5 — Weekdays at 9am
0 0 1 * * — On the 1st of every month
0 */6 * * * — Every 6 hours'*' means 'every value' — for example, '*' in the minute field means every minute. '*/15' means 'every 15th multiple'. '1-5' is a range (Monday through Friday, when used in the day-of-week field).
Why cron trips people up
The most common mistake is forgetting the field order, or getting the day-of-week numbering wrong (in many systems 0 = Sunday, but some also accept 7). Always verify an expression after writing it — don't just guess and hope it's right.
Paste an expression into our Cron Expression Parser and it instantly translates it into plain English, along with a preview of the next few run times — so you can confirm the schedule is correct before you ever deploy it.
Try it yourself
Cron Expression Parser