Cron Expression Generator: Plain English to Crontab in Seconds
Describe your schedule in plain English and get the cron expression instantly. Also decodes any existing cron expression you paste. Free, no account required.
Managing Dozens of Scheduled Jobs?
Upgrade for longer context windows, so you can paste an entire crontab and review it in one pass.
Plain English to Cron Expressions - Instantly
Cron syntax is counterintuitive. The difference between */5 and 5 in the minute field has caused more than a few production incidents. Writing a cron expression from memory means mentally mapping five positional fields where a misplaced asterisk changes a schedule completely. The AI handles all of that - describe when you want your job to run and get the correct expression in seconds.
For a complete crontab entry including the command to run, pair this with our Bash Command Generator. If your scheduled script throws errors, use our Error Explainer to diagnose the output.
Cron Field Reference
Common Cron Schedule Examples
The schedules developers reach for most often, generated instantly from plain English.
0 0 * * * - Runs once per day at 00:00 server time.
0 9 * * 1 - Runs at 9:00 every Monday. Day 1 = Monday in standard cron.
*/15 * * * * - Runs at :00, :15, :30, :45 every hour around the clock.
0 0 1 * * - Runs at midnight on the 1st of every month.
30 8 * * 1-5 - Runs Monday through Friday at 08:30.
0 */6 * * * - Runs at 00:00, 06:00, 12:00, and 18:00 every day.
Cron Syntax Cheat Sheet
A standard cron expression has five fields, read left to right: minute, hour, day of month, month, day of week. Each field accepts a value, a range (1-5), a list (1,3,5), or a step (*/15), and you can combine them, so 8-18/2 in the hour field means every second hour from 8am to 6pm.
| Field | Allowed values | Special syntax | Example |
|---|---|---|---|
| Minute | 0-59 | * , - / |
*/10 = every 10 minutes |
| Hour | 0-23 | * , - / |
8-18 = from 8am through 6pm |
| Day of month | 1-31 | * , - / |
1,15 = the 1st and the 15th |
| Month | 1-12 or JAN-DEC | * , - / |
6-8 = June through August |
| Day of week | 0-6 (0 = Sunday) | * , - / |
1-5 = Monday through Friday |
Example Schedules at a Glance
| Expression | When it runs |
|---|---|
0 3 * * 1 | Every Monday at 3:00am |
*/15 * * * * | Every 15 minutes, around the clock |
0 9-17 * * 1-5 | On the hour during business hours, weekdays only |
30 2 1 * * | 2:30am on the first day of each month |
0 0 * * 0 | Midnight every Sunday |
0 */4 * * * | Every 4 hours: 00:00, 04:00, 08:00, and so on |
0 6 1 1 * | 6:00am every January 1st |
15 14 * * 2,4 | 2:15pm on Tuesdays and Thursdays |
@daily | Shorthand for 0 0 * * *, once at midnight |
@reboot | Once, each time the machine starts up |
Common Cron Mistakes
Three mistakes account for most "my cron job never fired" and "my cron job fired twice" tickets.
If both the day-of-month and day-of-week fields are restricted, classic cron runs the job when either matches, not both. 0 9 13 * 5 fires on the 13th of every month AND every Friday - not only on Friday the 13th. Most people expect AND logic and get surprise extra runs.
Cron runs with a minimal environment, usually just /usr/bin:/bin. A script that works in your shell can fail under cron because node, python3, or aws isn't on the PATH. Use absolute paths to binaries or set PATH= at the top of the crontab.
Cron evaluates times in the server's timezone, which on cloud hosts is usually UTC. A "9am" job lands at 4am for a New York user unless you set TZ=America/New_York in the crontab (where supported) or convert the hour to UTC yourself. Daylight saving shifts can also skip or double-run jobs scheduled between 1am and 3am.