The five fields, left to right
A cron expression is five space-separated fields (some systems add a sixth). Reading them in order is the whole skill:
| Position | Field | Range |
|---|---|---|
| 1 | Minute | 0–59 |
| 2 | Hour | 0–23 |
| 3 | Day of month | 1–31 |
| 4 | Month | 1–12 |
| 5 | Day of week | 0–6 (0 = Sunday) |
The operators that appear in any field: * (every), , (list: 1,15), - (range: 1-5), and / (step: */10). This parser translates an expression into plain English and shows the next several run times so you can confirm it means what you intended.
The day-of-week numbering trap
Day-of-week numbering is not standardized across implementations. Classic Unix/Vixie cron uses 0 = Sunday … 6 = Saturday, and also accepts 7 = Sunday. But Quartz (Spring) uses 1 = Sunday … 7 = Saturday, so the same 5 means Friday in one and Thursday in another. To avoid the ambiguity entirely, use the three-letter abbreviations (MON, FRI) where supported. This tool follows the standard Unix convention.
The seconds-vs-year sixth field
When an expression has six fields, the extra one is ambiguous: Quartz/Spring put seconds first, while some systems append a year at the end. So * * * * * * is interpreted differently depending on the platform. This parser treats a leading sixth field as seconds — always confirm your target system’s convention in its docs before trusting a six-field expression.
Beware DST
A job scheduled inside a Daylight Saving transition window can be skipped (when clocks spring forward, the 2:00–2:59 hour doesn’t exist) or run twice (when clocks fall back, that hour repeats). For critical jobs, schedule them outside the 2–3 AM window, or run the scheduler in UTC (TZ=UTC) so there’s no DST shift at all. To build expressions visually rather than decode them, the Crontab Generator is the companion tool.