Cron Expression Generator & Tester
Build, test, and decode cron expressions. Plain-English description, next 8 runs with timestamps. Supports aliases (@daily, @hourly, etc.).
0 9 * * 1-5At 09:00 AM, Monday through Friday
0-59
0-23
1-31
1-12
0-6
Common Presets
Next 8 runs (your local timezone)
Thu, May 21, 2026, 09:00 AM
in 3hFri, May 22, 2026, 09:00 AM
in 27hMon, May 25, 2026, 09:00 AM
in 4dTue, May 26, 2026, 09:00 AM
in 5dWed, May 27, 2026, 09:00 AM
in 6dThu, May 28, 2026, 09:00 AM
in 7dFri, May 29, 2026, 09:00 AM
in 8dMon, Jun 1, 2026, 09:00 AM
in 11dWhat is a cron expression?
A cron expression is a five-field string that schedules when a recurring task should run. It's the scheduling language used by the Unix cron daemon, GitHub Actions workflows, Kubernetes CronJobs, AWS EventBridge, Google Cloud Scheduler, Vercel Cron, and most modern task schedulers. Cron expressions are compact, readable once you learn them, and the universal vocabulary for time-based automation. This free generator lets you build cron expressions with a visual editor, paste any existing expression to see its plain-English description and next 8 run times, and use named aliases like @daily and @hourly.
Cron expression syntax
| Position | Field | Values | Special characters |
|---|---|---|---|
| 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-6 (Sun=0) or SUN-SAT | * , - / |
Special characters explained
| Character | Meaning | Example |
|---|---|---|
* | Every / any value | * * * * * = every minute |
, | List separator | 1,3,5 * * * * = at minutes 1, 3, 5 |
- | Range | 0 9-17 * * * = on the hour, 9am to 5pm |
/ | Step values | */5 * * * * = every 5 minutes |
Cron aliases (named shortcuts)
| Alias | Equivalent | Description |
|---|---|---|
@yearly / @annually | 0 0 1 1 * | Once a year, midnight Jan 1 |
@monthly | 0 0 1 * * | Once a month, midnight on the 1st |
@weekly | 0 0 * * 0 | Once a week, midnight on Sunday |
@daily / @midnight | 0 0 * * * | Once a day, at midnight |
@hourly | 0 * * * * | Once an hour, on the hour |
Frequently Asked Questions
What is a cron job?
A cron job is a scheduled task that runs automatically at specified intervals on Unix-like systems. The timing is controlled by a cron expression. The Unix cron daemon reads the user's crontab file (crontab -e) and executes each command when its expression matches the current time. Modern cloud schedulers (GitHub Actions, AWS EventBridge, Vercel Cron) reuse the same expression syntax.
What does */5 mean?
The / character means "every Nth interval." So */5 in the minute field means "every 5 minutes" (at 0, 5, 10, 15, 20, 25, ..., 55). In the hour field,*/2 means every 2 hours. You can combine: */15 9-17 * * 1-5 = every 15 minutes between 9am and 5pm on weekdays.
What's the difference between 5-field and 6-field cron?
Standard Unix cron uses 5 fields (minute, hour, day, month, weekday). Quartz Scheduler (Java) and AWS CloudWatch Events add a 6th field for seconds at the start, and a 7th for year at the end. This tool generates standard 5-field expressions compatible with crontab, GitHub Actions, Kubernetes CronJobs, Vercel Cron, and most cloud schedulers. If your platform uses 6-field cron, prepend a 0for the seconds field.
How do day-of-month and day-of-week interact?
When both fields are restricted (not *), most cron implementations use OR semantics — the job runs when either matches. For example, 0 12 13 * 5 runs at noon on the 13th of the month or any Friday. Some implementations (like Quartz) use AND semantics. When in doubt, leave one of the two as *.
What time zone does cron use?
Traditional Unix cron uses the system's local time zone. GitHub Actions cron uses UTC. AWS EventBridge defaults to UTC. Always check your scheduler's docs — running at "9am" means different wall-clock times depending on the underlying timezone. The "Next runs" preview above uses your browser's local timezone.
Can I have a job run every 30 seconds?
Not with standard 5-field cron — its smallest resolution is 1 minute. For sub-minute scheduling, use a 6-field Quartz expression (with seconds), a wrapper script that runs every minute and triggers two tasks 30s apart, or a different scheduler entirely (e.g., a job queue with delay support like BullMQ or Sidekiq).
How do I test a cron expression without waiting?
Use the "Test / Validate" tab above — paste any expression and you'll see the next 8 run times with both absolute timestamps and relative descriptions ("in 5m", "in 3h"). If the expression is invalid, you'll get a clear error explaining what's wrong.