curly{bits}

curlybits / Cron Generator

Cron Expression Generator & Explainer

Type or paste a cron expression to read it in plain English and see exactly when it will run next, in UTC or any time zone. Or build one field by field. It warns you about the classic cron traps before they cost you a missed backup.

Common schedules:

Next 10 runs

How to use the Cron Expression Generator & Explainer

  1. Type a cron expression in the big box, or click a common schedule to start from.
  2. Read the plain-English description underneath. Warnings appear if the schedule does something you might not expect.
  3. Change any of the five fields (minute, hour, day of month, month, day of week) and the expression updates.
  4. 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
SymbolMeaningExample
*Every value* * * * * every minute
,A list0 9,17 * * * at 9 AM and 5 PM
-A range0 9 * * 1-5 weekdays at 9 AM
/A step*/10 * * * * every 10 minutes
@dailyShortcutAlso @hourly, @weekly, @monthly, @yearly, @reboot

Cron traps this tool warns about

  • Day of month OR day of week. 0 0 1 * 1 runs 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 meant 0 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.

Add this cron expression generator to your website

Free for blogs, schools and businesses. Copy the code below and paste it into your page's HTML. The tool works exactly like this one and runs in your visitors' browsers, so nothing is uploaded. Please keep the credit line so others can find it too.

Preview embed ↗