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

Full crontab line

Add the command and choose what happens to its output. Paste the result into crontab -e.

Output
*/15 9-17 * * 1-5 /usr/bin/php /var/www/app/artisan schedule:run >> /var/log/cronjob.log 2>&1

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.
What does */5 mean in cron?
The slash is a step. */5 in the minute field means every 5th minute starting at 0: :00, :05, :10 … :55. It counts from the start of the field, not from when the job was added, so */7 gives a short 4-minute gap at the top of each hour.
Can a cron expression have 6 or 7 fields?
Not in standard crontab, which always has 5. Six- and seven-field expressions come from Quartz and Spring (a seconds field first, an optional year last) and AWS EventBridge (a year field last). Pick the matching dialect above and Cronsmith validates them with the right rules.
How do I add a cron job?
Run crontab -e, paste one line per job (the five schedule fields, then the command) and save. Cron picks up the change automatically. The "Full crontab line" box above builds that line for you, including log redirection and an optional flock lock.
Is cron outdated?
No. Cron is still the default scheduler on Linux and macOS servers, and its five-field syntax is used by GitHub Actions, Kubernetes CronJobs, Vercel and many cloud schedulers. systemd timers are an alternative on Linux when you need catch-up after downtime or sub-minute precision.
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.