Cron Expression Builder
Cron syntax (five fields for minute, hour, day, month, and weekday) is compact enough that even experienced developers regularly have to double-check whether 0 */2 * * * means "every 2 hours" or something else. This builds expressions visually, decodes existing ones into plain English, and shows the actual next several run times so you can confirm the schedule does what you think before deploying it.
Quick presets
0=Sun, 1=Mon, 2=Tue, 3=Wed, 4=Thu, 5=Fri, 6=Sat
0 9 * * 1-5At 09:00 AM, Monday through Friday
Next 5 runs
Cron syntax reference
| Symbol | Meaning |
|---|---|
| * | Any value |
| 5 | Exact value (e.g., minute 5) |
| 1-5 | Range (e.g., Monday through Friday) |
| */15 | Every 15th (e.g., every 15 minutes) |
| 1,15 | List (e.g., 1st and 15th) |
| 1-5/2 | Range with step (1, 3, 5) |
How to use the Cron Expression Builder
- Use the visual editor to select values for each cron field: minute, hour, day of month, month, and day of week.
- Alternatively, paste an existing cron expression to decode it.
- Read the plain-English description to confirm the schedule matches your intent.
- Review the list of upcoming run times to verify the timing is correct.
- Copy the cron expression for use in your server, CI/CD pipeline, or scheduling system.
The classic day-of-month vs. day-of-week trap
Cron's day-of-month and day-of-week fields are combined with OR logic, not AND, when both are restricted. A schedule like 0 0 15 * 1 doesn't mean "the 15th, if it's a Monday," it means "the 15th of every month, OR every Monday," which surprises almost everyone the first time they hit it. If you actually want "the 15th, only if it's a Monday," cron alone can't express that. You'd need to check the day-of-week inside the job itself and exit early if it's wrong.
Frequently asked questions
What does */2 mean in a cron field?
A step value. */2 in the hour field means "every 2 hours" (0, 2, 4, 6...); the same syntax works in any field to mean "every Nth unit."
Does cron use 0- or 1-indexed days/months?
Months are 1–12; day-of-week is typically 0–6 with 0 as Sunday (though some systems also accept 7 for Sunday). This inconsistency is a frequent source of off-by-one scheduling bugs.
How do I combine day-of-month and day-of-week correctly?
You generally can't directly with standard cron syntax when you want a strict "this date AND this weekday" rule. Set one field to * and handle the additional condition in your job's own logic instead.
Related Tools
Regex Tester
Test regular expressions with live highlighting, match details, and a quick reference cheat sheet.
JSON Formatter
Prettify, minify, and validate JSON with syntax highlighting.
Time Zone Converter
Convert times between any world time zones instantly — find the best meeting time across cities.
UUID Generator
Generate UUID v4 values instantly — single or bulk with copy and download.