Scrawlspace › Developer Utilities

Cron Expression Explainer

Paste a cron expression to read the schedule in plain English, see when it will run next in local time or UTC, and check each field as you type. It follows standard five-field crontab syntax as described in crontab(5), including names such as MON and JAN and shortcuts such as @daily.

How to use Cron Expression Explainer

  1. Type a Cron expression, e.g. 0 9 * * 1-5, or pick one of the Examples.
  2. Read the plain-English description of the schedule. A field with a mistake is marked with what's allowed.
  3. Switch Time zone between Local and UTC, to match the server or platform that will run the job.
  4. Check the Next runs list to confirm it fires when you expect.

Frequently asked questions

How do I read a cron expression?

Standard cron has five fields: minute, hour, day of month, month and day of week. For example, 30 18 * * 5 means 18:30 every Friday. Paste one here to see it in words.

What do *, comma, - and / mean in cron?

* means every value. A comma makes a list (1,15 is the 1st and 15th). A hyphen makes a range (1-5 is Monday to Friday in the day-of-week field). A slash sets a step: */5 in the minute field runs every five minutes, and 8-18/2 in the hour field runs every two hours from 08:00 to 18:00.

Why does my job run on extra days?

When both day of month and day of week are restricted (neither is *), cron runs when either one matches. 0 0 1 * 1 runs on the 1st of the month and on every Monday, not only on Mondays that are the 1st. The explainer says or when this applies.

Does it support @daily and other shortcuts?

Yes. @hourly, @daily, @midnight, @weekly, @monthly, @yearly, @annually and @reboot are recognised.

Why does my cron expression have six fields?

Standard cron uses five. Spring uses six with seconds first and no year field. Quartz also puts seconds first and allows an optional seventh field for the year. AWS EventBridge uses six fields that end with a year. This tool explains the standard five-field format and points out six-field input.

Does cron run in UTC or local time?

Classic cron uses the server's local time zone. GitHub Actions schedules always run in UTC, AWS EventBridge cron rules use UTC, and a Kubernetes CronJob uses the controller's zone unless you set its timeZone field. Use the UTC switch to check, and the timestamp converter to compare zones.

Cron fields and allowed values

FieldAllowed valuesExample
Minute0–59*/15: every 15 minutes
Hour0–239-17: every hour from 09:00 to 17:00
Day of month1–311: the 1st
Month1–12 or JAN–DEC1,7: January and July
Day of week0–6 or SUN–SAT (7 is also Sunday)1-5: Monday to Friday

Common schedules

Cron on different platforms

PlatformFieldsDifferences
Unix cron (Vixie, cronie)5Server time zone. The day-of-month and day-of-week OR rule. % in the command must be escaped as \%.
Kubernetes CronJob5Standard syntax. Optional timeZone field.
GitHub Actions5Always UTC. Runs can be delayed when load is high.
Spring @Scheduled6Seconds first, no year. Supports ? and L, W and # for days.
Quartz6 or 7Seconds first, optional year last. ? required in one day field; L, W and #.
AWS EventBridge6Minutes first, year last. ? required in one day field. UTC.

Why didn't my cron job run?