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.