LocalDevTools

Cron Expression Explainer & Generator

Paste a crontab schedule to see what it really means in plain English and exactly when it will run next. Start from a preset if you are writing a new one.

Next 10 runs

Runs entirely in your browser. Your input is never uploaded or stored on a server.

How to read a cron expression

A standard cron expression has five fields separated by spaces. A job runs when the current time matches all of the fields (with one exception for the two day fields, explained below).

┌───────── minute        (0–59)
│ ┌─────── hour          (0–23)
│ │ ┌───── day of month  (1–31)
│ │ │ ┌─── month         (1–12 or JAN–DEC)
│ │ │ │ ┌─ day of week   (0–7 or SUN–SAT, 0 and 7 are Sunday)
│ │ │ │ │
* * * * *
*every value
5exactly 5
1,15a list: 1 and 15
9-17a range: 9 through 17 inclusive
*/10a step: every 10th value starting at the minimum (0, 10, 20…)
10-40/10a step within a range: 10, 20, 30, 40

How to use this tool

  1. Paste an expression from your crontab, Kubernetes CronJob, GitHub Actions workflow or CI config, or pick a preset.
  2. Read the plain-English summary and the field-by-field breakdown. Errors name the field and value that is wrong.
  3. Check the next 10 run times. Switch between local time and UTC, because most servers, GitHub Actions and Kubernetes evaluate cron in UTC by default.

Examples

0 9 * * 1-5At 09:00, Monday through Friday
*/5 * * * *Every 5 minutes
0 0 1 * *At midnight on the first day of every month
30 4 * * 0At 04:30 every Sunday
0 22 * * 1-5At 22:00 on weekdays, a typical nightly build
@dailyShortcut for 0 0 * * * (also @hourly, @weekly, @monthly, @yearly)

The day-of-month / day-of-week trap

When both day fields are restricted, classic cron (Vixie cron, used by most Linux distributions) runs the job when either matches. So 0 0 13 * 5 runs on every 13th of the month and on every Friday, not only on Friday the 13th. This tool follows that rule and warns you when it applies.

Platform differences

  • Quartz and Spring use six or seven fields, with seconds first and an optional year, plus special characters such as ?, L, W and #. This tool explains the standard five-field format.
  • GitHub Actions schedules use five-field cron in UTC, and runs may be delayed during busy periods. The shortest interval is every 5 minutes.
  • Kubernetes CronJobs use five-field cron. Since Kubernetes 1.27 you can set timeZone in the spec; otherwise the controller's time zone applies.

Frequently asked questions

Why did my cron job not run at the time I expected?

The most common reason is time zones: the server or platform probably evaluates cron in UTC. Switch the run preview to UTC to compare. Other causes are the day-of-month/day-of-week OR rule and the job's environment (cron runs with a minimal PATH).

How do I run a job every 30 seconds?

Standard cron cannot go below one minute. Common workarounds are two entries where one sleeps 30 seconds first, or a systemd timer, which supports seconds.

Is 0 or 7 Sunday?

Both. In standard cron 0 and 7 mean Sunday, and 1 is Monday. You can also use names like SUN, MON or FRI.

What does */15 mean in the hour field?

Every 15th hour starting from 0, which is 00:00 and 15:00 only. Steps restart at the start of the range, so they do not "carry over" across days.

Does this support @reboot?

@reboot runs once when the cron daemon starts, so it has no next run time. The tool recognizes it and explains that.

Related tools

Last updated: