Visual Cron Schedule Builder
This tool builds, validates, and explains cron expressions directly in your browser. Enter a schedule in plain English or fill in the fields for minute, hour, day, month, and weekday, and the tool generates the cron expression with a human-readable description and a list of the next ten run times. No data is sent to a server. Your schedules and expressions stay on your device. The tool is free, requires no account, and works offline after the page loads.
GitHub Actions and most Linux crontabs use POSIX 5-field cron (minute hour day month weekday).
At 09:00 Monday through Friday
Next 10 run times
- Tuesday, July 7, 2026 at 09:00:00 UTC
- Wednesday, July 8, 2026 at 09:00:00 UTC
- Thursday, July 9, 2026 at 09:00:00 UTC
- Friday, July 10, 2026 at 09:00:00 UTC
- Monday, July 13, 2026 at 09:00:00 UTC
- Tuesday, July 14, 2026 at 09:00:00 UTC
- Wednesday, July 15, 2026 at 09:00:00 UTC
- Thursday, July 16, 2026 at 09:00:00 UTC
- Friday, July 17, 2026 at 09:00:00 UTC
- Monday, July 20, 2026 at 09:00:00 UTC
Schedule math runs in your browser. Cron strings are not sent to a server.
How this tool works
The cron builder constructs and validates cron expressions using the standard five-field POSIX format: minute (0-59), hour (0-23), day-of-month (1-31), month (1-12), and day-of-week (0-7, where both 0 and 7 represent Sunday). It also supports the non-standard seconds field used by Quartz scheduler, AWS EventBridge, and Kubernetes CronJobs as a sixth leading field. Expressions can use exact values, ranges (1-5), step increments (/15), comma-separated lists (1,15,30), and the wildcard (*). The tool shows the next five scheduled execution times in your local timezone and in UTC so you can verify daylight-saving-time edge cases, since a job scheduled for '0 2 * * *' fires at an unexpected time on DST transition nights. An English-language description translates the expression into plain text for documentation. Key assumption: cron implementations differ across schedulers. AWS EventBridge, for example, prohibits using * in both the day-of-month and day-of-week fields simultaneously. Always validate a generated expression against your target scheduler's specific documentation. Edge case: the special character L (last day of the month) is supported in Quartz and Spring cron but not in POSIX cron or AWS EventBridge. The tool generates L-syntax only when the selected target scheduler supports it.
Worked example
A GitHub Actions job should run at 09:00 UTC on weekdays. Choose the weekday preset, confirm the next runs list only Monday through Friday, then copy 0 9 * * 1-5 into your workflow file.
Frequently asked questions
What is the difference between `*/15` and `0,15,30,45`?
They are functionally equivalent: both run at minutes 0, 15, 30, and 45 of every hour. The step notation */15 is shorter. The list notation 0,15,30,45 is more explicit and avoids any ambiguity about which minutes are included. Use whichever your scheduler parses correctly. Understanding this concept helps you interpret output correctly and avoid common formatting or parsing mistakes downstream.
Why does my cron job run twice sometimes?
The most common cause is overlapping schedules when you run two instances of the same service (like two app servers both reading the same crontab) or when you have both a cron entry and an application-level scheduler set to the same interval. A second cause is a system clock change (daylight saving time transitions) that causes an hour to repeat. Check your scheduler's timezone setting and confirm it is consistent with your cron expression.
What does `@daily` mean in cron syntax?
@daily (also written @midnight) is a Vixie cron shorthand equivalent to 0 0 , which runs once per day at midnight. Similarly, @hourly means 0 , @weekly means 0 0 0, and @monthly means 0 0 1 *. The tool supports these shortcuts and displays the equivalent five-field expression.
Can I use cron to run a job every 30 seconds?
Standard five-field cron supports minute granularity only. To run every 30 seconds, you need a system that supports a six-field expression with a seconds field (like Quartz or AWS EventBridge), or you can run two jobs: * for the on-the-minute execution and a wrapper script that sleeps 30 seconds and runs the job again. The tool shows the seconds field when you select the Quartz or EventBridge dialect.
Why do cron expressions on different platforms look different?
Different schedulers use different conventions. AWS EventBridge uses a six-field format that includes year and uses ? for \\\\\\\"no specific value\\\\\\\" (required for either DOM or DOW, not both). Quartz Scheduler adds a seconds field at position zero. Kubernetes CronJob uses standard five-field format. The tool has a dialect selector to show you the correct format for your platform.
What does `L` mean in some cron expressions?
L is a Quartz Scheduler extension. In the DOM field, L means \\\\\\\"last day of the month.\\\\\\\" In the DOW field, 5L means \\\\\\\"the last Friday of the month.\\\\\\\" Standard POSIX cron does not support L. The tool shows L support when Quartz dialect is selected.