Cron expression generator

Click a field, pick the values, and read back exactly when the job fires: in plain English, as the next ten runs in your time zone, and struck onto a 24-hour rule. Works for crontab, Quartz, Spring and AWS.

✓ Valid cron

Every 15 minutes between 09:00 and 17:59, on weekdays (Monday through Friday).

Next 10 runs

Calculating in your browser…

Times are computed in your browser for the selected zone and are informational. The server that runs the job uses its own zone (often UTC) and cron flavour, so verify there.

Same schedule in other dialects

Unix crontab*/15 9-17 * * 1-5
Quartz0 */15 9-17 ? * MON-FRI
Spring @Scheduled0 */15 9-17 ? * MON-FRI
AWS EventBridgecron(*/15 9-17 ? * MON-FRI *)

Describe it in words, get the expression

Uses AI (Unix dialect). The answer is checked by the same validator before you can apply it.

Quick-start patterns

Minutes

Hours

Days

Weeks

Months & years

Business

How to write a cron expression

A standard cron expression is five fields separated by spaces. Each field narrows down when the job runs:

┌──────── minute        0–59
│ ┌────── hour          0–23
│ │ ┌──── day of month  1–31
│ │ │ ┌── month         1–12 or JAN–DEC
│ │ │ │ ┌ day of week   0–6 (0 = Sunday) or SUN–SAT
│ │ │ │ │
*/15 9-17 * * 1-5
  1. Start with the time. Fix the minute first. Leaving it as * runs the job every minute of the matching hours, the most common cron mistake.
  2. Then the hour. A single value (9), a range (9-17), a list (9,13,17) or a step (*/2).
  3. Then restrict the days with day of month or day of week, but usually not both (see the OR rule in the FAQ below).
  4. Check the next runs above before you deploy, in the time zone of the server.

The cron syntax guide has an interactive walk-through of every field and operator, and what is a cron job explains how the cron daemon decides what to run.

Where to paste it

Questions

How do I read a cron expression?
Read the five fields left to right: minute, hour, day of month, month, day of week. "30 2 * * 1" means minute 30, hour 2, any day of the month, any month, on Monday: every Monday at 02:30. Paste any expression above and Cronsmith writes it out in plain English.
Is this the same as crontab syntax?
Yes. The default Unix mode follows the five-field format used by crontab on Linux and macOS (Vixie cron and cronie), GitHub Actions, Kubernetes CronJobs and Vercel. Switch to Quartz / Spring for six-field expressions with seconds, or AWS EventBridge for the six-field cron() format.
Which time zone do the next run times use?
The preview uses the zone you pick, defaulting to your browser’s zone. Cron itself uses the time zone of the machine or service that runs it; GitHub Actions and Vercel always use UTC, Kubernetes uses the controller’s zone unless you set spec.timeZone.
Why does my job run on the 13th and on every Friday?
In standard cron, when both day-of-month and day-of-week are restricted, the job runs when either matches. "0 0 13 * 5" fires on every 13th and every Friday. Cronsmith warns about this; Quartz and AWS avoid it by requiring "?" in one of the two fields.
Can cron run every 30 seconds?
Not in Unix cron: its smallest unit is one minute. Quartz and Spring have a seconds field, so "*/30 * * * * ?" runs every 30 seconds there. On Linux, use a systemd timer or a loop inside the job for sub-minute work.
Are my expressions sent anywhere?
Building, validating and previewing happen entirely in your browser. Only the optional AI features send the text you type to the server, which forwards it to an AI model. Favorites and recent expressions are kept in your browser’s local storage.