27 September 2026

Cron Expression Explainer

Understand any cron schedule in plain English

Cron Expression Explainer - read cron schedules in plain English with next run times
The Cron Expression Explainer turns a line like */15 9-17 * * MON-FRI into "Every 15 minutes, between 09:00 and 17:59, on Monday through Friday", breaks it down field by field, and lists the next times it will run. It is the quickest way to check a crontab entry, a CI schedule or a Kubernetes CronJob before you deploy it.

What Is Cron?

Cron is the scheduler built into Linux and macOS, and its syntax has been adopted by GitHub Actions, GitLab CI, Kubernetes, cloud schedulers and many job libraries. Each schedule is a line of five fields separated by spaces. When the current time matches all five fields, the job runs.

The Five Fields

  • Minute: 0 to 59
  • Hour: 0 to 23, in 24-hour time
  • Day of month: 1 to 31
  • Month: 1 to 12, or JAN to DEC
  • Day of week: 0 to 7, or SUN to SAT. Both 0 and 7 mean Sunday

Special Characters

  • * (any): Every value. * in the hour field means every hour
  • , (list): Several values. 0,30 means minute 0 and minute 30
  • - (range): A span. 1-5 in day of week means Monday to Friday
  • / (step): Every nth value. */10 means every 10 minutes, and 9-17/2 means 9, 11, 13, 15 and 17
  • Macros: @hourly, @daily, @weekly, @monthly and @yearly are shortcuts, and @reboot runs once at startup

How to Use the Explainer

Step 1: Enter an Expression

Type or paste your cron expression, or click one of the examples. The plain-English summary updates as you type.

Step 2: Check Each Field

The Field by field table shows what every part means and expands ranges and steps into the actual values, so you can see that */15 means minutes 0, 15, 30 and 45.

Step 3: Review the Next Runs

The Next runs list shows upcoming run times with how far away each one is. Switch between local time and UTC, since most servers and CI systems run cron in UTC. Show 5, 10 or 20 runs.

Step 4: Share It

The page address updates with your expression, so you can copy the link into a pull request or chat and others will see the same explanation.

Common Cron Schedules

  • * * * * *: every minute
  • */5 * * * *: every 5 minutes
  • 0 * * * *: at the start of every hour
  • 0 0 * * *: every day at midnight
  • 30 9 * * 1-5: weekdays at 09:30
  • 0 0 * * 0: every Sunday at midnight
  • 0 0 1 * *: the first day of every month
  • 0 0 1 1,4,7,10 *: the first day of each quarter

The Day-of-Week Gotcha

When both day of month and day of week are restricted, cron runs the job when either one matches, not both. So 0 0 1 * 1 runs on the 1st of every month and on every Monday. The explainer says "or" in these cases so the surprise doesn't reach production. If one of the two fields starts with *, as in */2, both must match instead.

Other Things to Watch For

  • Time zones: Cron uses the server's time zone, which is often UTC. Compare both views before you rely on a time
  • Daylight saving: A time that doesn't exist on the day the clocks go forward is skipped in the list. Most cron daemons run those jobs right after the change
  • Impossible dates: 0 0 30 2 * never runs. The explainer tells you when a schedule has no runs in the next 5 years
  • Seconds fields: Quartz and Spring add a seconds field and characters like ?, L and #. This tool follows standard 5-field cron and points out when an expression uses the other format

Privacy

Everything is calculated in your browser. Your schedules are not sent anywhere, except in the page address if you choose to share it.

Conclusion

A plain-English summary, a field breakdown and real next run times take the guesswork out of cron. Check your next schedule at tools.typinks.com/cron-explainer.

Not Sure When Your Job Runs?

Paste the expression and see the next 20 runs.

Launch Cron Explainer