Cron Expression Generator — Free Online Tool

Generate cron expressions for scheduled tasks visually. Set minutes, hours, days, months. Human-readable format. Supports standard and Quartz cron syntax.

Use this free online Cron Expression Generator directly in your browser. No signup required, no data leaves your device. Part of Utilier — a collection of 133+ developer utilities.

What is Cron Expression Generator & Scheduler?

Cron is a time-based job scheduler in Unix-like systems (Linux, macOS) that runs commands or scripts at specified times and dates. A cron expression is a string of five or six fields (minute, hour, day, month, day-of-week) that defines when a task runs. This tool generates cron expressions visually — select time intervals using dropdowns and sliders, see human-readable descriptions, and copy the expression for use in crontab, Jenkins, Kubernetes CronJobs, or cloud schedulers (AWS EventBridge, GCP Scheduler).

  • Visual cron builder: Select minute, hour, day, month, and day-of-week using dropdowns instead of memorizing syntax. No manual typing required.
  • Human-readable output: See plain-English descriptions: 'At 3:00 AM every day' or 'Every 15 minutes on weekdays'. Verify the schedule before deploying.
  • Standard and Quartz syntax: Supports standard 5-field cron (minute hour day month day-of-week) and Quartz 6-field cron (adds seconds).
  • Common presets: Quick-select common schedules: every hour, daily at midnight, every weekday, first day of month, etc.
  • Next run times: Shows the next 5-10 scheduled run times based on the cron expression. Preview future executions.

Why use cron generator?

Cron syntax is cryptic and error-prone. A single mistake (wrong field order, invalid range) causes tasks to run at the wrong time or not at all.

  • Avoid syntax errors: Cron syntax is unforgiving: * * * * * vs 0 * * * * look similar but mean different things. Visual builder eliminates typos.
  • Learn cron syntax: See how visual selections translate to cron expressions. Great for learning the five-field format.
  • Verify schedules: Human-readable descriptions and next-run-time previews let you verify the schedule before deploying to production.
  • Save time: No need to look up cron syntax documentation or test expressions manually. Generate instantly.
  • Support for complex schedules: Easily create complex schedules (every 30 minutes on weekdays, first Monday of month, etc.) without manual calculation.
  • Universal compatibility: Generated expressions work in crontab, Jenkins, Kubernetes CronJobs, AWS EventBridge, GCP Cloud Scheduler, and most cron-compatible systems.

When to use cron generator

Use whenever you need to schedule recurring tasks.

  • Setting up automated backups to run daily at 2:00 AM.
  • Scheduling data synchronization or ETL jobs to run every hour or every 15 minutes.
  • Running cleanup scripts (delete old logs, temp files) weekly or monthly.
  • Triggering CI/CD builds or deployments on a schedule (nightly builds).
  • Sending scheduled emails, reports, or notifications (daily summary, weekly digest).
  • Configuring Kubernetes CronJobs for recurring cluster tasks.
  • Setting up AWS Lambda or GCP Cloud Functions to run on a schedule.

How to use cron generator

Select time intervals, see human-readable description, copy expression.

  1. Choose minute: Select minute(s): every minute (*), specific minute (30), every N minutes (*/15 = every 15 minutes), or range (0-30).
  2. Choose hour: Select hour(s): every hour (*), specific hour (3 = 3 AM), every N hours (*/2 = every 2 hours), or range (9-17 = 9 AM to 5 PM).
  3. Choose day of month: Select day(s): every day (*), specific day (1 = 1st of month), every N days (*/7 = every 7 days), or range (1-15 = first half of month).
  4. Choose month: Select month(s): every month (*), specific month (1 = January), or range (6-8 = summer months).
  5. Choose day of week: Select day(s): every day (*), specific day (1 = Monday, 0 or 7 = Sunday), or range (1-5 = weekdays).
  6. Preview and copy: See the cron expression (e.g., 0 3 * * *) and human-readable description ('At 3:00 AM every day'). Copy the expression to use in crontab or scheduler.

