Cron expression generator
Write a cron schedule and see exactly when it runs.
Next 10 runs
Cron syntax cheat sheet
| Field | Allowed values |
|---|---|
| Minute | 0-59 |
| Hour | 0-23 |
| Day of month | 1-31 |
| Month | 1-12 or JAN-DEC |
| Day of week | 0-6 or SUN-SAT (7 is Sunday too) |
| Symbol | Meaning |
|---|---|
* | Every value |
, | A list of values, like 1,15 |
- | A range, like 1-5 |
/ | A step, like */15 for every 15th value |
Runs in your browser. Nothing you type is sent anywhere.
- Plain-English explanation
- Next 10 run times
- Presets for common jobs
How to write a cron expression
- Pick a preset, or type an expression with five fields.
- Fine-tune single fields in the boxes below it.
- Check the explanation and the next run times, then copy the expression.
Common cron schedules
| Schedule | Expression | Meaning |
|---|---|---|
| Every minute | * * * * * | Runs 60 times an hour |
| Every 5 minutes | */5 * * * * | At :00, :05, :10 and so on |
| Every night at 2am | 0 2 * * * | Once every 24 hours |
| Weekdays at 9am | 0 9 * * 1-5 | Monday through Friday only |
| First of the month | 0 0 1 * * | Midnight on day 1 |
| Every 6 hours | 0 */6 * * * | Midnight, 6am, noon, 6pm |
How cron differs between systems
The 5-field format below is the one this generator builds, and it is also what most job schedulers use directly.
| System | Fields | Note |
|---|---|---|
| Standard cron / crontab | 5 | Minute, hour, day of month, month, day of week |
| Kubernetes CronJob | 5 | Same format, quoted as a string in YAML |
| GitHub Actions | 5 | Set under on.schedule.cron, always runs in UTC |
| Quartz (Java) | 6 or 7 | Adds a seconds field before the minute |
| AWS EventBridge | 6 | Adds a year field and uses ? for day of month or day of week |
Copy the expression from here into a Quartz or AWS schedule and add the extra field it expects; the minute, hour, day, month and day of week positions stay the same.
Tips for writing cron schedules
- Prefer a step over a long list: */15 * * * * is shorter and clearer than 0,15,30,45 * * * *.
- Setting both day of month and day of week restricts less than it looks like it should: standard cron runs the job when either one matches, not only when both do.
- Test a schedule here before pasting it into a server. A single wrong field can turn a daily job into one that fires every minute.
- Servers usually run cron in UTC. The next-run list above is shown in your own time zone, so convert before assuming a job ran on time.
Cron expression generator FAQ
What do the five fields in a cron expression mean?
From left to right: minute (0-59), hour (0-23), day of month (1-31), month (1-12) and day of week (0-6, where 0 is Sunday). An asterisk means every value, so * * * * * runs every minute.
How do I run a cron job every 5 minutes?
Use */5 * * * *. The /5 means every fifth value, so it runs at minutes 0, 5, 10 and so on, every hour of every day.
What happens when I set both day of month and day of week?
Standard cron runs the job when either one matches. 0 0 1 * 1 runs at midnight on the 1st of every month and also on every Monday.
Which time zone does cron use?
The time zone of the server that runs it, which is often UTC. The run times on this page are in your own time zone, so convert them if your server is set differently.
Does this format work for Kubernetes, GitHub Actions, Quartz or AWS?
Kubernetes CronJobs and GitHub Actions schedules use this same 5-field format. Quartz adds a seconds field, and AWS EventBridge adds a year field and uses ? in one of the day fields, so those need adjusting.
How do I run a job only on weekdays or only on weekends?
Set day of week to 1-5 for Monday through Friday, or 0,6 for Saturday and Sunday. Leave day of month and month as * so they do not restrict anything further.
What do shortcuts like @daily and @hourly mean?
They are macros that some cron implementations accept instead of five fields. @hourly is 0 * * * *, @daily is 0 0 * * *, @weekly is 0 0 * * 0, @monthly is 0 0 1 * * and @yearly is 0 0 1 1 *. Type any of them into the expression box here and it expands automatically.