WebToolsPlanet
developer Tools

Cron Expression Generator

Build and decode cron schedule expressions visually — get human-readable descriptions and next run times.

Last updated: March 25, 2026

Client-Side Processing
Input Data Stays on Device
Instant Local Execution

Find this tool useful? Support the project to keep it free!

Buy me a coffee

What is Cron Expression Generator?

A cron expression is a string of 5 (or 6) space-separated fields that defines a recurring time schedule for automated task execution. Originally from Unix cron daemons, cron expressions are now the universal scheduling syntax across Linux servers, cloud functions (AWS Lambda, Google Cloud Scheduler, Azure Functions), CI/CD platforms (GitHub Actions, GitLab CI), Kubernetes CronJobs, and application-level schedulers (Laravel, Celery, Quartz).

The five standard fields represent: Minute (0-59), Hour (0-23), Day of Month (1-31), Month (1-12), and Day of Week (0-7). Extended formats add a Seconds field. Special values include * (every), , (list), - (range), and / (step). The expression "0 9 * * 1" means "at 09:00 every Monday" — but reading this intuitively requires practice. This tool generates cron expressions from visual controls and, equally usefully, decodes existing expressions into plain-English descriptions.

How to Use Cron Expression Generator

1

Use the visual schedule builder to select timing preferences (every hour, specific days, etc.)

2

Or type a cron expression directly into the input field to decode it

3

Read the human-readable description ("Runs at 12:00 PM on weekdays") below the expression

4

Review the "Next 5 Run Times" to verify the schedule is correct before using it

5

Copy the cron expression with the Copy button for use in your scheduler

Common Use Cases

  • Scheduling a Node.js script to run every night at 2 AM for database cleanup
  • Setting up a GitHub Actions workflow to run on a weekly schedule ("0 8 * * 1")
  • Creating a Kubernetes CronJob for periodic batch data processing
  • Configuring AWS EventBridge (CloudWatch Events) scheduled rules for Lambda triggers
  • Setting up a WordPress scheduled task (WP-Cron) for daily email digest sends
  • Scheduling Google Cloud Scheduler jobs for API data synchronization
  • Configuring a Celery beat scheduler in a Django application for periodic tasks
  • Decoding an existing cron expression in a legacy system to understand what it does

Example Input and Output

Common cron expressions and their plain-English meaning:

Cron expression
0 9 * * 1-5
0 0 1 * *
*/15 * * * *
0 0 * * 0
0 2 * * *
Human-readable description
At 09:00, Monday through Friday (weekdays)
At midnight on the 1st day of every month
Every 15 minutes
At midnight on Sunday (weekly)
At 02:00 every day

Client-Side Processing

All expression parsing, validation, and next-run-time calculation runs locally in your browser. No cron expressions or schedules are sent to our servers.

Test Before Deploying

Always verify the "Next 5 Run Times" before deploying a cron schedule. A common mistake is confusing "0 * * * *" (runs at :00 of every hour) with "* * * * *" (runs every single minute). Seeing the actual upcoming timestamps removes all ambiguity.

Avoid Common Pitfalls

Remember that "0 9 * * 1" and "0 9 1 * *" are completely different: the first runs every Monday at 9 AM; the second runs on the 1st of every month at 9 AM. When both day-of-month and day-of-week are non-wildcard, most cron implementations use OR logic — the job runs on either condition.

Frequently Asked Questions

What is the difference between "0 0 * * 0" and "0 0 * * 7"?
Both represent Sunday. Most Unix cron implementations accept both 0 and 7 for Sunday. Day of week 1 = Monday, 2 = Tuesday... 5 = Friday, 6 = Saturday, 0 or 7 = Sunday. When in doubt, use 0 for Sunday for maximum compatibility.
What does */ mean in a cron expression?
"/" is the step operator. */15 in the minutes field means "every 15 minutes". */5 in the hours field means "every 5 hours". 1-5/2 means "every 2 values in the range 1 through 5" — so 1, 3, 5.
How do I run a job every weekday (Monday to Friday)?
Use "1-5" in the Day of Week field. A complete expression for 9 AM every weekday: "0 9 * * 1-5". You can also use the list syntax: "0 9 * * 1,2,3,4,5" — both are equivalent.
What is the 6-field cron format with seconds?
Standard cron uses 5 fields (minute, hour, day, month, weekday). Quartz Scheduler (Java), AWS EventBridge, and Spring use a 6-field format that adds a Seconds field at the beginning: "0/30 * * * * ?" means "every 30 seconds". AWS Lambda cron adds a 6th field for year. Always check which format your scheduler expects.
Can I use L (last) and W (nearest weekday) in cron?
"L" and "W" are Quartz-specific extensions — not standard Unix cron. "L" in the day-of-month field means the last day of the month. "5L" means the last Friday. "15W" means the nearest weekday to the 15th. These are not supported in Linux crontab, GitHub Actions, or Kubernetes — only in Java Quartz Scheduler and AWS EventBridge.
What timezone does cron use?
Traditional Linux cron uses the system's local timezone. Cloud schedulers vary: AWS EventBridge uses UTC by default, Google Cloud Scheduler lets you specify a timezone (like America/New_York). Kubernetes CronJobs run in the controller's timezone (typically UTC). Always check your scheduler's timezone handling — misunderstandings here cause missed or double-run jobs.

How This Tool Works

The expression generator builds a cron string from individual field values. The expression decoder uses the cronstrue library to generate plain-English descriptions from any valid 5 or 6-field cron expression. Next run times are calculated using cron-parser, which implements accurate scheduling logic including month boundary handling (months with different day counts) and daylight saving time transitions. All calculations are performed in the user's local timezone by default.

Technical Stack

cronstrue (expression decoder)cron-parser (next run times)Browser-native JavaScriptClient-side only