Cron expression parser, field by field.

Paste any five-field cron expression: one you wrote, or one you found in someone's crontab. Every field comes back in plain English, along with what is wrong when something is, and when the job would next run on your clock.

Cron expression parser

Generator

Every 5 minutes

Field by field

  • Minute · 0–59 */5 every 5th minute
  • Hour · 0–23 * every hour
  • Day of month · 1–31 * every day of the month
  • Month · 1–12 or JAN–DEC * every month
  • Day of week · 0–7 or SUN–SAT * every day of the week

Next runs in your local time

    How one field is read

    A field is a list of values separated by commas. Each value is a number, a range (1-5), a step (*/15 or 9-17/2), or a name where names exist (JAN-DEC, SUN-SAT).

    * means "every value in this field," so on its own it never narrows anything. That is why 0 0 1 * * runs monthly while 0 0 1 1 * runs once a year.

    Day of month and day of week are the trap: when both are restricted, standard cron runs the job when either matches, not both. The linter on this page says so when it sees it.

    Looking for the ranges and ready-made schedules? They are on the cheat sheet, every common schedule has its own page, and the generator builds expressions instead of reading them. The expressions that quietly do the wrong thing are collected on cron mistakes.

    Five fields, or six?

    The five-field form (minute, hour, day of month, month, day of week) is what crontab, systemd timers, GitHub Actions, Kubernetes CronJobs, and most schedulers use. A six-field expression with a leading seconds field is Quartz, and Spring and a few Node schedulers use it too. This page names that shape and stops rather than reading it wrong; the converter turns it into the five-field line, seconds field included.