Build, validate, and understand cron expressions instantly. Type any expression or use the visual builder — see the next run times calculated in real time.
Runs every minute
Use the controls below to build your schedule
minute hour day-of-month month day-of-week
0 9,17 * * 1-5. The next run times will update instantly.Use the visual dropdowns to build a schedule step by step, or paste any existing cron expression directly into the input box. Both methods update each other in real time.
See the next 5 actual run times calculated precisely from your expression — including the correct day of week and month constraints. No more guessing if your job will fire when you expect.
Copy the expression and drop it into Linux crontab, GitHub Actions, Kubernetes CronJobs, AWS EventBridge, or any other cron-compatible scheduler.
A standard cron expression has five space-separated fields. Each field controls a different unit of time. The fields are evaluated left to right and all must match for the job to run.
| Field | Position | Allowed Values | Special Characters |
|---|---|---|---|
| Minute | 1st | 0–59 | * , - / |
| Hour | 2nd | 0–23 | * , - / |
| Day of Month | 3rd | 1–31 | * , - / ? L W |
| Month | 4th | 1–12 or JAN–DEC | * , - / |
| Day of Week | 5th | 0–7 or SUN–SAT (0 and 7 = Sunday) | * , - / ? L # |
* * * * *Every minute*/5 * * * *Every 5 minutes0 * * * *Every hour (on the hour)0 0 * * *Every day at midnight0 9 * * 1-5Weekdays at 9 AM0 9,18 * * *Daily at 9 AM and 6 PM0 0 * * 0Every Sunday at midnight0 0 1 * *First day of every month0 0 1,15 * *1st and 15th of each month0 0 1 1 *Every January 1st (yearly)0 */6 * * *Every 6 hours30 8 * * 1-5Weekdays at 8:30 AMThe standard 5-field cron format works across most scheduling systems. Here is how to use your generated expression on the most common platforms.
Run crontab -e and add a line:
*/5 * * * * /home/user/script.sh
Format: expression command
In .github/workflows/my-workflow.yml:
on:
schedule:
- cron: '0 9 * * 1-5'Note: GitHub Actions runs on UTC time.
In your CronJob manifest:
apiVersion: batch/v1 kind: CronJob spec: schedule: "0 0 * * *"
AWS uses a 6-field format with seconds and a required ? in one of the day fields:
cron(0 9 ? * MON-FRI *)
AWS adds a year field at the end. Use ? instead of * for day-of-month or day-of-week when the other is set.
A cron job is a time-based task scheduler built into Unix and Linux operating systems. The name comes from Chronos, the Greek god of time. The cron daemon runs in the background and checks a schedule file (called a crontab) every minute, executing any commands whose scheduled time has arrived.
Cron jobs are used for an enormous range of automation tasks: running database backups at midnight, sending email digests every morning, clearing temporary files weekly, rotating log files, syncing data between systems, triggering CI/CD pipelines, and more. Almost any task that needs to run on a recurring schedule is a good candidate for a cron job.
Modern cloud platforms have adopted cron syntax beyond traditional Linux systems. GitHub Actions, AWS EventBridge, Kubernetes CronJobs, and most CI/CD tools all use cron expressions for scheduling. The standard five-field format created in the 1970s has proven so useful that it became the universal language for task scheduling across all of computing.
A cron expression is the schedule definition — the five-field string that tells the scheduler when to run a task. This tool generates and validates those expressions so you can confidently schedule your tasks without memorizing the syntax.
Most cron implementations support special shorthand strings as alternatives to five-field expressions. These are easier to read and less error-prone for common schedules.
| Shorthand | Equivalent expression | Meaning |
|---|---|---|
| @yearly (or @annually) | 0 0 1 1 * | Run once a year, at midnight on January 1st |
| @monthly | 0 0 1 * * | Run once a month, at midnight on the 1st |
| @weekly | 0 0 * * 0 | Run once a week, at midnight on Sunday |
| @daily (or @midnight) | 0 0 * * * | Run once a day, at midnight |
| @hourly | 0 * * * * | Run once an hour, at the start of the hour |
| @reboot | (special) | Run once at system startup — supported in Linux crontab only |
Standard cron runs in the server's local timezone. This is one of the most common sources of cron job bugs — a job scheduled for 9 AM may fire at an unexpected time when the server is in a different timezone than the developer.
Best practice: Always document which timezone a cron expression is written for. If your team spans multiple timezones, standardise on UTC expressions and convert to local time in comments.
Common questions about Cron Expression Generator