Cron Expression Builder & Explainer

Type a cron schedule or use the visual builder to get an instant plain-English translation and the next five run times. Perfect for server jobs, CI pipelines, and scheduled tasks. Nothing uploaded.

Live plain-English explanation Next 5 run times Visual field builder 5 & 6 field ? GitHub Actions format 30-day run heatmap

Cron Expression

Meaning

Presets

Visual Builder

Next 5 Run Times

    30-Day Run Density

    Darker = more runs that day. Hover for count.

    Export

    Copies the expression wrapped in the correct GitHub Actions YAML schedule syntax.

    Cron expressions and scheduling

    The five (or six) cron fields

    A cron expression uses 5 or 6 space-separated fields to define a schedule: minute (0-59), hour (0-23), day-of-month (1-31), month (1-12), day-of-week (0-7 where both 0 and 7 = Sunday), and optionally seconds (0-59 for 6-field cron). Asterisk (*) means "any value"; ranges like 1-5 mean "1 through 5"; step values like */15 mean "every 15 units". Example: "0 9 * * 1-5" means "at 9:00 AM every weekday" because minutes=0, hours=9, day-of-month=any, month=any, day-of-week=Monday-Friday.

    Common scheduling pitfalls

    Many schedulers (Cron, AWS Lambda, GitHub Actions) have quirks. Linux cron doesn't support seconds, but Quartz and CloudWatch do. Some systems interpret day-of-month AND day-of-week as OR (both active) instead of AND. If you specify "day 15 AND Friday", most systems run on BOTH the 15th and every Friday - check your documentation. Also note: cron times are in the server's timezone, not your local time, which is a common source of confusion.

    FAQ

    What's the difference between "0 0 * * *" and "@daily"?

    They're equivalent - "@daily" is a shorthand macro. Both run once at midnight UTC. Some cron implementations support shorthands like @hourly, @weekly, @monthly, making expressions more readable. Check whether your scheduler supports them.

    Can I run a job every 30 seconds?

    Only if your scheduler supports 6-field cron with seconds (e.g. Quartz, GitHub Actions, AWS CloudWatch). Standard Linux cron only supports minute granularity (minimum is every minute). If you need subsecond precision, use a different tool like systemd timers or application-level scheduling.

    Why didn't my scheduled job run?

    Check: (1) Does the expression match the current time? (2) Is the server/scheduler running? (3) Does the job have permission to execute? (4) Is the timezone correct? (5) Did the cron daemon restart, losing unsaved jobs? (6) Are there typos in the command being run? Use this tool's "Next 5 run times" to verify the expression is correct first.

    Last reviewed: May 31, 2026