Skip to main content

Developer Tools · Developer

Cron Parser

Decode and validate cron expressions, translate crontab into human-readable descriptions, and preview the next execution times.

Last updated:

How to Use

Expand how to use
  1. 1

    Enter a cron expression

    Type a 5-field cron expression in the input field, or select from the presets.

  2. 2

    View the description

    The cron expression is parsed and a human-readable description is displayed.

  3. 3

    Check execution times

    The next 10 scheduled execution times are shown. Use the copy button to copy results to your clipboard.

Cron Expression

Min
Hour
Day
Month
Weekday

All processing runs locally in your browser via JavaScript.

Presets

Common Cron Patterns

Click any pattern to load it into the input above.

ExpressionDescription
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
Enter a cron expression to see the parsed result

Cron Syntax Quick Reference

Field layout and special-character quick reference for the standard 5-field crontab format.

Field Layout

FieldRangeSpecial
Minute0-59* , - /
Hour0-23* , - /
Day of Month1-31* , - /
Month1-12 or JAN-DEC* , - /
Day of Week0-6 (Sun=0) or SUN-SAT* , - /

Special Characters

CharacterDescriptionExample
*All values (wildcard)* * * * * → every minute
,List of values0,15,30,45 * * * * → 4 times per hour
-Range of values9-17 * * * 1-5 → weekdays 9am-5pm
/Step value*/5 * * * * → every 5 minutes
N-M/SRange with step0-30/10 * * * * → :00 :10 :20 :30 of each hour
JAN-DECMonth alias (case-insensitive)0 0 1 JAN * → January 1st midnight
SUN-SATWeekday 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 / PlatformLibrary / NotationNotes
JavaScript / Node.jsnode-cron, croner5-field standard. croner provides TypeScript types and timezone support.
Pythoncroniter, APSchedulercroniter computes next/previous fire times. APScheduler is a full scheduler.
Gorobfig/cronDefaults 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 Scheduler6 or 7 fields. Supports L (last), W (weekday-nearest), # (nth weekday).
C# / .NETNCrontab, CronosCronos handles DST correctly and requires explicit timezone.
Rubywhenever, rufus-schedulerwhenever generates crontab from a Ruby DSL. rufus-scheduler is in-process.
Linux crontab/etc/crontab, user crontab5-field UNIX standard. Supports @reboot / @hourly / @daily / @weekly / @monthly / @yearly aliases.
Kubernetes CronJobspec.schedule5-field standard. Timezone defaults to UTC unless spec.timeZone is set (Kubernetes 1.27+).
GitHub Actionson.schedule.cron5-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.