Cron Parser β€” Decode Cron Expressions to Human-Readable

Paste any cron expression to instantly decode it into plain English. See the next 10 scheduled run times, a field-by-field breakdown, and special character explanations β€” all in real time, entirely in your browser.

Enter a 5-field cron expression (minute hour dom month dow)

Pro Tips

  • 1.Cron runs in UTC by default on most servers β€” always confirm the timezone of your scheduler.
  • 2.Use */5 in the minute field for every-5-minutes schedules. Much cleaner than 0,5,10,15,20,25,30,35,40,45,50,55.
  • 3.When both day-of-month and day-of-week are set, most Unix cron implementations use OR logic.
  • 4.Test your expression with this tool's next-runs preview before deploying β€” a missing * can shift your schedule by hours.
  • 5.Cloud schedulers (AWS EventBridge, GCP Cloud Scheduler) often use 6-field cron with seconds. Standard Unix cron is 5-field.
  • 6.For monthly jobs, use '0 0 1 * *' (midnight on the 1st). Avoid '0 0 31 * *' since not all months have 31 days.

Frequently Asked Questions

What is a cron expression?+
A cron expression is a string with 5 space-separated fields (minute, hour, day of month, month, day of week) that defines a schedule for running tasks. For example, '0 9 * * 1-5' means 'at 9:00 AM on every weekday'. Cron is used in Unix/Linux systems, cloud schedulers, and CI/CD pipelines.
What do the special characters mean?+
* means 'every' (any value). , separates multiple values (e.g., '1,15' = 1st and 15th). - defines a range (e.g., '1-5' = 1 through 5). / defines a step interval (e.g., '*/15' = every 15 units). These can be combined: '0-30/5' means every 5 units from 0 to 30.
Why is my cron not running when expected?+
The most common issues are: timezone mismatch (cron runs in UTC by default on most systems), day-of-month AND day-of-week being both set (many implementations treat these as OR instead of AND), and off-by-one errors with months (some systems use 0-indexed months).
How do I run a job every 15 minutes?+
Use '*/15 * * * *'. This means: at minute 0, 15, 30, and 45 of every hour. You can also write it as '0,15,30,45 * * * *' for the same result.
What is the difference between day-of-month and day-of-week?+
Day of month (field 3) targets specific calendar dates like the 1st or 15th. Day of week (field 5) targets named days like Monday or Friday. When both are specified, most Unix cron systems use OR logic β€” the job runs if EITHER condition is met.
How do I validate a cron expression before deploying?+
Use this tool's Decode mode to paste your expression and instantly see the next 10 scheduled runs and a plain-English description. This is the safest way to verify the schedule before deploying to production.

Related Tools

Regex Tester
Test and debug regular expressions
JSON Formatter
Format and validate JSON
Hash Generator
MD5, SHA-256, SHA-512 hashes
Base64 Encoder / Decoder
Encode and decode Base64
URL Encoder / Decoder
Encode and decode URLs

Reading a Cron Expression

A standard Unix cron expression has exactly five fields separated by spaces. From left to right: minute (0–59), hour (0–23), day of month (1–31), month (1–12), and day of week (0–6, Sunday = 0). An asterisk * in any position means "every possible value" for that field. Understanding this order is the key to reading any cron expression correctly.

Special Character Guide

Cron syntax supports four special characters that make complex schedules possible:

  • *Wildcard β€” matches every value in the field (e.g. * in hour = every hour)
  • ,List β€” matches multiple values (e.g. 1,15 in day-of-month = 1st and 15th)
  • -Range β€” matches all values from X to Y (e.g. 1-5 in day-of-week = Mon–Fri)
  • /Step β€” matches every Nth value (e.g. */15 in minute = :00, :15, :30, :45)

Common Mistakes When Reading Cron

The most frequent source of confusion is field position. Because day-of-month (field 3) and day-of-week (field 5) look similar, it is easy to accidentally swap them. For example, 0 0 * * 1 is "midnight every Monday," while 0 0 1 * * is "midnight on the 1st of every month" β€” a very different schedule. Another common mistake is forgetting that setting both day-of-month and day-of-week uses OR logic on most systems: the job fires if either condition is met. Use this parser's next-run preview to confirm that your expression fires exactly when you expect.

Cron in Different Environments

While the 5-field format is universal in Unix cron, cloud schedulers may vary. AWS EventBridge uses a 6-field format with a year field and supports L (last), W (weekday), and # (nth weekday). GCP Cloud Scheduler follows standard Unix cron with timezone support. GitHub Actions uses standard 5-field cron but always runs in UTC. Kubernetes CronJob follows standard Unix cron. Always check your platform's documentation, and use this tool to verify the schedule before deploying.

Frequently Asked Questions

How do I decode a cron expression?+
Paste your 5-field cron expression (minute hour dom month dow) into the input box. The parser immediately shows you a plain-English description, a field-by-field breakdown, and the next 10 scheduled run times. No button β€” results appear as you type.
What cron formats are supported?+
This parser supports standard 5-field Unix cron: wildcards (*), comma-separated lists (1,15,30), ranges (1-5), step values (*/15), and combinations (0-30/5). Six-field formats with seconds (used by AWS EventBridge and some CI tools) are not supported β€” remove the leading seconds field before pasting.
Why are the run times shown in local time?+
The next-run calculator uses your browser's local time so you can easily verify when jobs will actually run in your timezone. Keep in mind that most cron daemons and schedulers run in UTC by default, so you may need to adjust.
What does '*/15 * * * *' mean?+
'*/15 * * * *' means 'every 15 minutes'. The * in the minute field means 'starting at minute 0', and /15 means 'then every 15 units'. This fires at :00, :15, :30, and :45 of every hour, every day.
What is the difference between '0 0 * * 1' and '0 0 1 * *'?+
'0 0 * * 1' runs at midnight every Monday. '0 0 1 * *' runs at midnight on the 1st day of every month. These are two very different schedules β€” the field position matters. Field 3 is day-of-month (1–31) and field 5 is day-of-week (0–6, where 0 is Sunday).
Can I use this parser to check cron jobs in production?+
Yes. Paste your expression to verify the schedule and see exactly when the next 10 runs will occur. This is particularly useful for catching off-by-one errors, wrong field order, or unexpected timezone effects before deploying a change.