DNS Checker.eu

Cron Expression Generator

Cron expression generator and explainer: paste a five-field schedule to get a plain-English description, the next five run times, every matched value and a crontab line.

minute
0-59
hour
0-23
day of month
1-31
month
1-12
day of week
0-7

In plain English

Runs at 02:30, on Monday, Tuesday, Wednesday, Thursday, Friday.

Next 5 runs

  1. 1.7/27/2026, 2:30:00 AM
  2. 2.7/28/2026, 2:30:00 AM
  3. 3.7/29/2026, 2:30:00 AM
  4. 4.7/30/2026, 2:30:00 AM
  5. 5.7/31/2026, 2:30:00 AM

Shown in your local timezone. Servers usually run cron in UTC - check the daemon's TZ.

Matched values

minute
30(1)
hour
2(1)
day of month
all(31)
month
all(12)
day of week
Monday, Tuesday, Wednesday, Thursday, Friday(5)

Crontab line

30 2 * * 1-5 /usr/local/bin/your-command >> /var/log/your-job.log 2>&1

About Cron Expression Generator

The Cron Expression Generator turns a five-field schedule into something you can check before it goes near a server. Type or paste an expression and you get a plain-English description, the next five times it will fire in your local timezone, the complete set of values each field matches, and a crontab line ready to paste. Presets cover the schedules people write most often, from every five minutes to weekdays at 02:30, so you can start from a working expression rather than a blank field.

The classic trap is the day-of-month and day-of-week interaction. Both POSIX crontab (IEEE Std 1003.1) and Vixie cron, the implementation behind cron on most Linux and BSD systems, specify that when both fields are restricted the job runs when either matches, not both. So 0 3 1 * 1 does not mean the first of the month if it is a Monday; it means the first of the month and every Monday. Jobs written that way fire far more often than intended, and the mistake usually survives review.

This implementation expands every field itself - ranges, lists, steps such as */15, and month and day names like jan or mon - then walks forward minute by minute to find the next matches, applying the either-may-match rule exactly as cron does. Because it lists the expanded values per field, an expression like */7 * * * * shows its uneven wrap at the top of the hour rather than hiding it. Times are rendered in your browser's timezone; cron daemons commonly run in UTC, so check the daemon's TZ before trusting the hour.

How to use it

  1. 1Type or paste a five-field cron expression into the field, or start from a preset such as Weekdays at 02:30.
  2. 2Use the labels under the input as a reminder of each position and its range: minute 0-59, hour 0-23, day of month 1-31, month 1-12, day of week 0-7.
  3. 3Read the plain-English description to confirm the schedule means what you intended.
  4. 4Check the next five run times, remembering they are shown in your browser's timezone rather than the server's.
  5. 5Scan the matched values panel to see exactly which minutes, hours, days and months the expression selects.
  6. 6Copy the generated crontab line and replace the placeholder command with your own.

Common use cases

  • -Verifying a schedule before adding it to a production crontab or a Kubernetes CronJob.
  • -Debugging a job that runs more often than expected because day-of-month and day-of-week are both restricted.
  • -Explaining an inherited expression such as 17 */2 1,15 * * without decoding it by hand.
  • -Converting a plain-language requirement like every weekday at 02:30 into a correct expression.
  • -Checking that a monthly job never lands on a date that does not exist, such as 31 February.

Frequently asked questions

What do the five fields in a cron expression mean?
In order: minute (0-59), hour (0-23), day of month (1-31), month (1-12) and day of week (0-7, where both 0 and 7 are Sunday). Each field takes an asterisk for every value, a single number, a list, a range, or a range with a step. Month and day names such as jan and mon are accepted by most implementations.
Why does my cron job run more often than I expected?
Almost always because the day-of-month and day-of-week fields are both restricted. POSIX crontab and Vixie cron then run the job when either field matches, not when both do, so 0 3 1 * 1 fires on the first of the month and on every Monday. To require both conditions, leave one field as an asterisk and test the date inside your script.
What does */5 * * * * mean?
Every five minutes: at minute 0, 5, 10 and so on, past every hour of every day. The step syntax */n means start at the beginning of the field's range and take every nth value. Note that steps do not wrap, so */7 gives minute 0, 7, 14 up to 56, then jumps back to 0 only four minutes later at the top of the hour.
Does cron use UTC or local time?
It uses the timezone of the daemon's environment, which on most servers and in most containers is UTC even when your workstation is not. This tool shows the next runs in your browser's timezone, so compare them against the server's TZ before assuming a job runs at 03:00 local. Daemons that do honour local time can also skip or repeat jobs across a daylight-saving change.