Note: All processing happens locally in your browser.
* * * * *
0-59, */n, list
0-23, */n, list
1-31, */n, list
1-12, JAN-DEC
0-6 (SUN=0)
Every minute
Next 10 Runs
What a cron translator does
Cron expressions are compact, but the syntax is cryptic enough that even people who write them daily double-check before saving. 0 */6 * * 1-5 runs every 6 hours on weekdays, but it takes a moment of staring to confirm that. This tool translates cron expressions in both directions. Paste an expression to read it in plain English, or build one visually using the field editors and preset buttons above.
It also previews the next 10 runs in your local timezone. That is the fastest way to catch the two most common cron mistakes: a daily job that is actually running at UTC midnight instead of yours, and a "weekly on Monday" rule that quietly fires twice because day-of-month and day-of-week are both set.
How a cron expression is structured
Standard cron uses five space-separated fields, read left to right.
Each field accepts five kinds of value. A specific number like 5 means exactly 5. A wildcard * means "every value". A list such as 1,3,5 fires on each item. A range like 1-5 means 1 through 5 inclusive. A step like */15 means every 15 units starting from the lowest value of the field, so */15 in the minute field fires at :00, :15, :30, and :45.
Some cron implementations also accept shorthand like @hourly, @daily, @weekly, @monthly, and @yearly. This tool translates standard five-field Unix cron. If you are working with six-field Quartz or Spring cron, the leftmost field is seconds and the dialect differs enough that you will want a parser built specifically for those.
Common cron patterns
These cover most of what you will actually write in the wild. Each one works in standard Unix cron, Linux crontab, and scheduler services like GitHub Actions, AWS EventBridge, and Kubernetes CronJobs.
Expression
What it does
* * * * *
Every minute
*/5 * * * *
Every 5 minutes
*/15 * * * *
Every 15 minutes
0 * * * *
Every hour on the hour
0 */2 * * *
Every 2 hours
0 0 * * *
Once a day at midnight
0 9 * * *
Every day at 9 AM
0 9 * * 1-5
Every weekday at 9 AM
30 9 * * 1
Every Monday at 9:30 AM
0 0 1 * *
First day of every month, midnight
0 0 * * 0
Every Sunday at midnight
0 0 1 1 *
Once a year, January 1st at midnight
*/10 9-17 * * 1-5
Every 10 minutes during business hours, weekdays only
Cron gotchas that trip everyone up
Day-of-month and day-of-week are combined with OR, not AND
If you write 0 0 15 * 1 expecting "midnight on the 15th, but only if it is a Monday", cron will actually fire on every 15th and every Monday. The two day fields are unioned, not intersected. The workaround is to use one field or the other, not both, unless the union behavior is what you want.
Every cron service has its own default timezone
A schedule like 0 9 * * * means 9 AM in whatever timezone the scheduler uses, which is not always what you would expect. Classic Linux crontab uses the server's local timezone. GitHub Actions always runs in UTC. AWS EventBridge rules default to UTC but support overrides. Always check. If you need 9 AM in a specific zone regardless of where the server lives, most modern schedulers accept a prefix like CRON_TZ=America/New_York 0 9 * * *.
Step values do not always behave the way you expect
*/15 in the minute field is intuitive: it fires at :00, :15, :30, and :45. But */15 in the hour field only fires at hour 0 and hour 15, because hour 30 does not exist. Steps reset at the start of each parent cycle. If you want something like "every 15 hours" across a longer window, cron cannot express it directly.
There is no sub-minute precision in standard cron
If you see * * * * * * with six fields, or a leading seconds value like 0/30, you are looking at Quartz or Spring cron, not Unix cron. Standard Unix cron runs on a one-minute heartbeat at the earliest. For anything finer, you need a different scheduler or a long-running process that sleeps between executions.
Frequently asked questions
Is this cron translator free to use?
Yes. No signup, no ads, no usage limits. The tool runs entirely in your browser.
Does it support Quartz or Spring cron (6 fields with seconds)?
Not yet. This tool handles standard five-field Unix cron, which covers Linux crontab, GitHub Actions, AWS EventBridge, Kubernetes CronJobs, and most scheduler services. If you need Quartz or Spring cron parsing, you'll need a dialect-specific parser.
How does the cron translator handle timezones?
The "next runs" preview converts each scheduled time into whatever timezone you pick from the dropdown, so you can sanity-check when your job will actually fire. The cron expression itself is timezone-agnostic; the scheduler that runs it is what decides the real firing time.
Can I use the cron translator offline?
Yes. The whole tool runs in your browser with no API calls. Once the page is loaded, you can disconnect and it will keep working.
Why are the day-of-week values 0-6 and not 1-7?
Unix cron historically uses 0 for Sunday, running through 6 for Saturday. Some implementations also accept 7 as Sunday for compatibility. This tool uses 0-6 with Sunday as 0, matching the POSIX-style convention. You can also use three-letter names like SUN, MON, TUE, and so on.
How accurate is the "next 10 runs" preview?
It is calculated from the expression using the same rules a real cron daemon uses, so the times shown match what Unix cron would produce. The only caveat is timezone: the preview uses the zone you pick in the dropdown, and the real scheduler may use a different one unless you configure it explicitly.
Privacy
This tool runs entirely in your browser. No data is sent to any server.