Developer Tools · Developer
Cron Parser
Decode and validate cron expressions, translate crontab into human-readable descriptions, and preview the next execution times.Runs in your browser
Last updated:
How to Use
Expand how to useCollapse how to use
- 1
Enter a cron expression
Type a 5-field cron expression in the input field, or select from the presets.
- 2
View the description
The cron expression is parsed and a human-readable description is displayed.
- 3
Check execution times
The next 10 scheduled execution times are shown. Use the copy button to copy results to your clipboard.
Cron Expression
All processing runs locally in your browser via JavaScript.
Presets
Common Cron Patterns
Click any pattern to load it into the input above.
| Expression | Description |
|---|---|
| Every 15 minutes | |
| Every 30 minutes | |
| Every 6 hours, on the hour | |
| Daily at 2:00 AM (typical backup window) | |
| Daily at 4:30 AM | |
| Weekdays 9 AM to 5 PM, hourly | |
| Every Sunday at midnight | |
| 3 AM on the 1st of each month | |
| Quarterly (1st of every 3rd month) | |
| New Year — January 1st midnight |
Cron Syntax Quick Reference
Field layout and special-character quick reference for the standard 5-field crontab format.
Field Layout
| Field | Range | Special |
|---|---|---|
| Minute | 0-59 | * , - / |
| Hour | 0-23 | * , - / |
| Day of Month | 1-31 | * , - / |
| Month | 1-12 or JAN-DEC | * , - / |
| Day of Week | 0-6 (Sun=0) or SUN-SAT | * , - / |
Special Characters
| Character | Description | Example |
|---|---|---|
| * | All values (wildcard) | * * * * * → every minute |
| , | List of values | 0,15,30,45 * * * * → 4 times per hour |
| - | Range of values | 9-17 * * * 1-5 → weekdays 9am-5pm |
| / | Step value | */5 * * * * → every 5 minutes |
| N-M/S | Range with step | 0-30/10 * * * * → :00 :10 :20 :30 of each hour |
| JAN-DEC | Month alias (case-insensitive) | 0 0 1 JAN * → January 1st midnight |
| SUN-SAT | Weekday alias (case-insensitive) | 0 9 * * MON-FRI → weekdays 9am |
Cron Parser Libraries by Language
Cron implementations and gotchas across major languages and platforms. The standard 5-field format below is what this tool parses.
| Language / Platform | Library / Notation | Notes |
|---|---|---|
| JavaScript / Node.js | node-cron, croner | 5-field standard. croner provides TypeScript types and timezone support. |
| Python | croniter, APScheduler | croniter computes next/previous fire times. APScheduler is a full scheduler. |
| Go | robfig/cron | Defaults to 6 fields (includes seconds). Use cron.WithParser to switch to 5-field. |
| Java (Spring) | @Scheduled(cron = "...") | 6-field format (seconds + Quartz dialect). Different from UNIX 5-field. |
| Java (Quartz) | Quartz Scheduler | 6 or 7 fields. Supports L (last), W (weekday-nearest), # (nth weekday). |
| C# / .NET | NCrontab, Cronos | Cronos handles DST correctly and requires explicit timezone. |
| Ruby | whenever, rufus-scheduler | whenever generates crontab from a Ruby DSL. rufus-scheduler is in-process. |
| Linux crontab | /etc/crontab, user crontab | 5-field UNIX standard. Supports @reboot / @hourly / @daily / @weekly / @monthly / @yearly aliases. |
| Kubernetes CronJob | spec.schedule | 5-field standard. Timezone defaults to UTC unless spec.timeZone is set (Kubernetes 1.27+). |
| GitHub Actions | on.schedule.cron | 5-field standard. Always UTC. Minimum interval is 5 minutes; high-load times may be delayed. |
About Cron Parser
Cron Parser translates standard 5-field cron expressions into plain English and shows the next 10 scheduled run times instantly. Cron syntax is notoriously easy to get wrong — a misplaced asterisk or an off-by-one in the day-of-week field can silently skip critical jobs or trigger them at 3 AM instead of midnight. Paste any expression and verify the exact schedule before it lands in a Kubernetes CronJob manifest, a GitHub Actions schedule trigger, or a crontab on your EC2 instance. Seeing the concrete next 10 execution timestamps makes it far easier to catch mistakes than staring at raw syntax alone.
Key Features
- Parse and validate standard 5-field cron expressions
- Convert to human-readable descriptions
- Show next 10 execution times
- Common pattern presets
- Copy descriptions and schedules to clipboard
Common Use Cases
- Verify a Kubernetes CronJob schedule (e.g., database backup at 2 AM UTC) before applying the manifest
- Debug a GitHub Actions scheduled workflow that isn't triggering at the expected time
- Validate crontab entries on EC2 or bare-metal servers before deploying
- Confirm that a '0 */6 * * *' expression runs every 6 hours and not every minute
- Translate a business requirement ('run every weekday at 9 AM EST') into the correct 5-field expression
- Share a human-readable schedule description with non-technical stakeholders alongside the raw cron string
Frequently Asked Questions
What cron format is supported?
Standard 5-field format (minute hour day-of-month month day-of-week). Each field supports *, numbers, ranges (N-M), lists (N,M), and steps (*/N).
Does it support seconds?
No, only the standard 5-field format is supported. Extended formats like Quartz (with seconds) are not supported.
What timezone is used for next execution times?
Times are displayed in your browser's local timezone. Note that cron daemons on servers typically run in UTC unless configured otherwise — double-check the server timezone with 'timedatectl' or by examining /etc/timezone before relying on the preview.
Is my cron expression sent to a server?
No. Parsing and next-execution calculation run locally via the cron-parser library in your browser. Expressions from internal job definitions are never transmitted.
Are "*/5 * * * *" and "0,5,10,15,20,25,30,35,40,45,50,55 * * * *" equivalent?
Yes, both run every 5 minutes. The step notation (*/5) is simply a shorthand for the explicit list. You can confirm they behave identically by comparing the next-execution previews for both expressions.
What happens if I specify both a day-of-month and a day-of-week?
In the UNIX cron standard, specifying both fields uses OR logic — the job runs when either condition is met. For example, "0 9 1 * 1" runs at 9 AM on the 1st of every month and also every Monday at 9 AM. To avoid unintended behavior, it is best to leave one of the two fields as "*".
How do I read "*/15 * * * *"?
It reads as 'every 15 minutes, every hour, every day, every month, on every weekday' — the */15 in the minute field means 'every 15 minutes starting from 0', so the job runs at :00, :15, :30, and :45 of every hour. Paste it into the input above to confirm the next 10 execution times.
What's the difference between "0 */6 * * *" and "0 0 */6 * *"?
"0 */6 * * *" runs at minute 0 of every 6th hour (00:00, 06:00, 12:00, 18:00). "0 0 */6 * *" runs at 00:00 on every 6th day of the month (the 1st, 7th, 13th, 19th, 25th — and then resets at the next month). The step (*/N) applies to whichever field it appears in, so misplacing it changes the schedule entirely.
Does Linux crontab support seconds like Quartz?
No. Linux/UNIX crontab uses the standard 5-field format (minute hour day month weekday). Quartz Scheduler (Java) and Spring's @Scheduled use 6 fields including seconds, and add special characters like L (last), W (weekday nearest), and # (nth weekday). Go's robfig/cron defaults to 6 fields. This tool parses the 5-field Linux format only.
Why does "0 0 30 2 *" never run?
February never has a 30th day. Cron silently skips impossible date combinations rather than throwing an error, which is a common source of jobs that 'mysteriously never run'. The next-execution preview above will show an empty list when this happens, which is a useful sanity check.
How do I schedule a job for the last day of the month?
Standard UNIX cron does not have a 'last day' indicator. Quartz Scheduler supports L (e.g., 0 0 L * ? for last day at midnight). For UNIX cron, the common workaround is to schedule on the 28th-31st and add a shell check like '[ "$(date -d tomorrow +%d)" = "01" ] && /your/command'. This tool follows the standard 5-field format and does not support L/W/#.
Is this a cron validator, decoder, and translator too?
Yes. It works as a cron parser, validator, decoder, and translator in one: it checks your crontab syntax, flags out-of-range or invalid fields, and converts the expression into a plain-English (human-readable) description so you can confirm it runs exactly when you expect.