Build cron schedules visually in standard 5-field or Quartz 6-field syntax, with plain-English descriptions and next run times.
0 9 * * 1-5This tool runs 100% in your browser. All computation happens locally on your device — your input is never uploaded to any server. Results are for reference only.
A cron expression is just five time fields separated by spaces, one per time dimension: minute, hour, day-of-month, month, day-of-week. Combined, they describe one repeating instant. Quartz prepends a seconds field, making it six.
Each field is a filter the scheduler checks. '*' matches every value; '1-5', '*/15' and '5,17' are ranges, steps and lists. A job only fires when every field drops out true.
Progressive example, from trivial to precise.
To generate a cron expression: select your schedule (every 5 minutes, daily at 9am, etc.) — the tool outputs the cron syntax and a plain-English description of what it does.
FreeToolHub Cron Generator is a free browser-based tool that creates cron expressions with human-readable descriptions, no signup.
Build cron schedules visually with dialect switching (standard 5-field and Quartz 6-field), human-readable descriptions, and next 5 run times. Free, no signup, 100% in-browser.
This tool builds cron expressions visually instead of from memory, and it speaks two dialects: the standard five-field Unix syntax used by crontab, and the six-field Quartz syntax used by Spring, Jenkins, Salesforce, and most Java schedulers. Pick your schedule from twelve common presets - daily at midnight, every hour, weekdays at 9, weekly, monthly, every N days - or assemble any schedule field by field, and it emits the expression with a human-readable plain-English description of what it will do. It also computes the next five run times so you can verify the expression actually fires when you think, the step that prevents the classic silent cron mistake.
Developers configuring scheduled jobs in crontab, CI/CD pipelines, Kubernetes CronJobs, or cloud schedulers without keeping cron syntax in their head. Java and Spring developers who need the Quartz seconds field and the ? placeholder, and who constantly mix up Quartz day-of-week numbering (1 = Sunday) with standard cron numbering (0 = Sunday). Ops engineers writing backup, cleanup, and report schedules who need to confirm next-run behavior before committing. Anyone migrating an expression between systems and needing to check whether 0 9 * * 1 means the same thing in both.
(1) Choose your dialect with the toggle - Standard 5-field or Quartz 6-field; the field row updates to show seconds and the correct weekday numbering. (2) Start from a preset closest to your intent, or fine-tune fields individually - each focused field exposes the quick values that are legal there, including L, W, and # when the dialect supports them. (3) Read the human-readable description, which explains special characters in plain English, and check the next five run times rendered from your local clock. (4) Copy the expression into crontab, a Spring @Scheduled annotation, a Jenkins trigger, or a scheduler config.
A standard cron expression is five space-separated fields: minute (0-59), hour (0-23), day of month (1-31), month (1-12), and day of week (0-6, Sunday = 0). Quartz expands this to six required fields by adding seconds at the front (and an optional year at the end), changes day-of-week to 1-7 with Sunday = 1, and adds the special characters ? (no specific value, day fields only), L (last day of month or last weekday), W (nearest weekday), and # (nth weekday of the month). The expression 0 9 * * 1-5 fires at 9:00 AM Monday through Friday in standard cron; the Quartz equivalent is 0 0 9 * * ? or, for 9:30 sharp, 0 30 9 * * ?. The trap that causes most production incidents: when both day fields are restricted in standard cron they are OR-ed - 0 0 1 * 1 fires on the first of the month AND every Monday. Quartz avoids this by requiring ? in one of the two day fields. Cron uses the server local timezone unless TZ is set, so a UTC server running 0 9 * * * fires at 4 AM in New York during standard time. Before committing any schedule, paste the expression into the next-runs preview here - thirty seconds of verification beats a month of silently missed backups.
A standard cron expression has 5 fields: minute (0-59), hour (0-23), day-of-month (1-31), month (1-12), and day-of-week (0-7, where 0 and 7 are Sunday). For example, 0 9 * * 1-5 runs at 9:00 AM Monday through Friday. This tool supports the standard 5-field syntax and the Quartz 6-field syntax, then shows the next 5 run times.
Quartz adds a leading seconds field (making 6 required fields) and an optional trailing year field, uses 1-7 or SUN-SAT for day-of-week (1 = Sunday, unlike standard cron where 0 = Sunday), and supports special characters ? L W and # in day fields. 0 0 9 * * ? means 9:00:00 AM every day in Quartz, while the 5-field standard equivalent is 0 9 * * *. Switch the dialect toggle above to convert between them.
L means last - L in day-of-month is the last day of the month, and 6L in day-of-week is the last Friday of the month. W stands for weekday - 15W fires on the weekday nearest the 15th, staying inside the same month. # picks the nth weekday - 3#2 means the second Monday of the month. All three are Quartz-only and are described in plain English by this tool when you use them.
The tool displays next 5 run times in your local timezone. Cron jobs on servers typically run in UTC - if your server is in UTC and you need a 9 AM EST job, the cron expression would be 0 14 * * 1-5 (14:00 UTC = 9:00 AM EST). The tool shows both the human-readable description and the exact cron string.
This tool is also known by these tasks — each link opens the same tool with a focused guide:
What do you call a crab that plays baseball?
No paywalls, no signups, no data sold. Built by a solo developer who believes useful tools should be accessible to everyone.
☕Support me on Ko-fi— keep tools free100% of proceeds go towards hosting & building more free tools.