grepyard
All tools

Cron parser

Translate cron expressions into plain English and preview the next runs.

Format: minute · hour · day-of-month · month · day-of-week. Standard 5-field Unix cron.

Examples
In plain English

Every 15 minutes, between 09:00 and 17:59, Monday through Friday

Next runs (UTC)
  1. 2026-05-11 09:00:00 UTC
  2. 2026-05-11 09:15:00 UTC
  3. 2026-05-11 09:30:00 UTC
  4. 2026-05-11 09:45:00 UTC
  5. 2026-05-11 10:00:00 UTC
§ About this tool

What is a cron expression?

A cron expression is a five-field string that describes a recurring schedule. The format originated in the Unix cron daemon and has since been adopted by Kubernetes CronJob, GitHub Actions, AWS EventBridge, the Quartz Java scheduler, and many others. The expression names the times at which a job should fire.

Cron is small enough to read at a glance once you know the fields, and just irregular enough that almost everyone gets it wrong the first time — particularly the day-of-month/day-of-week interaction and the timezone the scheduler resolves it in.

How it works

A standard cron expression has five space-separated fields: minute (0–59), hour (0–23), day of month (1–31), month (1–12 or short names like jan), and day of week (0–7, where both 0 and 7 mean Sunday, or short names like mon). Each field accepts an asterisk *to mean “any value”, a comma list like 1,15,30, a range like 9-17, and a step like */15 for every fifteen minutes.

Some flavors extend the syntax. Quartz adds a sixth field for seconds and supports ? (no value), L (last day), W (weekday nearest a date), and #for “the Nth weekday of the month”. Many parsers also accept aliases: @daily = 0 0 * * *, @hourly = 0 * * * *, and @reboot for “at boot”.

When to use this tool

  • Authoring a new schedule and confirming the next several fire times match your intent.
  • Translating an unfamiliar expression you inherited from a config file or terraform module.
  • Diagnosing why a scheduled job did or didn't run last night.
  • Choosing between Vixie cron (5 fields) and Quartz (6 fields) when porting between systems.
  • Writing schedules for Kubernetes CronJob or GitHub Actions workflows.

Common pitfalls

  • Day-of-month and day-of-week are OR'd together in Vixie cron when both are non-asterisk. 0 0 1 * 1 means midnight on the 1st of every month and every Monday — not Mondays that fall on the 1st.
  • Containerized cron defaults to UTC. If your local cron worked and the same expression in Kubernetes fires hours off, the TZ environment variable is the cause.
  • Daylight saving transitions can skip or double a scheduled hour. A job at 0 2 * * * may not run on spring-forward day and may run twice on fall-back day.
  • Quartz expressions have six fields (seconds first). Pasting 0 0 12 * * ? into a five-field parser fails.
  • Step values align to wall-clock boundaries. */15means 0, 15, 30, 45 — not “every 15 minutes from when the job last ran”.

Frequently asked

How do I run something every 5 minutes?

*/5 * * * * in the minute field. This fires at 0, 5, 10, and so on through 55 of every hour.

What does 0 0 * * 0 mean?

Midnight every Sunday — minute 0 of hour 0 on day-of-week 0. (Both 0 and 7 are accepted for Sunday.)

What is the difference between Vixie cron and Quartz?

Vixie cron — the Unix original, used by most Linux distributions and Kubernetes — has five fields. Quartz, a Java scheduler, has six (the first is seconds) and adds ?, L, W, and #. They are not interchangeable.

Why didn't my cron job run during DST?

Most schedulers skip the missing hour on the spring-forward day and run twice in the repeated hour on the fall-back day. To avoid both, either schedule outside 02:00–03:00 local time or set the scheduler to UTC.

§ Related tools