CRON Expression Generator & Tester

Build CRON schedules visually, get plain-English descriptions, and see the next run times — all in your browser.

Description
Next 5 Runs (local time)

    CRON Syntax Quick Reference

    Pattern Meaning Example
    *Every value* in hour = every hour
    */nEvery n-th value*/5 in minute = every 5 min
    nSpecific value9 in hour = 9 AM
    n-mRange1-5 in weekday = Mon–Fri
    n,m,pList1,15 in dom = 1st and 15th
    n-m/pRange with step0-12/2 in hour = every 2h, midnight–noon

    Quick answer

    A cron expression is five space-separated fields — minute, hour, day-of-month, month, day-of-week — that describe when a job repeats. This tool parses your expression into plain English and the next five run times, entirely in your browser. Type an expression or click a preset, adjust the individual fields, and read the description and upcoming runs below.

    About CRON Expressions

    CRON is a time-based job scheduler used in Unix-like systems. A CRON expression is a compact string of five fields that defines when a task should run: minute, hour, day of month, month, and day of week.

    Learn more in the companion guide: Understanding CRON Expressions with Examples.

    Worked example

    Take the weekday-morning schedule 0 9 * * 1-5 and read it field by field:

    0 9 * * 1-5
    │ │ │ │ └── day-of-week: 1-5  (Monday through Friday)
    │ │ │ └──── month:       *    (every month)
    │ │ └────── day-of-month:*    (every day)
    │ └──────── hour:        9    (09:00)
    └────────── minute:      0    (on the hour)

    Reads as

    "At 09:00, Monday through Friday" — i.e. every weekday at 9:00 AM. The next runs would be the coming weekdays at 09:00, skipping Saturday and Sunday.

    Change one field

    Edge cases & gotchas

    Frequently Asked Questions

    What is a CRON expression?

    A CRON expression is a string with five space-separated fields that defines a recurring schedule: minute (0–59), hour (0–23), day-of-month (1–31), month (1–12), and day-of-week (0–6, where 0 = Sunday). For example, 0 9 * * 1-5 means every weekday at 9:00 AM.

    What does * mean in CRON?

    An asterisk (*) means "every valid value" for that field. For example, * in the minute field means every minute, and * in the hour field means every hour.

    How do I run a CRON job every 5 minutes?

    Use */5 * * * *. The / syntax means "step" — */5 means every 5th value starting from 0 (so 0, 5, 10, 15, …).

    Can CRON run on a specific day-of-month and day-of-week at the same time?

    Not with AND logic. When both the day-of-month and day-of-week fields are restricted (neither is *), most CRON implementations combine them with OR — the job runs when either matches. So 0 0 13 * 5 runs on the 13th of every month or every Friday, not only on Friday the 13th. To get a true "Friday the 13th" schedule you need logic inside the job itself.

    Does */n really run every n minutes from when I add the job?

    No. Step values are aligned to fixed points in the field, not to when the job was created. */15 in the minute field fires at 0, 15, 30, and 45 past every hour. A value that doesn't divide evenly, like */40, fires at 0 and 40 and then resets at the top of the next hour — giving an uneven 40-then-20-minute gap rather than a steady 40-minute interval.

    Why does my 6-field cron expression fail here?

    This tool uses the standard 5-field Unix cron format: minute, hour, day-of-month, month, day-of-week. Some schedulers add a leading seconds field (6 fields) or, like Quartz, use 6 to 7 fields with different day-of-week rules. Remove the extra seconds field to use a 6-field expression here, and check your scheduler's own docs for non-standard formats.