Build mode versus Parse mode#
Build mode exists because the five-field syntax is genuinely unintuitive the first several times — remembering that minute comes before hour, or that */4 in the hour field does not mean "every 4th hour starting from now," is friction that has nothing to do with what you actually want, which is usually "run this at 3am" or "run this every 15 minutes."
Under the hood, Build mode just writes a normal five-field expression and hands it to the exact same parser Parse mode uses — the description, the field breakdown and the next-run times you see are identical either way. Build it visually, then switch to Parse mode any time to see the raw expression it produced.
The five fields, in order#
A crontab line is five space-separated fields: minute hour day-of-month month day-of-week. Minutes run 0–59, hours 0–23, day of month 1–31, month 1–12, and day of week 0–6 where 0 is Sunday. Most implementations also accept 7 for Sunday, and three-letter names like MON or JAN.
Each field accepts four things: a single value (5), a list (1,15,30), a range (1-5) and a step (*/15, or 0-30/5 for every five minutes in the first half hour). An asterisk means "every value".
The day-of-month and day-of-week trap#
This is the single most misunderstood part of cron. When both the day-of-month and the day-of-week fields are restricted, cron combines them with OR, not AND. So 0 0 13 * 5 does not mean "Friday the 13th" — it means "midnight on the 13th of every month, and also every Friday".
Getting a true "Friday the 13th" schedule requires a day-of-month check inside the job itself. When exactly one of the two fields is restricted, the behaviour is the intuitive one, which is why the bug hides for so long.
Timezones, and why the run times here may not match your server#
The next run times shown on this page are computed in your browser's timezone. Your server almost certainly runs cron in UTC, or in whatever the system timezone happens to be. A daily job at 0 2 * * * fires at 02:00 server time, which may be a completely different hour where you are.
Daylight saving time makes it worse. When the clock jumps forward, jobs scheduled inside the skipped hour may not run at all that day; when it falls back, they can run twice. If a job must not be skipped or duplicated, schedule it in UTC or make it idempotent.
Standard cron, Quartz and the seconds field#
Classic Unix crontab has five fields and a one-minute resolution — you cannot schedule anything more frequent than once per minute. Quartz, Spring's @Scheduled, and several job libraries add a seconds field at the front, making six.
If you paste a six-field expression here, the tool tells you rather than guessing, because the same string means different schedules in the two dialects. Some Quartz expressions also use ?, L and #, which standard crontab does not understand.