Cron Expression Generator

Generate cron expressions with an interactive builder. Presets for common schedules. Human-readable descriptions included.

* * * * *

Every minute

What is Cron Expression Generator?

A cron expression generator helps you build valid cron schedule expressions through an intuitive interface instead of memorizing the cryptic 5-field syntax. Cron expressions define recurring schedules for automated tasks — they're used in Linux cron jobs, cloud schedulers (AWS CloudWatch, Google Cloud Scheduler), CI/CD pipelines, and task runners. The 5 fields (minute, hour, day-of-month, month, day-of-week) combine to express schedules from 'every minute' to complex patterns like 'at 2:30 AM on the first Monday of every quarter.'

How It Works

Select your desired schedule using dropdowns and inputs for each field: minute (0-59), hour (0-23), day of month (1-31), month (1-12), and day of week (0-6). The tool generates the corresponding cron expression and shows a human-readable description of when it will run. It also displays the next several execution times so you can verify the schedule matches your intent. Advanced options support ranges (1-5), lists (1,3,5), intervals (*/5 for every 5 units), and specific value combinations.

Examples

Every weekday at 09:30
Input
Minute 30, hour 9, Mon–Fri
Output
30 9 * * 1-5
Every 15 minutes during office hours
Input
Every 15 min, 09:00–17:00, weekdays
Output
*/15 9-17 * * 1-5

Quick Reference

ExpressionMeaning
* * * * *Every minute
*/15 * * * *Every 15 minutes
0 * * * *Hourly, on the hour
0 2 * * *Every day at 02:00
30 9 * * 1-509:30, Monday to Friday
0 0 1 * *Midnight on the first of each month
0 0 * * 0Midnight every Sunday
0 9-17/2 * * 1-5Every 2 hours, 09:00-17:00, weekdays

Common Use Cases

  • •Setting up automated database backup schedules for production systems
  • •Configuring CI/CD pipeline triggers for nightly builds or weekly deployments
  • •Creating scheduled report generation — daily, weekly, or monthly at specific times
  • •Setting up monitoring alert check intervals for infrastructure health checks
  • •Scheduling cache invalidation, log rotation, or cleanup jobs at appropriate intervals
  • •Configuring email digest schedules — daily summaries, weekly newsletters, monthly reports

Frequently Asked Questions

What cron format is used?▼

Standard 5-field cron: minute, hour, day-of-month, month, day-of-week.

What do the five fields in a cron expression mean?▼

In order: minute (0 to 59), hour (0 to 23), day of month (1 to 31), month (1 to 12) and day of week (0 to 6, where 0 is Sunday). So `30 2 * * 1` runs at 02:30 every Monday.

What is the difference between */15 and 0,15,30,45?▼

In the minute field they are equivalent. The step syntax `*/15` means every 15th minute starting from 0, and the list is explicit. Steps become clearer for irregular ranges — `0 9-17/2 * * *` runs every two hours between 09:00 and 17:00.

Why does specifying both day of month and day of week behave oddly?▼

This is the classic cron trap. When both fields are restricted, most implementations treat them as OR rather than AND, so `0 0 1 * 1` runs on the first of the month *and* every Monday, not only on a Monday that falls on the first. Leave one of the two as `*` unless you genuinely want the OR behaviour.

Which timezone does a cron job use?▼

Whatever the host or scheduler is configured for, which is frequently UTC on servers and containers while your intent was local time. Daylight saving makes this worse: a job scheduled at 02:30 local may be skipped or run twice on transition days. Schedule in UTC where you can, and avoid the hour that shifts.

Do all cron implementations accept the same syntax?▼

The five-field form is portable. Beyond that they diverge: Quartz and Spring add a seconds field at the front, giving six or seven fields; special strings such as `@daily` and `@reboot` are a Vixie cron extension; and `L`, `W` and `#` for last, nearest-weekday and nth-weekday are Quartz-only. Check what your scheduler supports.

How do I run a job on the last day of the month?▼

Plain cron cannot express it, since there is no way to say "28th, 30th or 31st depending on the month". Either use `L` if your scheduler is Quartz-based, or schedule the job daily and have the script exit unless tomorrow is the first of the month.

Related Tools

More from Developer Tools: