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.
* * * * *
Runs every minute.
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.
| Field | Position | Allowed values | Special characters |
|---|---|---|---|
| Minute | 1st | 0 – 59 | * , - / |
| Hour | 2nd | 0 – 23 | * , - / |
| Day of month | 3rd | 1 – 31 | * , - / |
| Month | 4th | 1 – 12 (or JAN–DEC) | * , - / |
| Day of week | 5th | 0 – 7 (0 and 7 = Sunday; or SUN–SAT) | * , - / |
| 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-5 | Every weekday (Mon–Fri) at 9:00 AM |
0 0 * * 0 | Every 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,5 | At 08:30 on Monday, Wednesday, and Friday |
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.
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.
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.
/ 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.
->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.