Key features

  • Visual cron builder: Select minute, hour, day, month, day-of-week with dropdowns. No manual typing.
  • Human-readable output: Plain-English descriptions: 'Every 15 minutes', 'Daily at midnight', 'Every Monday at 9 AM'.
  • Next run time preview: Shows next 5-10 scheduled executions. Verify the schedule before deploying.
  • Common presets: Quick-select: every minute, hourly, daily, weekly, monthly, yearly, weekdays only.
  • Standard and Quartz syntax: 5-field cron (standard Unix) or 6-field cron (Quartz, adds seconds).
  • Range and step support: Supports ranges (1-5), steps (*/15), lists (1,15,30), and wildcards (*).
  • Validation: Validates cron expressions and shows errors for invalid syntax.

Common use cases

  • Automated backups: Schedule database or file backups to run daily at 2:00 AM.
  • Data sync jobs: Run ETL pipelines or data sync tasks every hour or every 15 minutes.
  • Cleanup scripts: Delete old logs, temp files, or cache weekly or monthly.
  • CI/CD builds: Trigger nightly builds or scheduled deployments (daily at midnight).
  • Scheduled emails: Send daily summaries, weekly reports, or monthly newsletters.
  • Kubernetes CronJobs: Define CronJob schedules for recurring cluster tasks (log rotation, certificate renewal).

Examples

Common cron expressions and their meanings.

Every day at 3:00 AM

Minute: 0, Hour: 3, Day: *, Month: *, Day-of-week: *
0 3 * * *

Runs at 3:00 AM every day. Common for backups or nightly jobs.

Every 15 minutes

Minute: */15, Hour: *, Day: *, Month: *, Day-of-week: *
*/15 * * * *

Runs at 0, 15, 30, 45 minutes past every hour. Common for frequent sync jobs.

Every weekday at 9:00 AM

Minute: 0, Hour: 9, Day: *, Month: *, Day-of-week: 1-5
0 9 * * 1-5

Runs Monday through Friday at 9:00 AM. Skips weekends. Common for business-hours tasks.

First day of every month at midnight

Minute: 0, Hour: 0, Day: 1, Month: *, Day-of-week: *
0 0 1 * *

Runs at midnight on the 1st of every month. Common for monthly reports or billing jobs.

Every hour (on the hour)

Minute: 0, Hour: *, Day: *, Month: *, Day-of-week: *
0 * * * *

Runs at the start of every hour (1:00, 2:00, 3:00, etc.). Common for hourly data checks.

Technical reference

Cron expression format and syntax:

5-field format (standard)
minute hour day month day-of-week. Example: 0 3 * * * (3:00 AM daily).
6-field format (Quartz)
second minute hour day month day-of-week. Example: 0 0 3 * * * (3:00:00 AM daily).
Wildcards (*)
Matches any value. * in minute = every minute. * in hour = every hour.
Specific values
0-59 for minute, 0-23 for hour, 1-31 for day, 1-12 for month, 0-7 for day-of-week (0 and 7 = Sunday).
Ranges
1-5 = Monday to Friday. 9-17 = 9 AM to 5 PM. Inclusive on both ends.
Steps (*/n)
*/15 in minute = every 15 minutes (0, 15, 30, 45). */2 in hour = every 2 hours.
Lists (comma-separated)
0,15,30,45 in minute = at 0, 15, 30, 45 minutes past the hour.
Day-of-week (0-7)
0 = Sunday, 1 = Monday, 2 = Tuesday, ..., 6 = Saturday, 7 = Sunday (both 0 and 7 are Sunday).
Special characters
? (no specific value, Quartz only), L (last day of month/week), W (nearest weekday), # (nth day, e.g., 1#3 = 3rd Monday).
Comparison to at command
cron runs recurring tasks. at runs one-time tasks. Use cron for schedules, at for delayed execution.

Common mistakes to avoid

Using 0 0 * * * thinking it runs every hour, when it actually runs daily at midnight

Why it happens: Cron fields are positional: minute hour day month day-of-week. 0 0 * * * means minute=0, hour=0 (midnight), day=* (every day), month=* (every month), day-of-week=* (every day). Many beginners confuse this with 'every hour' because of the two 0s. To run every hour, use 0 * * * * (minute=0, hour=* = every hour).

How to avoid it: Memorize the field order: minute hour day month day-of-week. For every hour, set minute to a specific value (0 = on the hour) and hour to * (every hour): 0 * * * *. For daily at midnight, set minute=0 hour=0: 0 0 * * *.

Setting both day-of-month and day-of-week, causing unexpected behavior

