Skip to main content

Cron Expression Generator — Build & Explain Cron Schedules

Build a cron schedule from dropdowns or type one, read it in plain English, and see the next five run times. Free, in your browser.

minute · hour · day of month · month · day of week

At 09:00, on MON–FRI
minute
hour
day of month
month
day of week
Next 5 runs
…

Your browser's time zone is …. Cron on a server uses the server's zone; on GitHub Actions and Vercel it is always UTC.

Runs entirely in your browser. Nothing you enter is sent to us or stored. Scheduled jobs are usually the first step toward automating a whole workflow. See what we automate for clients.

Found a problem, or something that could be better? We read every message and we fix things quickly.

This free cron expression generator builds a five-field cron schedule from dropdowns and reads any expression back in plain English, with the next five run times computed for your time zone or UTC. It understands the standard syntax shared by crontab, GitHub Actions, Kubernetes CronJob, Vercel cron and most schedulers: asterisks, lists, ranges, steps, and month and weekday names.

Cron syntax is compact and unforgiving: “0 0 1 * *” and “0 0 * * 1” look alike and mean the first of every month versus every Monday. Seeing the schedule in words and as concrete dates is the difference between a job that runs at 9:00 on weekdays and one that runs at 09:00 UTC on Sunday, which is the mistake this page exists to prevent.

How to use

  1. Start from a preset or type an expression. The English description and next runs update as you edit.
  2. Use the five field editors to set minute, hour, day of month, month and day of week: every, every N, or specific values.
  3. Check the next five runs. Tick “Interpret in UTC” if the job will run on a server or CI runner, which almost always uses UTC.
  4. Copy the expression, or copy a complete crontab line with the description as a comment.
  5. Paste it into crontab -e, a GitHub Actions schedule: block, a Kubernetes CronJob spec, or your platform's cron settings.

Frequently asked questions

What do the five fields mean?

In order: 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, where both 0 and 7 are Sunday). An asterisk means every value; 1-5 is a range; 1,15 is a list; */10 means every tenth value.

What happens when both day of month and day of week are set?

Standard (Vixie) cron runs the job when either matches, not both. “0 0 13 * FRI” runs on the 13th of every month and on every Friday, not only on Friday the 13th. This page follows that rule. Some schedulers (Quartz) differ and use a ? to mark the unused field.

Which time zone does cron use?

The zone of the machine or service running it. Personal servers usually use local time; cloud runners, GitHub Actions, Vercel and most Kubernetes clusters use UTC. A job set for 9:00 on a UTC runner fires at 5:00 in Toronto in summer and 4:00 in winter. The UTC toggle here shows exactly that shift.

Does it support seconds or the L, W and # extensions?

No. Six-field (seconds) syntax and the L (last), W (weekday) and # (nth weekday) extensions belong to Quartz and some enterprise schedulers, not to standard cron, and most platforms reject them. If you need “last Friday of the month”, the portable approach is a job that runs every Friday and checks the date itself.

Why does my job never run?

Common causes: the schedule is valid but impossible (31 April, 30 February); the server is in a different time zone than you assumed; the crontab line has no command or the command's PATH differs from your shell; or the interval is shorter than the job's own runtime and instances pile up. The next-runs list here catches the first two.

Cron syntax reference

• * every value · 5 exactly 5 · 1-5 range · 1,3,5 list · */15 every 15th value · 1-30/5 every 5th value from 1 to 30

• Names: JAN–DEC for months, SUN–SAT for weekdays (case-insensitive); ranges of names work (MON-FRI).

• @hourly, @daily, @weekly, @monthly, @yearly and @reboot are shortcuts accepted by crontab but not by every platform; the five-field form is the portable one.

• Fields are separated by whitespace; the command follows on the same line in a crontab.

Where cron schedules go

Linux and macOS: crontab -e, one job per line, expression then command. GitHub Actions: on: schedule: - cron: '0 9 * * 1-5', always UTC, and runs may be delayed several minutes at busy times. Kubernetes: the schedule field of a CronJob. Vercel: vercel.json crons with a path and a schedule, UTC. Cloud schedulers (AWS EventBridge, Google Cloud Scheduler) accept the same syntax with small dialect differences, and EventBridge adds a year field.

Related free tools

  • Regex Tester — Test a regular expression against sample text with live match highlighting, capture groups and replace preview. Free, in your browser.
  • JSON Formatter — Pretty-print, minify and validate JSON, with parse errors located by line and column. In your browser, no upload.
  • Unit Converter — Convert between every common unit — metric and imperial, cooking, data, pressure, energy, speed, fuel economy — instantly, in your browser.
Free Tools by Pine & Birch — technology consulting, Toronto. Free to use, no signup, no attribution required.