Cron Expression Generator
Write a cron schedule, read it in plain English and see when it runs next.
Runs entirely in your browser. Nothing you paste is sent to our server, stored or logged.
@daily work too.
Start from a common schedule
In plain English
Field by field
| Field | Value | Means |
|---|
Next runs
Crontab line
Paste it into crontab -e. The schedule runs on the server's clock.
Type a cron expression or start from a common schedule. The tool explains it in plain English, checks every field and lists the next times it will run, in your own time zone and in UTC. It follows standard Unix cron, the five field format used by crontab, Linux servers, Kubernetes CronJobs and GitHub Actions.
How to read a cron expression
A cron expression is five fields separated by spaces: minute, hour, day of the month, month and day of the week. An asterisk means every value, so * * * * * runs every minute. A number pins a field, so 30 9 * * * runs at 9:30 every morning. Commas list values, a dash between two numbers gives a range, and a slash sets a step, which is how */15 in the minute field becomes every fifteen minutes.
The day of month and day of week trap
When both day fields are restricted, cron runs the job if either one matches, not both. 0 9 1 * 1 fires on the first of every month and also on every Monday, which surprises almost everyone the first time. Standard cron cannot say "the first Monday of the month" directly. The usual fix is to run on days 1 to 7 and let the script check the weekday before doing anything.
Time zones and daylight saving
Cron runs on the clock of the machine it lives on, and servers and CI runners are usually set to UTC. A job set for 9:00 fires at 9:00 server time, wherever you happen to be. Jobs scheduled between 1:00 and 3:00 in a zone with daylight saving can run twice or not at all when the clocks change, so keep important daily jobs outside that window or run the server on UTC.
How to use the cron generator
- Enter or pick a scheduleType a five field expression, or choose one of the common schedules to start from.
- Read the explanationThe plain English summary and the field breakdown show what every part means.
- Check the next runsThe next runs are listed in your local time zone, with a switch to show UTC.
- Copy itCopy the expression on its own, or as a crontab line with your command on the end.
Common cron schedules, explained
Each page covers one schedule: what it means, when it runs, variations and the mistakes people make with it.
-
Cron expression for every minute
* * * * * -
Cron expression for every 5 minutes
*/5 * * * * -
Cron expression for every 10 minutes
*/10 * * * * -
Cron expression for every 15 minutes
*/15 * * * * -
Cron expression for every 30 minutes
*/30 * * * * -
Cron expression for every hour
0 * * * * -
Cron expression for every 2 hours
0 */2 * * * -
Cron expression for every day at midnight
0 0 * * * -
Cron expression for every weekday
0 9 * * 1-5 -
Cron expression for every week
0 0 * * 0 -
Cron expression for every month
0 0 1 * *
Common questions
What does */5 mean in cron?
It means every fifth value, counted from the start of the field. In the minute field it runs at minutes 0, 5, 10 and so on up to 55, so the job lines up with the clock rather than with the moment you saved the crontab.
Does cron support seconds?
Standard cron does not; the smallest unit is one minute. Schedulers such as Quartz and Spring add a seconds field at the front, which is why you sometimes see six or seven fields. This tool follows the five field standard used by crontab, Kubernetes and GitHub Actions.
Why did my cron job run on the wrong day?
Usually because both day fields were set. When the day of the month and the day of the week are both restricted, cron runs when either one matches. The other common cause is time zones: the server runs on UTC while you read the schedule in local time.
How do I run a cron job every 30 seconds?
Cron cannot go below one minute. The common workaround is two entries for the same command, one plain and one that sleeps for 30 seconds first. For anything that needs to run that often, a small service with its own loop or a systemd timer is usually the better tool.
What do @daily and @hourly mean?
They are named shortcuts. @hourly is 0 * * * *, @daily and @midnight are 0 0 * * *, @weekly is 0 0 * * 0, @monthly is 0 0 1 * * and @yearly or @annually is 0 0 1 1 *. @reboot runs once when the cron service starts, so it has no next run time.
Is my schedule sent anywhere?
No. The expression is parsed and the run times are calculated by JavaScript in your browser. Nothing you type is sent to our server or stored.
Guides
-
Cron time zones and daylight saving: why your job runs at the wrong hour
Cron has no idea where you are. It follows the server's clock, and twice a year that clock does something strange. Here is how to control both.
-
Cron job not running? 10 common causes and how to fix them
Your crontab looks right and the job still never runs. These are the ten causes behind almost every silent cron failure, in the order worth checking them.
More developer tools
Like this one, every developer tool here runs in your browser and never sends what you paste to a server.
JSON Formatter and Validator
Pretty print, minify and validate JSON, with the exact line of any error and how to fix it.
Unix Timestamp Converter
Turn Unix timestamps into readable dates and back, in seconds or milliseconds.
Chmod Calculator
Convert Linux file permissions between numbers and letters, and see who can do what.