Cron Expression Explainer

Explain a 5-field cron expression in plain language.

What this cron expression explainer does

Cron expressions are compact, but they are easy to misread. This tool takes a standard 5-field cron expression and explains each field in plain language, so you can see at a glance which minute, hour, day of month, month and day of week a schedule targets.

It is for developers, DevOps engineers and sysadmins who write crontab entries, CI pipeline schedules, scheduled serverless functions or Kubernetes CronJobs, and for anyone who has inherited a schedule like 30 2 * * 1-5 and wants to be sure what it does.

How to use the cron explainer

  1. Type or paste a cron expression into the Cron expression field. The default example is */15 * * * *.
  2. Make sure the fields are in this order: minute, hour, day of month, month, day of week, separated by spaces.
  3. Click Submit.
  4. Read the list. Each line names the field, repeats your value in brackets and explains it, for example "Minute (*/15): every 15".

The tool reads the first five fields. If you paste a crontab line that also contains a command, only the schedule part is explained. If there are fewer than five fields, you will see a message asking for all five.

Cron syntax in a nutshell

  • Minute – 0 to 59
  • Hour – 0 to 23 (24-hour clock)
  • Day of month – 1 to 31
  • Month – 1 to 12 (many implementations also accept JAN–DEC)
  • Day of week – 0 to 6, where 0 is Sunday (many implementations also accept 7 for Sunday, and SUN–SAT)

Special characters:

  • * – every value of the field.
  • */n – every n units, for example */15 in the minute field means minutes 0, 15, 30 and 45.
  • a-b – a range, for example 1-5 in the day-of-week field means Monday to Friday.
  • a,b,c – a list of values, for example 0,30 means minute 0 and minute 30.

Examples and how to read them

  • */15 * * * * – every 15 minutes, every hour, every day.
  • 0 * * * * – at minute 0 of every hour (hourly).
  • 30 2 * * * – every day at 02:30.
  • 0 9 * * 1-5 – at 09:00, Monday to Friday.
  • 0 0 1 * * – at midnight on the first day of every month.
  • 0 8,20 * * * – every day at 08:00 and 20:00.

To read a result, combine the lines. "Minute: at 0", "Hour: at 9", "Day of week: from 1 to 5" means the job runs at 09:00 on weekdays.

Common use cases

  • Checking a crontab entry before you deploy it to a server.
  • Reviewing scheduled jobs in a CI/CD workflow or a Kubernetes CronJob manifest.
  • Documenting backup, report and cleanup schedules for your team.
  • Learning cron syntax with instant feedback.

Tips and common mistakes

  • Time zone. Cron runs in the time zone of the machine or service that executes it. Many servers and hosted schedulers use UTC, so "0 9 * * *" may not mean 09:00 where you are.
  • Day of month and day of week together. In classic Vixie cron, if both fields are restricted (neither is *), the job runs when either one matches, not only when both match. 0 0 13 * 5 runs on every 13th and on every Friday.
  • Minute vs hour confusion. * 2 * * * runs every minute between 02:00 and 02:59, not once at 2 a.m. Use 0 2 * * * for once.
  • Five fields vs six. Some schedulers (for example Quartz and some cloud services) add a seconds or year field. This tool explains the standard 5-field format, so remove extra fields before pasting.
  • Combined syntax. Expressions that mix a range and a step (such as 0-30/5) or use names are valid in many cron implementations, but the plain-language line for those fields may be simplified. Read the raw value shown in brackets as well.
  • Steps restart each period. */7 in the minute field runs at 0, 7, 14 … 56 and then again at 0 of the next hour, so the gap across the hour is shorter.

Frequently asked questions

What does */5 mean in cron?

It means every 5 units of that field. In the minute field, */5 runs at minutes 0, 5, 10 and so on up to 55.

How do I run a cron job every day at midnight?

Use 0 0 * * *. Many cron implementations also accept the shortcut @daily, but this tool expects the five numeric fields.

Is Sunday 0 or 7?

0 is Sunday in standard cron. Many implementations also accept 7 for Sunday. Using 0 is the safest choice.

Can cron run a job every 30 seconds?

Not with standard 5-field cron: the smallest unit is one minute. You need a scheduler that supports a seconds field, or a different approach such as a looping service.

Why didn't my cron job run at the time I expected?

The most common causes are a time-zone difference, a misread field order, the day-of-month/day-of-week "either" rule, or an environment problem in the command itself (such as a missing PATH).

Does this tool show the next run times?

No. It explains each field in words. To be sure about the exact run times, check them against your scheduler's own documentation or logs.

Related tools

  • Unix Timestamp Converter – check when a job ran from epoch timestamps in logs.
  • Regex Tester – test patterns you use to filter job logs.
  • JSON Formatter – read JSON output from scheduled API calls.
  • Ping IP – confirm that the host a job connects to is reachable.