Cron Job Generator
Build cron schedule expressions visually or translate any expression into plain English. See the next 5 run times instantly, in your local timezone.
- 1.--
- 2.--
- 3.--
- 4.--
- 5.--
The Complete Guide to Cron Job Scheduling
Whether you are a developer automating server tasks, a data engineer scheduling pipeline runs, or a DevOps engineer managing cloud jobs, understanding cron syntax is a foundational skill. This guide walks through how cron expressions work, how to read and write them confidently, and answers the questions developers search for most often.
How to Use This Tool
There are two ways to interact with the generator above. If you already have a cron expression and want to understand it, paste it directly into the expression input (Section A). The tool immediately translates it into a plain-English sentence and shows the next 5 exact run times in your browser's local timezone.
If you want to build an expression from scratch, use the dropdowns in Section B. Each dropdown covers one field: minute, hour, day of month, month, and day of week. Changing any dropdown updates the expression string at the top in real time. You can also use the quick preset buttons to jump to the most common schedules instantly.
The 5 Fields of a Cron Expression
Every standard cron expression is a string of five values separated by spaces. Reading left to right:
| Position | Field | Valid Range | Special Characters |
|---|---|---|---|
| 1st | Minute | 0 to 59 | * , - / |
| 2nd | Hour | 0 to 23 | * , - / |
| 3rd | Day of Month | 1 to 31 | * , - / |
| 4th | Month | 1 to 12 | * , - / |
| 5th | Day of Week | 0 to 7 (0 and 7 = Sunday) | * , - / |
Special Syntax: Wildcards, Ranges, Lists, and Steps
The real power of cron comes from four special characters that let you express complex schedules in just a few characters. A wildcard (*) means "match every value." A range (a-b) matches every integer from a to b inclusive. A list (a,b,c) matches each of those specific values. A step (/n) skips through values at a fixed interval.
These can be combined freely. 1,15 in the day-of-month field runs on the 1st and 15th. 1-5 in the day-of-week field runs Monday through Friday. */10 in the minute field runs at minutes 0, 10, 20, 30, 40, and 50. 10-50/10 in the minute field runs at minutes 10, 20, 30, 40, and 50 only (same result, but starting at 10 instead of 0).
Common Cron Expression Examples
| Expression | Plain English |
|---|---|
| * * * * * | Every minute |
| 0 * * * * | At the top of every hour |
| 0 0 * * * | Every day at midnight |
| */5 * * * * | Every 5 minutes |
| 0 9 * * 1 | Every Monday at 9:00 AM |
| 30 14 1 * * | At 2:30 PM on the 1st of every month |
| 0 0 * * 0 | Every Sunday at midnight |
| 0 0 1 1 * | Once a year at midnight on January 1st |
| 0 8-18 * * 1-5 | Every hour between 8 AM and 6 PM, Monday through Friday |
| */15 * * * * | Every 15 minutes |
Cron and Timezones
One important thing to understand: cron itself runs in the system timezone of the server it lives on, not your local timezone. If your server is set to UTC and you write 0 9 * * *, the job fires at 9:00 AM UTC, which may be a completely different time in your local timezone. Always check your server's timezone with the command `timedatectl` (Linux) or `date` before scheduling time-sensitive jobs. Some modern schedulers, like Google Cloud Scheduler and Kubernetes CronJobs, let you specify a timezone explicitly in the configuration.
The next-5-executions panel in this tool uses your browser's local timezone (shown next to each time), so the displayed times will match what you see on your own clock, not necessarily what the server will see.