- What are the 5 fields, in order?
- Minute (0–59), Hour (0–23), Day-of-month (1–31), Month (1–12), Day-of-week (0–6 where 0 and 7 both mean Sunday). They're separated by spaces. So '0 9 * * 1-5' reads: minute 0, hour 9, any day-of-month, any month, days-of-week Monday through Friday — i.e. weekdays at 9 AM.
- What does the asterisk (*) mean?
- It means 'every valid value for this field.' '* * * * *' is 'every minute of every hour of every day' — the most aggressive schedule a cron line can express. Most fields you don't care about should stay '*'.
- What's the */N syntax?
- Step. '*/15' in the minute field means 'every 15 minutes' — at minute 0, 15, 30, 45. You can also step within a range: '0-30/10' in the minute field means 'at minute 0, 10, 20, 30.' Step values must be greater than 0.
- Day-of-month and day-of-week both restricted — what happens?
- Standard cron treats them as OR, not AND. '0 9 1 * 0' fires at 9 AM on the 1st of every month OR every Sunday — whichever applies on a given day. This trips a lot of people up. If you want strict AND ('the 1st of the month, but only if it's a Sunday'), most schedulers don't support it directly — you'd handle it in the job itself.
- Can I use names instead of numbers for month and day-of-week?
- Yes. 'jan' through 'dec' work for months; 'sun' through 'sat' work for days-of-week. So 'mon-fri' and '1-5' are identical in the day-of-week field. Case doesn't matter. Some non-standard schedulers add aliases like '@hourly' or '@daily' — those aren't part of the 5-field format and this tool doesn't accept them.
- What's the smallest interval cron supports?
- One minute. Cron doesn't do seconds. If you need sub-minute granularity, you're past cron territory and want something like a job queue, a setInterval loop in a long-running process, or a serverless function triggered by a timer at higher resolution.
- Why does my schedule fire at a weird time?
- Timezone. Linux crond uses the system local timezone; GitHub Actions and Vercel Cron use UTC; Kubernetes CronJob defaults to UTC. The preview here is always UTC. Convert mentally if your target scheduler runs in a different zone, or — better — write your cron line in UTC and document it.
- Does this support 6-field cron with seconds (Quartz)?
- No. This generator handles the standard Unix 5-field format. Quartz-style 6-field cron with leading seconds is a different (and incompatible) syntax used by some Java schedulers. Don't paste a Quartz expression in — it'll fail validation.
- Is my expression saved anywhere?
- No. Parsing, description, and next-run calculation all run in your browser. Nothing is uploaded or logged. You can copy the cron string and paste it into wherever you actually need it.
- Day-of-month 30 in February — what happens?
- Cron is forgiving — it just won't fire that month. '0 0 30 * *' fires the 30th of January, March, April, May, etc., but skips February entirely. The next-run preview reflects this. If you wrote '0 0 30 2 *' (Feb 30 only), the preview will be empty because no such date exists.