Generate, validate, and understand cron expressions with a visual editor. Supports Linux crontab, AWS CloudWatch, GitHub Actions, and Kubernetes formats.
Common Presets
Visual Builder
Expression
Platform Format
No upcoming runs found in the next 50 years.
* Any / every value */n Every nth unit a-b Range from a to b a,b,c Specific values list a-b/n Range with step | Field | Range |
|---|---|
| Minute | 0–59 |
| Hour | 0–23 |
| Day | 1–31 |
| Month | 1–12 |
| Weekday | 0–7 (0,7=Sun) |
A cron expression is a string of five or six fields that defines a recurring schedule for automated tasks. Each field represents a unit of time: minute, hour, day of month, month, and day of week. Cron jobs run automatically on Linux servers, AWS EventBridge, GitHub Actions, and Kubernetes without any manual intervention.
| Field | Position | Allowed Values | Example |
|---|---|---|---|
| Minute | 1st | 0–59 | */5 (every 5 minutes) |
| Hour | 2nd | 0–23 | 9 (9 AM) |
| Day of Month | 3rd | 1–31 | 1 (1st of month) |
| Month | 4th | 1–12 | * (every month) |
| Day of Week | 5th | 0–7 (0 and 7 are Sunday) | 1-5 (weekdays) |
Cron expressions use five special characters to define complex schedules. Understanding these characters lets you build any recurring schedule without memorizing syntax.
| Character | Name | Meaning | Example |
|---|---|---|---|
| * | Asterisk | Every value in field | * in hour means every hour |
| , | Comma | Multiple values | 8,12,16 means 8AM, 12PM, 4PM |
| - | Hyphen | Range of values | 1-5 means Monday to Friday |
| / | Slash | Step interval | */15 means every 15 minutes |
| ? | Question mark | No specific value (AWS/Kubernetes only) | Used when day-of-month or day-of-week is unspecified |
Most cron implementations support shortcut strings that replace the five-field expression with a readable keyword.
| Shortcut | Equivalent | Description |
|---|---|---|
| @reboot | N/A | Run once at startup |
| @yearly | 0 0 1 1 * | Once a year on January 1st |
| @monthly | 0 0 1 * * | Once a month on the 1st |
| @weekly | 0 0 * * 0 | Once a week on Sunday |
| @daily | 0 0 * * * | Once a day at midnight |
| @hourly | 0 * * * * | Once an hour |
AWS EventBridge uses a six-field cron expression wrapped in cron() syntax: cron(Minutes Hours Day-of-month Month Day-of-week Year). Unlike Linux cron, EventBridge requires a question mark (?) in either the Day-of-month or Day-of-week field when the other is specified.
| Use Case | Expression |
|---|---|
| Every day at 10:15 AM UTC | cron(15 10 * * ? *) |
| Every weekday at 9 AM UTC | cron(0 9 ? * MON-FRI *) |
| First day of every month | cron(0 0 1 * ? *) |
| Every 5 minutes | cron(0/5 * * * ? *) |
GitHub Actions uses standard 5-field Unix cron syntax in the schedule trigger. All schedules run in UTC timezone. The minimum interval GitHub Actions supports is every 5 minutes.
on:
schedule:
- cron: '0 9 * * 1-5' # Every weekday at 9 AM UTC | Use Case | Expression |
|---|---|
| Every minute | * * * * * |
| Every 5 minutes | */5 * * * * |
| Every day at midnight | 0 0 * * * |
| Every weekday at 9 AM | 0 9 * * 1-5 |
| First day of month | 0 0 1 * * |
| Every Sunday at midnight | 0 0 * * 0 |
| Every 15 minutes | */15 * * * * |
| Twice daily at 8AM and 8PM | 0 8,20 * * * |
Tip: click any expression to load it into the generator above.
A cron job is a scheduled task on Unix/Linux systems that runs automatically at defined time intervals, managed by the cron daemon. It uses a 5-field cron expression to define when to run a command.
Use */5 * * * *. The */5 in the minute field means every 5th minute, running at :00, :05, :10 ... :55. Click the "Every 5 minutes" preset button above to generate it automatically.
AWS EventBridge cron uses 6 fields (adds a year field) vs 5-field Linux crontab, and requires ? in either day-of-month or day-of-week. All AWS schedules run in UTC; Linux crontab uses local system time.
Kubernetes CronJobs use standard 5-field cron syntax in the spec.schedule field. For example, schedule: "0 9 * * 1-5" runs a job at 9 AM on weekdays.
*/5 means "every 5th unit from the minimum value." In the minute field it expands to 0, 5, 10, 15 ... 55, running the job every 5 minutes. The same step syntax works in any cron field.
Use the expression 0 9 * * 1-5: 0 sets the minute to :00, 9 sets the hour to 9 AM, and 1-5 means Monday through Friday.
A cron job is a scheduled task that runs automatically on a Unix-like server at a defined time or interval, managed by the cron daemon. The name comes from the Greek word chronos (time). Cron has been a core part of Linux and Unix system administration since the 1970s and remains the standard mechanism for task scheduling today.
Each cron job is defined by a cron expression: a compact string of 5 space-separated fields representing minute, hour, day-of-month, month, and day-of-week, paired with the command to execute. These entries are stored per-user in a file called the crontab (cron table), edited with crontab -e. The cron daemon wakes up every minute, reads the crontab, and runs any job whose schedule matches the current time. Common use cases include nightly database backups, hourly cache invalidation, weekly security scans, daily report emails, and continuous monitoring scripts.
This free online cron generator works entirely in your browser — no sign-up, no install. There are three ways to build an expression:
1. Use a preset. Click any preset button at the top — "Every 5 minutes," "Daily at 9 AM," "Weekdays 9–5," and more. The expression field and all dropdowns update instantly.
2. Use the visual dropdowns. Select values for Minute, Hour, Day, Month, and Weekday from the dropdowns. The expression field updates in real time and the Plain English panel explains what the schedule means in plain language.
3. Type directly. Enter any cron expression, including step values (*/5), ranges (9-17), and comma lists (1,15), into the Expression field. The generator validates it instantly and syncs the dropdowns to match.
The table below lists the most commonly needed cron job schedules with their Linux crontab expressions. Click any expression to load it directly into the generator above.
| Expression | Schedule |
|---|---|
| * * * * * | Every minute |
| */5 * * * * | Every 5 minutes |
| 0 9 * * * | Daily at 9:00 AM |
| 0 9 * * 1-5 | Weekdays at 9:00 AM |
| 0 0 1 * * | 1st of every month, midnight |
| 0 0 * * 0 | Every Sunday at midnight |
| 30 5 1,15 * * | 5:30 AM on the 1st and 15th |
| 0 2 * * * | Nightly backup at 2:00 AM |
| 0 */6 * * * | Every 6 hours |
| 0 0 1 1 * | Once a year — Jan 1 midnight |
Tip: click any expression in the table to load it into the generator.
A standard Linux cron job syntax has five fields in this order:
| Position | Field | Allowed values |
|---|---|---|
| 1 | Minute | 0–59 |
| 2 | Hour | 0–23 |
| 3 | Day of month | 1–31 |
| 4 | Month | 1–12 or JAN–DEC |
| 5 | Day of week | 0–7 (0,7=Sun) or SUN–SAT |
The four special characters work in all fields: * means every value, , separates a list (e.g. 1,15), - defines a range (e.g. 9-17), and / sets a step interval (e.g. */5).
The AWS cron expression generator tab handles the most error-prone part of writing AWS EventBridge schedules: the format differences from standard Linux crontab.
| Feature | Linux crontab | AWS EventBridge |
|---|---|---|
| Field count | 5 fields | 6 fields (adds year) |
| Format wrapper | 0 9 * * 1-5 | cron(0 9 ? * MON-FRI *) |
| Day/weekday conflict | OR logic — both can be set | Requires ? in one field |
| Weekday numbering | 0–6 (Sunday = 0) | 1–7 (Sunday = 1) |
| Timezone | System local time | UTC only |
| Shorthand aliases | @daily, @hourly, @reboot | Not supported |
The most common mistake when porting a Linux cron expression to AWS EventBridge is forgetting the ? wildcard. This generator's AWS CloudWatch tab performs the conversion automatically and shows the complete cron() string ready to paste into an EventBridge rule.