Build from intent, not from syntax
Start with the Repeat builder if you can say the schedule in a sentence: “every 15 minutes”, “weekdays at 09:00”, “the last day of each month at 23:00”. It writes the expression for the dialect you selected. If you need something more specific, the field editor lets you toggle individual minutes, hours, days of the month, months and weekdays; each change rewrites only that field and the timetable updates immediately.
Generated expressions are validated by the same parser that checks pasted input, so the generator cannot produce something your scheduler will reject. When the dialect cannot express what you asked — Unix cron has no “last day of the month” — the generator says so and offers the standard workaround instead of a near-miss.
Choosing the dialect first matters
Quartz, Spring and AWS have extra syntax (L, W, #) and different weekday numbering. Pick the target dialect before you build, or build in one and use Convert to get the others. The copy buttons on the Convert tab give a ready-to-paste expression for every platform with an equivalence check next to each.
Try these
*/15 9-17 * * 1-5Every 15 min in business hours0 0 23 L * ?Last day of the month0 30 6 ? * MON#1First Monday at 06:30
Questions
Can I generate a schedule for “every 90 minutes”?
Not as a single cron expression: cron fields restart every hour and every day, so 90-minute spacing needs two expressions (e.g. 0 0-21/3 * * * and 30 1-22/3 * * *) or a rate-based scheduler. The builder warns when a step does not divide the field evenly.
Does the generator support seconds?
Yes, when the selected dialect has a seconds field (Quartz, Spring). Unix, Kubernetes, GitHub Actions and AWS cron have minute resolution.