Cron Expression Generator|Build a 5-Field Schedule With a Plain Summary
Type the 5 fields (minute, hour, day, month, weekday) or pick from 6 presets like hourly, daily, or weekly. The cron string, a plain-language summary, and a syntax check all sit in one view.
💡 About this tool
Hand-writing * * * * * from memory is where most cron mistakes start. You know */5 means "every five minutes" and 1-5 means "weekdays," yet 0 0 1 * * (midnight on the 1st) and 0 0 * * 1 (midnight every Monday) still look almost identical at a glance — and shipping the wrong one means your backup runs monthly instead of weekly.
This generator turns each field you type into a readable summary like "Every week · Monday · at 00:00" right next to the raw string, so you can confirm the schedule means what you intended before pasting it into a crontab. It accepts the five core syntax primitives — * (all), a single value, A-B (range), A,B,C (list), and */N (step) — and flags anything outside a field's range as invalid on the spot. Six presets (every minute through yearly) give you a clean starting point to tweak.
🧐 Frequently Asked Questions
What order are the fields in?
Left to right: minute (0-59), hour (0-23), day-of-month (1-31), month (1-12), day-of-week (0-6). There is no seconds field in standard crontab, so it stays at five fields.
How are weekdays numbered?
0 is Sunday, 1 is Monday, through 6 for Saturday. Many cron implementations also accept 7 for Sunday; this tool works within the 0-6 range.
How do I run something every 15 minutes?
Use the step syntax */15 in the minute field. It expands to 0, 15, 30, and 45 — every 15 minutes.
What happens if I set both day-of-month and day-of-week?
In standard Vixie cron, when both fields are non-*, the job fires if either one matches (OR logic), which surprises a lot of people. This tool validates each field's syntax and range; the actual OR-vs-AND match is decided by your scheduler at runtime.
What if I enter a value out of range?
Type 25 in the hour field and the syntax check immediately shows "Invalid syntax" instead of a cron string you might paste by mistake.
📚 The OR-logic gotcha most cron guides skip
The five-field format you are typing was frozen into roughly its current shape by Vixie cron, written by Paul Vixie in 1987. It later picked up environment variables and the @reboot shortcut, but the minute / hour / day-of-month / month / day-of-week column order has barely moved in decades.
The classic trap is what happens when day-of-month and day-of-week are both set. Read 0 9 15 * 1 and your brain says "9 AM on the 15th, but only if it's a Monday." Vixie cron actually reads it as "9 AM on the 15th or 9 AM every Monday" — an OR, not an AND. Worse, the behavior is not universal: systemd timers and several cloud schedulers treat the same expression with AND logic. So the same string can fire on different days depending on where it runs. When a schedule looks right but behaves wrong, this OR/AND split is the first thing to check against your runtime's docs.