Why it happens: If both day-of-month and day-of-week are specified (not *), the task runs if EITHER condition is true (OR logic, not AND). Example: 0 0 1 * 1 means 'at midnight on the 1st of the month OR on Mondays'. This runs on the 1st of every month AND every Monday, not just Mondays that are the 1st. Most users expect AND logic.

How to avoid it: Use * for one of the fields. For 'every Monday', use 0 0 * * 1 (day-of-month=*, day-of-week=1). For '1st of month', use 0 0 1 * * (day-of-month=1, day-of-week=*). Avoid setting both unless you understand OR semantics.

Using */30 for minute thinking it runs twice per hour (at 0 and 30), but it actually depends on the hour

Why it happens: */30 means 'every 30 minutes starting from 0'. In cron, this evaluates to 0, 30 within each hour, which does run twice per hour (correct). However, some users misunderstand step values. For example, */20 runs at 0, 20, 40 (three times per hour, not evenly spaced). */45 only runs once per hour at 0 (because 45 does not fit evenly).

How to avoid it: For twice-per-hour at 0 and 30, use */30 or 0,30. For three times per hour at 0, 20, 40, use */20 or 0,20,40. For exact times, use comma-separated lists (0,15,30,45) instead of steps.

Not testing cron expressions before deploying to production, causing missed or duplicate runs

Why it happens: Cron syntax errors or logic errors (wrong field order, OR instead of AND for day fields) cause tasks to run at the wrong time, not run at all, or run more often than expected. In production, this can cause data loss (missed backups), duplicate processing (billing twice), or outages (cleanup script runs during peak hours).

How to avoid it: Test cron expressions in a dev environment first. Use this tool's 'next run time' preview to verify the schedule. For critical tasks, log cron job executions and monitor for missed runs. Add alerts for failed or skipped jobs.

Forgetting that cron uses server time, not user's local time, causing off-by-hours errors

Why it happens: Cron runs based on the server's system time and timezone. If the server is in UTC and you schedule a job for '3:00 AM' thinking it is your local time (PST = UTC-8), the job actually runs at 3:00 AM UTC (7:00 PM PST the previous day). This is common on cloud servers (AWS, GCP) that default to UTC.

How to avoid it: Check the server's timezone: date or timedatectl (Linux). Convert your desired time to the server's timezone. Or set the timezone in crontab: CRON_TZ=America/Los_Angeles followed by cron jobs. For AWS EventBridge or GCP Scheduler, specify the timezone explicitly in the configuration.

Frequently asked questions

What does * * * * * mean in cron?

Every minute of every hour of every day of every month of every day-of-week. In other words, runs every minute. The five * represent minute, hour, day, month, day-of-week, all set to 'every'.

How do I run a cron job every 15 minutes?

Use */15 * * * * (every 15 minutes). The */15 in the minute field means 'every 15 minutes starting from 0', so it runs at 0, 15, 30, 45 minutes past every hour.

What is the difference between 0 0 * * * and * * * * *?

0 0 * * * runs once per day at midnight (minute=0, hour=0). * * * * * runs every minute of every day. The first is for daily tasks, the second for frequent polling or monitoring.

How do I run a cron job only on weekdays (Monday-Friday)?

Use * * * * 1-5 (every minute on weekdays) or 0 9 * * 1-5 (at 9:00 AM on weekdays). The 1-5 in the day-of-week field means Monday (1) through Friday (5). 0 and 7 are Sunday.

What does 0 0 1 * * mean?

At midnight (0:00) on the 1st day of every month. Common for monthly billing, reports, or cleanup jobs. Runs January 1st, February 1st, March 1st, etc.

Can I run a cron job every 90 minutes?

Not directly with standard cron (5 fields). Standard cron does not support 'every 90 minutes' because 90 does not divide evenly into 60 (minutes) or 24 (hours). Workaround: use two cron jobs (0 0,1,3,4,6,7,9,10,12,13,15,16,18,19,21,22 * * *) or use an external scheduler (systemd timers, at command) with better granularity.

How do I test a cron expression before deploying?

Use this tool's 'next run time' preview to see the next 5-10 executions. Or use crontab.guru (online cron translator) to verify the schedule. For testing in production, add a temporary cron job that logs output, wait for one execution, then verify timing.

References

Privacy and availability

  • Runs entirely in your browser — zero server processing
  • No signup or account required
  • Works offline once loaded
  • Fast, lightweight, no external dependencies
  • Available as a browser extension for Chrome and Firefox