Cron Expression Generator
Build cron expressions visually or decode existing ones. Free, fast, and works entirely in your browser.
At 12:00 AM, every day
This job runs every day at 12:00 AM. Will you know if it stops?
Start free →3 checks free. No credit card required.
You just built a schedule. Now make sure it runs.
Add one curl command and CronSignal alerts you the moment this job misses its run. Takes 30 seconds to set up.
Start free →3 checks free. No credit card required.
Cron Syntax Reference
Cron Expression Format
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sunday=0)
│ │ │ │ │
* * * * *
Special Characters
| Character | Meaning | Example |
|---|---|---|
| * | Any value | * * * * * |
| , | Value list separator | 1,15 * * * * |
| - | Range of values | * 9-17 * * * |
| / | Step values | */15 * * * * |
Common Examples
How to Use the Cron Expression Generator
A cron expression is a five-field string that tells the cron daemon exactly when to run a job. Instead of memorizing the syntax, use the builder above: choose a frequency, set the time and days, and the generator writes the crontab line for you. Switch to the Parse Expression tab to paste an existing expression and decode it into plain English with the next five run times.
Every cron expression follows the same order of fields. Reading left to right:
- Minute (0–59), which minute of the hour the job fires.
- Hour (0–23), which hour of the day, in 24-hour time.
- Day of month (1–31), which calendar day.
- Month (1–12), which month of the year.
- Day of week (0–6, Sunday = 0), which weekday.
So 0 9 * * 1-5 reads as “at minute 0 of hour 9, any day of the month, any month, Monday through Friday” in other words, weekdays at 9:00 AM.
Special Characters Explained
Four special characters cover almost every schedule you will ever need:
*, any value. In the minute field,*means every minute. See every minute.,, a list.0 0,12 * * *runs at midnight and noon.-, a range.0 9-17 * * *runs hourly during business hours./, a step.*/5 * * * *runs every 5 minutes;*/15 * * * *runs every 15 minutes.
Common Cron Pitfalls
- Timezone surprises. Cron uses the server's local timezone, not yours. If a job fires at the wrong hour, the timezone is the usual culprit, convert times with the timezone converter.
- Day-of-month and day-of-week are OR'd. When you set both fields to non-wildcards, cron runs when either matches, not both, which can fire more often than expected.
- Missing minute field.
0 * * * *runs once per hour at minute 0, while* * * * *runs sixty times an hour. Double-check before you commit. - No alert when it silently stops. A valid expression doesn't guarantee the job actually runs. Monitoring your cron jobs catches missed runs.
Frequently Asked Questions
How do I generate a cron expression?
Pick a frequency, set the time and days in the builder above, and the generator writes the cron expression for you. A cron expression has five fields: minute, hour, day of month, month, and day of week. For example, 0 9 * * 1-5 runs at 9:00 AM Monday through Friday.
What are the five fields in a cron expression?
In order: minute (0–59), hour (0–23), day of month (1–31), month (1–12), and day of week (0–6, where 0 is Sunday). The expression * * * * * means every minute of every day.
What do the special characters * , - and / mean in cron?
An asterisk (*) means every value. A comma (,) separates a list. A hyphen (-) defines a range. A slash (/) sets a step, such as */15 for every 15 units.
What is the cron expression for every 5 minutes?
Use */5 * * * * to run a job every 5 minutes. The */5 in the minute field tells cron to fire at minute 0, 5, 10, 15, and so on.
Why does my cron job run at the wrong time?
Cron uses the server's local timezone, not yours, a common pitfall is assuming UTC. Also remember that day-of-month and day-of-week are OR'd together when both are set, which can cause a job to run more often than expected. See the timezone troubleshooting guide.