Common examples
Cron Expression (5 fields: minute hour day month weekday)
0
Minute
9
Hour
*
Day
*
Month
1-5
Weekday
Plain English Explanation
Next 8 Run Times (your timezone)
    Field Breakdown
    Cron Syntax Quick Reference
    *every value
    */nevery n units
    a-brange from a to b
    a,b,cspecific values
    a-b/nrange with step
    0–6weekday (Sun=0, Sat=6)
    1–12month (Jan=1, Dec=12)
    1–31day of month
    @yearly0 0 1 1 *
    @monthly0 0 1 * *
    @weekly0 0 * * 0
    @daily0 0 * * *
    @hourly0 * * * *
    @midnight0 0 * * *
    @rebooton system start
    @annuallysame as @yearly

    Common Cron Expression Examples

    // click any example to load it into the validator above

    * * * * *
    Run every minute, all day, all year
    0 * * * *
    Run at the start of every hour
    0 0 * * *
    Run every day at midnight
    0 9 * * 1-5
    Run at 9:00 AM every weekday (Mon–Fri)
    */15 * * * *
    Run every 15 minutes
    */5 9-17 * * 1-5
    Every 5 min during business hours (Mon–Fri)
    0 0 1 * *
    Midnight on the 1st of every month
    0 0 1 1 *
    Once a year — January 1st at midnight
    0 */4 * * *
    Every 4 hours (0:00, 4:00, 8:00...)
    0 2 * * 0
    Every Sunday at 2:00 AM (weekly backup)
    30 23 * * 5
    Every Friday at 11:30 PM
    0 6,12,18 * * *
    Three times a day: 6am, noon, 6pm

    Frequently Asked Questions

    What does * * * * * mean in cron? +
    * * * * * means "run every single minute." The five fields are minute, hour, day of month, month, and day of week — each asterisk is a wildcard meaning "every possible value." So every minute, every hour, every day, every month, every weekday.
    What does */15 * * * * mean? +
    */15 * * * * means "every 15 minutes." The */n syntax means "every n units starting from the minimum." So */15 in the minute field triggers at minutes 0, 15, 30, and 45 of every hour — 96 times per day.
    How do I run a cron job every weekday at 9 AM? +
    Use 0 9 * * 1-5. Breaking it down: 0 = at minute 0, 9 = at hour 9 (9 AM), * = any day of month, * = any month, 1-5 = Monday through Friday. The days of week use 0=Sunday, 1=Monday, ..., 6=Saturday.
    How do I schedule a cron job on the 1st of every month? +
    Use 0 0 1 * * to run at midnight on the 1st of every month. Change the first two fields to set a different time — for example 30 8 1 * * runs at 8:30 AM on the 1st of every month.
    What is the difference between 0 0 * * 0 and @weekly? +
    They are identical. @weekly is a shorthand alias that expands to 0 0 * * 0 — midnight on Sunday. Other useful aliases: @daily = 0 0 * * *, @hourly = 0 * * * *, @monthly = 0 0 1 * *, @yearly = 0 0 1 1 *.
    Can I run a cron job every 2 hours between 8 AM and 6 PM? +
    Yes. Use 0 8-18/2 * * *. The 8-18/2 in the hour field means "from hour 8 to hour 18, every 2 hours" — so it runs at 8:00, 10:00, 12:00, 14:00, 16:00, and 18:00. This combines a range (a-b) with a step (/n).
    Why is my cron job not running at the expected time? +
    Common reasons: (1) Timezone mismatch — cron uses the server's local timezone which may differ from yours. (2) Day of month and day of week fields act as OR when both are set. (3) The cron daemon may not be running — check with systemctl status cron. (4) File permissions on your script. Use this tool to verify the expression is correct first.

    About This Tool

    CronExplainer is a free online cron expression validator and explainer for developers. Paste any standard 5-field cron expression to instantly see a plain English explanation, the next scheduled run times in your local timezone, and a detailed field-by-field breakdown. Supports all standard cron syntax including wildcards (*), step values (*/n), ranges (a-b), lists (a,b,c), and aliases (@daily, @weekly, etc.). Works entirely in your browser — no data is sent to any server.