Menu

Cron Expression Generator

Build, decode, and preview cron schedules with the next run times.

Last updated

Presets
Expression
Minute*/15
Hour*
Day of month*
Month*
Day of week*
Plain EnglishValid

Every 15 minutes

Next 5 runs (local time)
  • 12026-04-26 21:45 Sun
  • 22026-04-26 22:00 Sun
  • 32026-04-26 22:15 Sun
  • 42026-04-26 22:30 Sun
  • 52026-04-26 22:45 Sun

What is a cron expression?

A cron expression is a compact way to describe a recurring schedule. It's the same syntax used by Unix cron, the original Linux scheduler — and it has spread to almost every job runner you'll meet: Kubernetes CronJobs, GitHub Actions schedules, AWS EventBridge, Cloudflare Workers, Vercel cron, and most CI/CD platforms.

The format looks intimidating but is actually just five fields separated by spaces: minute, hour, day-of-month, month, day-of-week. Each field is either a number, a list (1,15), a range (9-17), a step (*/5), or a wildcard (*). A good cron tool turns the expression into plain English and shows the next firing times so you can verify it before deploying.

Some platforms extend the basic 5-field syntax with a leading *seconds* field (Quartz, Spring, Kubernetes 6-field) or a trailing *year* field. Always check which format your scheduler accepts before pasting an expression.

What you'll learn while building cron schedules

  • A standard cron expression has 5 fields: minute, hour, day-of-month, month, day-of-week.
  • * means "every value" for that field — it's the most common reason a schedule fires more often than expected.
  • */N means "every N units" — */5 in the minute field is "every 5 minutes".

How to write a cron expression step by step

  1. Start from a preset

    Pick a preset that's close to what you want — Every minute, Hourly, Daily at 9 AM, Weekdays at 9 AM, Monthly. The expression appears in the editor.

  2. Adjust each field

    Edit minute, hour, day-of-month, month, day-of-week. Use * for any value, comma lists, ranges (9-17), or steps (*/15).

  3. Read the plain-English explanation

    The tool turns your expression into a sentence (At 09:00 every weekday). If the sentence doesn't match what you wanted, the expression is wrong.

  4. Preview the next firings

    Verify the next 5–10 run times in your local time zone. Watch out for daylight-saving transitions if the schedule sits near the change.

  5. Copy into your scheduler

    Drop the expression into your crontab, GitHub Actions workflow, Kubernetes CronJob, or whichever scheduler you're using.

Cron field quick reference

The five fields of a standard cron expression, in order. Reference: the POSIX crontab(5) man page.

PositionFieldRangeSpecial
1Minute0–59* , - /
2Hour0–23* , - /
3Day of month1–31* , - / ? (some dialects)
4Month1–12 or JANDEC* , - /
5Day of week0–6 (Sun=0) or SUNSAT* , - /

Cron expression examples to try

Every 5 minutes

Expression

*/5 * * * *

Reads as

Every 5 minutes — at the top of the hour and every 5 minutes after.

Step values (*/5) are the easiest way to express "every N" without listing every number. Common for health checks and polling jobs.

Weekdays at 9 AM

Expression

0 9 * * 1-5

Reads as

At 09:00 every Monday through Friday.

Day-of-week range 1-5 means Monday–Friday. Use this for office-hours reminders and weekday-only digests.

First day of every month at midnight

Expression

0 0 1 * *

Reads as

At 00:00 on day 1 of every month.

Day-of-month 1 plus * for every other field gives you a true monthly job. Common for billing, reports, and rotation tasks.

Twice an hour, business hours, weekdays

Expression

0,30 9-17 * * 1-5

Reads as

At minute 0 and 30 between 09:00 and 17:00, Monday through Friday.

Comma list (0,30) plus a range (9-17) plus weekdays. This is the kind of schedule you'd use for a BI refresh or queue drain that only matters during work hours.

Common cron mistakes

  • Forgetting the time zone. Most cron daemons fire in the *server's* time zone — not yours. Set the time zone explicitly when the platform supports it.
  • Setting both day-of-month and day-of-week. In classic Unix cron, the schedule fires on a day matching *either* — which surprises most people the first time.
  • Using */45 and expecting it to fire every 45 minutes. Step values are computed from 0, so */45 fires at 0 and 45 — not at a true 45-minute interval.

Cron Expression FAQ

How do I write a cron expression?
A standard cron expression has five space-separated fields: minute, hour, day-of-month, month, day-of-week. Use * for *every value*, a number for an exact value, a comma list (1,15), a range (9-17), or a step (*/5).
What does */5 * * * * mean?
It means "every 5 minutes". The */5 in the minute field fires at minute 0 and every 5 minutes after — 0, 5, 10, 15, …, 55 — and the * in every other field means it fires every hour, every day, every month, every day of the week.
What time zone does cron use?
By default, cron uses the time zone of the system where it runs. Most cloud schedulers let you set a time zone explicitly (TZ=Europe/Berlin, AWS schedule expressions, etc.). When in doubt, store schedules in UTC.
Can a cron expression run every second?
Standard 5-field cron has minute as its smallest unit, so the highest resolution is every minute. Quartz cron, Spring cron, and some Kubernetes versions add a 6th *seconds* field for sub-minute schedules.
What is the difference between 0 0 * * 0 and 0 0 * * 7?
Both describe Sunday at midnight. Day-of-week is 0–6 (Sun–Sat) in most cron implementations, but 7 is also accepted as Sunday for compatibility with some dialects.

Other developer tools

Learn to code with Coddy

GET STARTED