Cron Expression Generator
FreeBuild and parse cron expressions with a live field editor, plain-English description, and the next 5 actual run times. Supports presets, @ shortcuts, and the optional 6-field seconds variant.
Runs entirely in your browser. Next run times are calculated using your own device's clock and timezone.
In Plain English
Next 5 Run Times
Based on your device's current date, time, and timezone.
Recent Activity
Visible to everyone. Last 20 uses across all visitors, newest first.
No activity yet. Be the first.
What this tool does
Cron Expression Generator builds and explains cron schedules used by Unix/Linux cron, GitHub Actions, Kubernetes CronJobs, and similar schedulers. Edit the expression directly or fill in the individual minute/hour/day fields, and instantly see a plain-English description plus the next 5 times it would actually run.
How It Works
Each field is parsed into the exact set of values it matches: * expands to the field's full range, N-M expands to every value from N to M, N-M/S (or */S) keeps every Sth value in that range, and comma-separated items are combined together. A day is considered a match when its date satisfies the month field, and either the day-of-month field or the day-of-week field (both, if one of the two is left as "*"; either one, if both are restricted -- the standard cron OR rule).
To find the next run times, the tool starts from your current local time and jumps forward field by field -- straight to the next matching month if the current one does not qualify, straight to the next matching day if the month is fine but the day is not, and so on down to the minute (and second, if enabled). This field-by-field jump is what lets even a rare schedule like "29th of February only" resolve instantly to the next leap year instead of having to check every single day in between one at a time.
Problems it solves
- Writing a correct cron schedule for a server backup, CI/CD pipeline, or scheduled script without guessing field order.
- Reading an unfamiliar cron expression found in someone else's codebase or server configuration and understanding exactly when it fires.
- Double-checking that a schedule does what you think before deploying it, by looking at its actual next few run times.
- Working with the 6-field seconds variant used by Quartz, Spring Scheduler, and some Jenkins jobs, not just standard 5-field Unix cron.
Frequently asked questions
›What do the five fields in a cron expression mean?
From left to right: 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 mean Sunday). A classic Quartz/Spring-style schedule adds a sixth field for seconds at the very start, which this tool supports via the "Include seconds field" option.
›Why does "0 0 1,15 * 1" run on every Monday AND the 1st/15th, instead of only when both match?
This is a well-known cron quirk, not a bug: when both the day-of-month and day-of-week fields are restricted (not "*"), standard cron treats them as OR, not AND -- the job runs if either condition is true. If you only restrict one of the two fields and leave the other as "*", only the restricted one applies.
›What does */15 mean, and how is it different from 0,15,30,45?
They produce the exact same set of values here (0, 15, 30, and 45), but */N is a step: it means "every Nth value starting from the field's minimum," which is shorter to write and scales automatically if you change N. An explicit list like 0,15,30,45 is identical in meaning but has to be typed out and edited by hand.
›Are the "next run times" calculated for my timezone?
Yes -- they use your device's current clock and timezone, calculated entirely in your browser. If the cron job will actually run on a server in a different timezone (very common for cloud servers set to UTC), the real run times will be offset by the difference between your timezone and the server's.
›What are @daily, @hourly, and the other @ shortcuts?
They are common aliases supported by cron, Vixie-cron, and most modern schedulers as shorthand for a frequently used exact expression: @yearly and @annually both mean "0 0 1 1 *", @monthly means "0 0 1 * *", @weekly means "0 0 * * 0", @daily and @midnight mean "0 0 * * *", and @hourly means "0 * * * *". Type one directly into the expression field and it expands automatically.
Related Tools
Text
Bionic Reading Converter
Convert any text into bionic reading format by bolding the first portion of each word to help you read faster and focus better.
FreeText
Blake2b Hash Generator
Compute the BLAKE2b hash of text or a file in your browser, with adjustable output length and optional keyed hashing (MAC).
FreeText
Caesar Cipher Tool
Encrypt or decrypt text with a classic Caesar cipher, with an A-Z mapping table, brute-force list, letter-frequency chart, and ROT13 shortcut.
FreeText
ASCII Art Generator
Turn typed text or an uploaded image into ASCII art. Choose a font style or character ramp, preserve color, and export as plain text or PNG.
Comments (0)
Found this tool useful? Leave a comment, share a tip, or tell us how we can make it better.
No comments yet. Be the first to share your thoughts!