Skip to main content
ilovecalcs logoilovecalcs.

Dev · Live

Cron Expression Descriptor, schedules in plain English.

Paste any cron expression to instantly translate it into human-readable English and view the next 10 scheduled execution times in both local and UTC time.

How it worksReal-time

Cron Expression

09**1-5

Field Breakdown

Minute

0

0

0–59

Hour

9

9 AM

0–23

Day/Month

*

Any

1–31

Month

*

Any

1–12

Day/Week

1-5

Mon–Fri

0–6

Common Presets

Special Characters

*Every value
,Value list (1,3,5)
-Range (1-5)
/Step (*/5)
LLast (day of month)
?No specific value

Human-Readable Translation

Fix the expression to see the translation.

Field guide

How cron expressions work.

Cron is a time-based job scheduler built into Unix-like operating systems. A cron expression is a compact string that specifies when a task should run. The name comes from the Greek word for time,chronos. Cron has been part of Unix since 1975 and is still the dominant mechanism for scheduling recurring tasks on servers, in containers, and in cloud functions.

A standard cron expression has exactly 5 fields separated by spaces. Each field controls one dimension of the schedule:

┌────────── Minute (0–59)
│ ┌──────── Hour (0–23)
│ │ ┌────── Day of month (1–31)
│ │ │ ┌──── Month (1–12)
│ │ │ │ ┌── Day of week (0–6, Sun=0)
│ │ │ │ │
* * * * *

Some implementations (Quartz Scheduler, AWS EventBridge, GitHub Actions) add a sixth field for seconds, prepended before the minute field. This tool supports both 5-field and 6-field formats.

Special characters

Each field can contain a literal value, a wildcard, or a combination of the following operators:

  • * (asterisk) — matches every possible value in the field. * * * * * runs every minute of every day.
  • , (comma) — separates multiple values in a list. 0 8,12,18 * * * runs at 8 AM, noon, and 6 PM.
  • - (hyphen) — defines an inclusive range. 0 9-17 * * * runs every hour from 9 AM through 5 PM.
  • / (slash) — defines a step.*/15 * * * * runs every 15 minutes. 0-30/5 * * * * runs every 5 minutes in the first half of each hour.
  • L — means "last". In the day-of- month field, L means the last day of the month.0 0 L * * runs at midnight on the last day of each month.
  • ? — means "no specific value", used in some implementations to avoid conflicts between the day- of-month and day-of-week fields.

Common patterns and their meaning

* * * * * Every minute
0 * * * * At the start of every hour
0 0 * * * Daily at midnight
0 0 * * 0 Every Sunday at midnight
0 9 * * 1-5 Weekdays at 9 AM
0 0 1 * * First day of every month
*/5 * * * * Every 5 minutes
0 8,20 * * * Twice daily at 8 AM and 8 PM
0 0 1,15 * * 1st and 15th of every month

Month and day-of-week names

Many cron implementations accept abbreviated month names (JANDEC) and day-of-week names (SUNSAT) as alternatives to numbers. Day numbering varies: most systems use Sunday=0 through Saturday=6, but some use Monday=1 through Sunday=7. Always check your target system's documentation.

Timezone considerations

Cron daemons run in the timezone of the server or container. A job scheduled with 0 9 * * 1-5 runs at 9 AM in the server's local time, which may differ from your time. Cloud platforms like AWS EventBridge use UTC by default. When collaborating across timezones, always document the timezone assumption alongside the expression.

This tool calculates execution times relative to your browser's local timezone and shows the equivalent UTC time alongside each scheduled date. Both views update as you type.

6-field expressions (with seconds)

When a sixth field is added, it is placed at the beginning and represents seconds (0–59). The format becomes:

second minute hour day month weekday

0 */5 * * * * Every 5 minutes, on the minute
0 0 12 * * ? At noon (Quartz-style, ? for DOW)

AWS Lambda, Kubernetes CronJobs, and Spring's@Scheduled annotation all use 6-field format. GitHub Actions uses a variant where Sunday can be specified as either 0 or 7.

Testing and validating cron expressions

Before deploying a cron job, always validate the expression by reviewing at least the next 5 to 10 execution times. A common mistake is setting */1 (same as *, runs every minute) when the intention was to run once per hour (0 * * * *). Another frequent error is confusing day-of-month and day-of-week, leading to jobs that never run because both fields restrict the schedule simultaneously.