Free Online Cron Expression Generator

Build, preview, and understand cron expressions visually.
Use the visual builder, type in plain English, or paste an expression to decode it.

Quick presets:

Type a natural-language schedule and click Generate. Examples: "every 15 minutes", "every Monday at 9am", "weekdays at noon", "first of every month at 2am".

Paste an existing cron expression below — it will be decoded live.

* * * * *
Minute
*
Hour
*
Day
*
Month
*
Weekday
*

Runs every minute.

Next 5 scheduled runs (UTC)

    What is a cron expression?

    A cron expression is a compact string used to define recurring schedules for automated tasks on Unix-like operating systems. The name comes from cron, the time-based job scheduler in Linux and macOS that reads these expressions and triggers the associated commands at the right time.

    Each cron expression consists of five fields separated by spaces. From left to right they represent: minute, hour, day of month, month, and day of week. Special characters like * (wildcard), / (step), - (range), and , (list) let you express complex schedules in a very compact format.

    Cron expressions are widely used beyond classic Unix cron — they appear in cloud schedulers (AWS EventBridge, GCP Cloud Scheduler), CI/CD pipelines (GitHub Actions, GitLab CI), Laravel's task scheduler, Spring Boot, Kubernetes CronJobs, and more.


    Cron expression format

    Field Position Allowed values Special characters
    Minute1st0 – 59* , - /
    Hour2nd0 – 23* , - /
    Day of month3rd1 – 31* , - /
    Month4th1 – 12 (or JAN–DEC)* , - /
    Day of week5th0 – 7 (0 and 7 = Sunday; or SUN–SAT)* , - /

    Common cron expression examples

    Expression Meaning
    * * * * *Every minute
    0 * * * *At the start of every hour
    0 0 * * *Every day at midnight (00:00)
    0 12 * * *Every day at noon (12:00)
    */5 * * * *Every 5 minutes
    0 9 * * 1-5Every weekday (Mon–Fri) at 9:00 AM
    0 0 * * 0Every Sunday at midnight
    0 0 1 * *At midnight on the 1st of every month
    0 */6 * * *Every 6 hours (00:00, 06:00, 12:00, 18:00)
    30 8 * * 1,3,5At 08:30 on Monday, Wednesday, and Friday

    Frequently Asked Questions

    Both 0 and 7 represent Sunday in the day-of-week field of a cron expression. This dual-numbering exists for historical reasons — traditional Unix cron uses 0, while some older systems and schedulers also accept 7. Modern implementations like Vixie cron, cronie, and most cloud schedulers support both values, so 0 0 * * 0 and 0 0 * * 7 both mean "every Sunday at midnight." For consistency and maximum compatibility, it's best to use 0 for Sunday.
    Standard 5-field cron expressions only support a minimum granularity of one minute — there is no seconds field. If you need sub-minute scheduling (e.g. every 30 seconds), you have a few options: (1) run two cron jobs one minute apart and introduce a sleep 30 in the script, (2) use a cron daemon that supports a seconds field (such as Quartz Scheduler in Java or some cloud schedulers that extend the format to 6 fields), or (3) use a persistent process or queue worker instead of cron.
    Use a comma-separated list in the day-of-week field. For example, 0 9 * * 1,3,5 runs at 9:00 AM on Monday, Wednesday, and Friday. You can also combine it with ranges: 0 9 * * 1-3,5 runs on Monday, Tuesday, Wednesday, and Friday. The same comma-list syntax works in all five cron fields — so 0 0 1,15 * * runs at midnight on the 1st and 15th of every month.
    The / character defines a step value. */5 in the minute field means "every 5 minutes starting from 0" — so the job runs at :00, :05, :10, :15, ..., :55 of every hour. More generally, */n means "every n units". You can also apply it to a range: 10-50/10 means "every 10 minutes between minute 10 and 50," resulting in :10, :20, :30, :40, :50.
    By default, cron runs in the system timezone of the server — traditionally UTC on most servers. The cron expression itself carries no timezone information. If you need a job at "9am New York time," you must either configure the system timezone, or use a scheduler that supports explicit timezone settings (e.g. Laravel's ->timezone('America/New_York'), AWS EventBridge schedule expressions, or GCP Cloud Scheduler). Always document the timezone assumption in your cron setup to avoid surprises when servers are migrated or daylight saving time changes occur.