search

Found

info Overview

5-field cron expressions with a plain summary like "Every week on Mon · at 00:00" beside the string, plus syntax checks for range, list, and */N steps.

📘 How to Use

  1. Pick a preset or type the 5 fields (minute, hour, day, month, weekday) directly
  2. Write `*`, a single value, an `A-B` range, an `A,B,C` list, or a `*/N` step in each field
  3. Read the generated cron string, the plain summary, and the syntax check

Cron Expression Generator

0-59
0-23
1-31
1-12
0-6

Supports: `*` (all) / `N` (single) / `A-B` (range) / `A,B,C` (list) / `*/N` (step)

Weekday: 0=Sun, 1=Mon, ..., 6=Sat

* * * * *
Copied!
—
✓ Valid
Article

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 on Mon · 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. 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 (cronie) and in POSIX, when both fields are set to numbers rather than *, the job fires if either one matches (OR logic), which surprises a lot of people. This tool's summary reads it the same way: 0 0 1 * 1 shows "Every month on day 1 or every week on Mon · at 00:00".

What if I enter a value out of range?
Type 25 in the hour field and the syntax check shows "Invalid syntax" while the summary turns to "—". The expression box still shows what you typed and the Copy button still copies it, so check the syntax line before you paste the string anywhere.

📚 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 do not read cron expressions at all; they use their own OnCalendar format, where a weekday and a date written together must both match. 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.