How to use the Cron Expression Generator & Explainer
- Type a cron expression in the big box, or click a common schedule to start from.
- Read the plain-English description underneath. Warnings appear if the schedule does something you might not expect.
- Change any of the five fields (minute, hour, day of month, month, day of week) and the expression updates.
- Check Next 10 runs. Pick the time zone your server uses: most servers and cloud schedulers run cron in UTC.
Cron syntax in one minute
┌───────────── minute (0–59) │ ┌─────────── hour (0–23) │ │ ┌───────── day of month (1–31) │ │ │ ┌─────── month (1–12 or JAN–DEC) │ │ │ │ ┌───── day of week (0–6 or SUN–SAT; 7 is also Sunday) │ │ │ │ │ * * * * * command to run
| Symbol | Meaning | Example |
|---|---|---|
* | Every value | * * * * * every minute |
, | A list | 0 9,17 * * * at 9 AM and 5 PM |
- | A range | 0 9 * * 1-5 weekdays at 9 AM |
/ | A step | */10 * * * * every 10 minutes |
@daily | Shortcut | Also @hourly, @weekly, @monthly, @yearly, @reboot |
Cron traps this tool warns about
- Day of month OR day of week.
0 0 1 * 1runs on the 1st and on every Monday, not only on Mondays that are the 1st. - Every minute by accident.
* 9 * * *runs 60 times between 9:00 and 9:59. You probably meant0 9 * * *. - Days that don't exist. A job on day 31 skips every month with 30 days or fewer, and
0 0 30 2 *never runs at all. - Time zones. Cron uses the server's time zone, which is usually UTC. 9 AM UTC is 4 AM in New York and 4 PM in Bangkok.
Where 5-field cron is used
Linux and macOS crontab, Kubernetes CronJobs, GitHub Actions (on: schedule, always UTC), GitLab CI schedules, Vercel and Netlify cron, Google Cloud Scheduler and most job libraries all use this 5-field format. Quartz, Spring @Scheduled and AWS EventBridge add a seconds or year field and use ?, so check their docs if you're writing one of those.
Frequently asked questions
Why does my cron job run at the wrong time?
Usually the time zone. Cron uses the server's time zone, often UTC. Pick UTC above to see when it really runs, and the next runs table shows the same moments in your own time too.
How do I run a cron job every 30 seconds?
Standard cron can't go below one minute. Run a job every minute that does its work, sleeps 30 seconds and does it again, or use a systemd timer, which supports seconds.
What does */5 mean?
Every 5th value, starting from the lowest. In the minute field, */5 means minutes 0, 5, 10 … 55. Use 2-59/5 to run at 2, 7, 12 and so on.
How do I schedule the last day of the month?
Standard cron has no “last day” symbol. Run on days 28–31 and start your command with a date check, for example [ "$(date -d tomorrow +\%d)" = 01 ] && (escape % in crontab).
Is anything sent to a server?
No. The expression is read and the run times are calculated in your browser.