Cron Expression Generator
Build, explain, and preview cron expressions for Linux crontab, GitHub Actions, Vercel and more.
Cron expression generator with human-readable explanation
A cron expression is five fields — minute, hour, day-of-month, month,
day-of-week — that tell a scheduler when to run a job. The syntax is
famously hostile: 0 0 * * 0 means "every Sunday at
midnight" and */15 9-17 * * 1-5 means "every 15 minutes,
business hours, weekdays". This tool lets you build expressions
visually, see a plain-English description, and preview the next 5
actual run times in your local timezone.
How to read a cron expression
┌──────────── minute (0-59)
│ ┌────────── hour (0-23)
│ │ ┌──────── day of month (1-31)
│ │ │ ┌────── month (1-12)
│ │ │ │ ┌──── day of week (0-6, Sunday=0)
│ │ │ │ │
* * * * *
Each field accepts: a number (5), a range
(1-5), a list (1,3,5), a wildcard
(*), or a step (*/15, 0-30/5).
Steps are the trickiest part: */15 in the minute field
means "every 15 minutes starting at 0" — so 0, 15, 30, 45.
Common patterns
* * * * *— every minute*/5 * * * *— every 5 minutes0 * * * *— every hour on the hour0 9 * * 1-5— 9 AM on weekdays0 0 1 * *— midnight on the 1st of every month0 2 * * 0— 2 AM every Sunday15,45 * * * *— at :15 and :45 of every hour
Pitfalls people hit
-
Day-of-month + day-of-week: in standard Unix cron,
when both are specified, the job runs when either matches —
not both.
0 0 1 * 1runs on the 1st of every month and every Monday. -
Step starts at 0:
*/15in the hour field is0,15— but the hour field is 0-23, so this only fires at midnight and quarter-past midnight, not what most people expect. - Timezone: the cron daemon runs in the server's timezone, not yours. The "next run" preview here uses your browser's local timezone — translate carefully when deploying.
- Jenkins / Quartz are different: Quartz cron has 6 or 7 fields (with seconds and year). Spring's cron has 6. AWS EventBridge uses 6 with year. This tool generates standard 5-field Unix cron.
Where this format applies
Standard 5-field cron is used by Linux crontab, GitHub
Actions schedules, GitLab CI scheduled pipelines, Vercel Cron Jobs,
Cloudflare Workers cron triggers, Supabase pg_cron (with seconds),
Kubernetes CronJob, and most other modern schedulers. If your
scheduler uses a different dialect (Quartz, Spring, AWS), validate the
generated expression in their docs before deploying.
Testing your expression
Always check the "Next 5 runs" preview before saving. The most common
bugs are typos that produce a valid-looking expression that fires at
the wrong time — for example 0 0 * * 7 (invalid:
day-of-week is 0-6) silently becomes "never" on some implementations.