0 9 * * 1-5 → At 09:00 AM, Monday through Friday

Cron Job Expression Parser

Paste any cron expression and instantly see what it means in plain English. Get the next execution times, a field-by-field breakdown, and common preset examples.

Share this tool

Cron Expression

Supports * , - / and presets like @daily.

Quick Reference

min 0-59
hour 0-23
dom 1-31
mon 1-12
dow 0-6

Settings

Timezone

Next executions shown in this timezone.

Next Executions

How many upcoming times to compute.

Presets:

Parsing...

Enter a cron expression to see its meaning in plain English and the next execution times.

What Is a Cron Expression?

A cron expression is a compact string that defines when a scheduled task should run. Originally created for the Unix cron daemon, it has become the universal standard for scheduling jobs across Linux servers, cloud platforms, CI/CD pipelines, Kubernetes clusters, and application frameworks. Understanding cron expressions is an essential skill for every system administrator, DevOps engineer, and backend developer.

The standard format consists of five space-separated fields: minute, hour, day of month, month, and day of week. Each field accepts exact values, ranges, lists, or the asterisk wildcard to mean "every." Step values let you create recurring intervals like "every 15 minutes" or "every 3 hours." Special macros such as @daily and @hourly provide shorthand for the most common schedules.

Our parser translates any valid cron expression into plain English, computes the exact upcoming execution times in your chosen timezone, and breaks down each field so you can verify that your schedule works exactly as intended. No more guessing what 0 0 * * 0 means.

The 5-Field Format Explained

Each field controls one dimension of the schedule. Together they form a precise rule that the cron engine evaluates every minute.

FieldAllowed ValuesSpecial CharactersExample
Minute0-59* , - /*/15 = every 15 minutes
Hour0-23* , - /9,17 = at 9 AM and 5 PM
Day of Month1-31* , - / ?1-15 = 1st through 15th
Month1-12 or JAN-DEC* , - /1,6,12 = Jan, Jun, Dec
Day of Week0-6 or SUN-SAT* , - / ?1-5 = Monday to Friday

Special Macros

Many cron implementations support convenient shorthand macros for common schedules. These are expanded internally to their 5-field equivalents.

MacroEquivalentMeaning
@yearly0 0 1 1 *Once per year on January 1st
@monthly0 0 1 * *Once per month on the 1st
@weekly0 0 * * 0Once per week on Sunday
@daily0 0 * * *Once per day at midnight
@hourly0 * * * *At the start of every hour

Common Cron Expression Examples

ExpressionMeaningUse Case
* * * * *Every minuteMonitoring, health checks
*/5 * * * *Every 5 minutesLog rotation, metrics collection
0 * * * *At the start of every hourHourly reports, cache warming
0 9 * * 1-5At 9 AM on weekdaysDaily standup reminders, business emails
0 0 * * 0Every Sunday at midnightWeekly backups, maintenance windows
0 0 1 * *First day of every monthMonthly invoices, cleanup jobs
0 0,12 * * *At midnight and noon dailyTwice-daily sync, dual-region tasks
0 2 * * 1Every Monday at 2 AMWeekly database optimization

Frequently Asked Questions

What does 0 * * * * mean in cron?

This expression means "at minute 0 past every hour" — in other words, once per hour at the top of the hour (1:00, 2:00, 3:00, and so on). The first field is minute (0), the second is hour (* = every hour), and the remaining three fields are wildcards meaning every day of the month, every month, and every day of the week. It is one of the most commonly used cron patterns for hourly tasks like report generation and cache clearing.

How do I run a cron job every 5 minutes?

Use the step syntax */5 in the minute field: */5 * * * *. The slash tells cron to use a step value, starting from the minimum (0) and incrementing by 5. This produces executions at 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, and 55 minutes past every hour. You can use any step value: */10 for every 10 minutes, */30 for every half hour.

What is the difference between @daily and 0 0 * * *?

There is no functional difference — @daily is simply a macro that expands to 0 0 * * *. Both run once per day at midnight (00:00). The macro form is easier to read and less error-prone, but not all cron implementations support it. Vixie cron, the cron used by most Linux distributions, supports these macros. If you are unsure whether your target system supports macros, use the 5-field form for maximum compatibility.

Can cron expressions specify timezones?

Standard cron expressions do not include timezone information — they run in the system timezone of the machine executing them. However, many modern schedulers like AWS EventBridge, Kubernetes CronJobs, and GitHub Actions allow you to set a timezone separately. Our parser lets you choose any IANA timezone so you can preview exactly when the job will run in your local time, even if the server is in a different region. This is especially useful for distributed teams and multi-region deployments.

What does the ? character mean?

The question mark is a wildcard that means "no specific value." It is only valid in the day-of-month and day-of-week fields. Using ? in one of those fields tells cron to ignore that field and evaluate the other. For example, 0 0 15 * ? means "run on the 15th of every month regardless of what day of the week it is." This avoids the ambiguity that arises when both day-of-month and day-of-week are set to non-wildcard values.

Why are there only 5 fields instead of 6 or 7?

The 5-field format (minute, hour, day of month, month, day of week) is the original Unix standard defined by the Vixie cron implementation. Some systems, notably Quartz (Java) and some cloud schedulers, add a sixth field for seconds and sometimes a seventh for year. When you see 6 or 7 fields, the scheduler is likely using an extended format. Our parser focuses on the standard 5-field Linux cron format because it is the most widely used across servers, containers, and DevOps tools.