Cron Expression Generator & Explainer
Last updated: October 2026 · Free · No sign-up required
Build a cron expression field by field and instantly see what it means in plain English — plus the next 5 dates and times it will actually run. Use the quick presets for common schedules or craft custom ones with ranges, steps, and lists. Aimed at developers, DevOps engineers, and anyone scheduling WordPress cron jobs, backups, or reports.
How to use the Cron Expression Generator
- Start from a preset (recommended for beginners) — click “Daily at midnight” or “Mondays 9:00” to see a working expression, then tweak individual fields.
- Fill the five fields left to right: minute, hour, day of month, month, day of week. An asterisk (
*) means “every possible value” for that field. - Use advanced syntax where needed:
*/15in the minute field runs every 15 minutes;1-5in day-of-week means Monday–Friday;1,15in day-of-month means the 1st and 15th. - Click “Explain & Preview” — the tool builds your expression, translates it to plain English, and lists the next 5 actual run times computed from the current moment.
- Sanity-check the next runs — before pasting an expression into crontab or a scheduler, confirm the listed dates match your intent. This catches the classic day-of-month/day-of-week confusion.
- Copy the expression into your crontab (
crontab -e), CI schedule, or application scheduler.
Cron field reference
| Field | Allowed values | Special characters |
|---|---|---|
| Minute | 0–59 | * , - / |
| Hour | 0–23 | * , - / |
| Day of month | 1–31 | * , - / |
| Month | 1–12 (or jan–dec) | * , - / |
| Day of week | 0–6, Sunday=0 (or sun–sat; 7 also = Sunday) | * , - / |
Important subtlety: when both day-of-month and day-of-week are restricted (neither is *), standard cron runs the job when either matches — it is an OR, not an AND. So 0 0 1 * 1 runs on the 1st of the month and every Monday, not only on Mondays that fall on the 1st. This trips up even experienced engineers.
Common examples
| Expression | Meaning |
|---|---|
*/15 * * * * |
Every 15 minutes |
0 * * * * |
At the top of every hour |
30 2 * * * |
Daily at 02:30 |
0 9 * * 1-5 |
Weekdays at 09:00 |
0 0 * * 0 |
Every Sunday at midnight |
0 0 1 * * |
First day of every month at midnight |
0 12 1 */3 * |
Noon on the 1st, every 3 months (quarterly) |
45 23 * * 6 |
Saturdays at 23:45 |
Formula & methodology
A cron expression is five ordered fields: minute hour day-of-month month day-of-week. Each field expands to a set of allowed values: * expands to the full range, a-b to every integer from a to b, */n (or a-b/n) to every nth value, and a,b,c to the listed values. A timestamp triggers the job when its minute is in the minute set and its hour is in the hour set and its month is in the month set and (day-of-month matches or day-of-week matches, with the OR rule above). The “next 5 runs” preview on this page applies exactly that logic, stepping forward minute by minute from the current time for up to four years until five matches are found.
Worked example
You want database backups every weekday at 02:30. The expression is 30 2 * * 1-5. Expanding the fields: minute = {30}, hour = {2}, day-of-month = {*} (all 31), month = {*} (all 12), day-of-week = {1,2,3,4,5}. In plain English: “At 02:30, Monday through Friday.” If today is Friday 2026-10-16 at 15:38 PKT, the next runs are: Saturday is skipped (day-of-week 6 not in the set), so the next match is Monday 2026-10-19 02:30, then Tuesday 2026-10-20 02:30, Wednesday 2026-10-21 02:30, Thursday 2026-10-22 02:30, and Friday 2026-10-23 02:30. Note the run happens in the server’s local timezone — if your server runs on UTC but you think in PKT (UTC+5), 02:30 server time is 07:30 your time, so always confirm which timezone the scheduler uses.
Frequently asked questions
What is the difference between day-of-month and day-of-week?
Day-of-month (field 3) picks calendar dates like the 1st or 15th; day-of-week (field 5) picks weekdays like Monday. The trap: when both are restricted, cron uses OR logic — 0 0 1 * 1 fires on the 1st of each month and every Monday. If you want “the first Monday of the month,” standard 5-field cron cannot express it directly; use 0 0 1-7 * 1, which means “a Monday that falls on days 1–7” — effectively the first Monday.
Does cron use my timezone or the server’s?
The server’s system timezone, always. This is the single most common source of “my cron ran at the wrong time” bugs. A job set for 09:00 on a UTC server fires at 14:00 Pakistan time. Check the server timezone with the date command, and use this page’s next-runs preview (computed in your browser’s timezone) only as a logic check, not as the literal fire times.
Why didn’t my cron job run?
The usual suspects, in order: the cron daemon isn’t running; the expression is wrong (verify with this tool); the command needs an absolute path or environment variables that exist in your shell but not in cron’s minimal environment; output/errors went nowhere because no MAILTO was set; or on shared hosting, cron intervals are limited (many hosts enforce a 15-minute minimum). Add logging to a file as the first debugging step.
What does */15 mean versus 0/15?
In the minute field they are equivalent: every 15 minutes starting at 0 (minutes 0, 15, 30, 45). The form a/b means “every b units starting at a,” so 10/20 in the minute field fires at minutes 10, 30, and 50. */n is just shorthand for “starting at the field’s minimum.”
Can I schedule something for the last day of the month?
Standard 5-field cron has no “L” (last-day) symbol — that exists only in Quartz and some extended schedulers. Workarounds: schedule on the 28th–31st and let the script check whether tomorrow is the 1st, or run daily and exit early unless it is month-end. For most reporting jobs, “run on the 1st for the previous month” (0 0 1 * *) is simpler and equally correct.
Is 0 or 7 Sunday in day-of-week?
Both. In Vixie/ISC cron (the standard on Linux), 0 and 7 both mean Sunday, so 0 0 * * 7 is valid and means Sunday midnight. Ranges like 1-5 reliably mean Monday–Friday. This tool accepts both 0 and 7 for Sunday.
Related tools
- Password Generator — create strong random passwords for your servers.
- All Developer Tools — formatters, encoders, and utilities for developers.
- Time Zone Meeting Planner — find overlapping work hours across zones.
Build a cron expression field by field and instantly see what it means in plain English — plus the next 5 dates and times it will actually run. Use the quick presets for common schedules or craft custom ones with ranges, steps, and lists. Aimed at developers, DevOps engineers, and anyone scheduling WordPress cron jobs, backups, or reports.