Free Tool

Free Cron Expression Generator & Explainer

Build and decode cron expressions with a visual editor. Get a plain-English explanation and the next run times as you type. Free crontab tool for developers, no signup.

Minute
0-59

Hour
0-23

Day (month)
1-31

Month
1-12

Day (week)
0-7

0 9 * * 1-5

In plain English

At 09:00, on 5 selected values.

Next 5 run times (your local time)

  • 1Mon, Jun 29, 2026, 09:00 AM
  • 2Tue, Jun 30, 2026, 09:00 AM
  • 3Wed, Jul 1, 2026, 09:00 AM
  • 4Thu, Jul 2, 2026, 09:00 AM
  • 5Fri, Jul 3, 2026, 09:00 AM
No signup required
Free forever
GDPR compliant
Powered by U2L

Quick Answer

A cron expression generator builds and explains the five-field schedule strings (minute, hour, day-of-month, month, day-of-week) used by cron, crontab, and most schedulers. Pick a preset or edit each field, and the tool shows the expression, a plain-English description, and the next run times. The U2L Cron Expression Generator runs entirely in your browser. Free, no signup.

Quick Facts

  • Standard cron format: five fields - minute (0-59), hour (0-23), day-of-month (1-31), month (1-12), day-of-week (0-7, where 0 and 7 are Sunday).
  • Special characters: * (every value), */n (every n), a-b (range), a,b,c (list). Example: */15 9-17 * * 1-5 runs every 15 minutes, 9am-5pm, weekdays.
  • When both day-of-month and day-of-week are restricted, cron runs when EITHER matches, not both.
  • Omitting seconds is standard Unix cron; some schedulers (Quartz, some clouds) add a 6th seconds field.
  • The plain-English explainer and next-run preview update live as you edit any field.
  • Browser-only and instant - your schedule is parsed locally and never sent to U2L servers.
  • Use presets (every 15 minutes, weekdays at 9am, first of the month) to start, then fine-tune each field.

How to build a cron expression

Start from a preset or edit the five fields directly.

  1. 1

    Pick a preset or start editing

    Choose a common schedule like 'Weekdays at 9:00 AM' to populate the fields, or type directly into the five field boxes for full control.

  2. 2

    Adjust the five fields

    Edit minute, hour, day-of-month, month, and day-of-week. Use *, ranges (1-5), lists (1,3,5), and steps (*/15). The expression updates instantly.

  3. 3

    Read the explanation and next runs

    Confirm the plain-English description matches your intent and check the next run times. When it looks right, copy the expression into your crontab or scheduler.

What is a Cron Expression Generator?

Cron Expression Generator is a tool that builds, validates, and explains cron expressions - the compact five-field strings that tell cron and crontab when to run a job. Instead of memorizing the field order and syntax, you edit each field (or pick a preset) and the tool shows the resulting expression, a human-readable description, and the upcoming run times.

Cron is the time-based job scheduler built into Unix and Linux systems, and its expression syntax has become the de facto standard far beyond Unix - GitHub Actions, Kubernetes CronJobs, cloud schedulers, and countless app frameworks all accept the same five-field format. A cron expression like 0 9 * * 1-5 reads as 'at 09:00, Monday through Friday'.

The syntax is powerful but error-prone. The five fields are easy to mix up, the day-of-month / day-of-week interaction surprises even experienced engineers, and a single wrong character can mean a backup that never runs or a report that fires every minute. A generator removes the guesswork by showing exactly what an expression means before you ship it.

Developers, DevOps engineers, and sysadmins use this to author new schedules, decode an inherited crontab line, and sanity-check an expression's next run times before deploying it to production.

How does a Cron Expression Generator work?

A cron expression has five space-separated fields: minute, hour, day-of-month, month, and day-of-week. Each field accepts a specific value (5), a wildcard (*), a step (*/15 = every 15 units), a range (1-5), a list (1,3,5), or combinations of those. The generator parses each field independently, validating that values fall within the allowed bounds.

To produce the plain-English description, the tool expands each field into the set of values it matches, then composes a sentence: it recognizes common shapes ('every minute', 'at 09:00', 'weekdays') and falls back to listing values for unusual ones. This makes the meaning unambiguous without you having to mentally expand the syntax.

For the next run times, the tool walks forward from the current minute, checking each candidate minute against all five fields, and collects the first matches. It applies the real cron rule for the day fields: if both day-of-month and day-of-week are restricted, a run fires when either one matches; if only one is restricted, that one must match. This is the single most misunderstood part of cron, and seeing the actual next runs catches mistakes immediately.

Everything runs in your browser using plain JavaScript and the built-in date APIs, so the preview reflects your local timezone. No expression or schedule is sent to U2L. The five-field output is portable to any standard cron implementation; if your scheduler uses a sixth seconds field or non-standard extensions, treat this as the minute-and-up portion.

Use Cases

How marketers, businesses, and developers use cron expression generator.

Scheduling server cron jobs

Author the schedule for backups, log rotation, and cleanup scripts, then paste the expression straight into your crontab with confidence it fires when intended.

GitHub Actions and CI schedules

Build the cron string for scheduled workflows (nightly tests, dependency updates) and verify the next runs before committing the YAML.

Decoding an inherited crontab

Paste a cryptic expression like 30 2 * * 0 into the fields to instantly learn it means 'every Sunday at 02:30' before you touch a legacy system.

Kubernetes CronJob manifests

Generate the schedule field for a CronJob and confirm its cadence so a misconfigured job does not hammer your cluster every minute.

Cloud scheduler rules

Create the cron expression for AWS EventBridge, Google Cloud Scheduler, or Azure functions and validate the timing before deploying.

Database and report automation

Schedule nightly ETL jobs, weekly report emails, or monthly invoicing and use the next-run preview to confirm the first execution lands when expected.

App framework task schedulers

Laravel, Rails, Django-cron, node-cron and others accept cron syntax. Build the expression here and drop it into your scheduler definition.

Learning and teaching cron

New engineers can experiment with fields and watch the description and run times change, building intuition for the syntax without trial-and-error in production.

Sanity-checking the day-of-week trap

Test expressions where both day fields are set to confirm the OR behavior, catching the classic bug where a job runs more often than intended.

Cron Expression Generator vs Alternatives

Side-by-side feature and pricing comparison with the top alternatives.

FeatureU2Lcrontab.guruManual editingman 5 crontab
Free, no signup
Visual field editor + presetsLimited
Plain-English explanation
Next run times preview
Day-of-month / day-of-week OR rule appliedManualDocumented
Browser-only (no data sent)N/A

Cron Expression Generator vs crontab.guru

crontab.guru is the long-standing reference for decoding a cron expression - paste a string and read its meaning. It is excellent for quick lookups and is the tool most engineers reach for first.

U2L adds a visual five-field editor with labeled bounds, a preset menu for common schedules, and a next-run preview in your local timezone, alongside a full reference of the syntax and the day-field OR rule. For building an expression from scratch (rather than only decoding one), the guided editor is faster and harder to get wrong.

Cron Expression Generator vs Editing the crontab by hand

Experienced sysadmins edit crontab lines directly in vim. It is fast once the syntax is muscle memory and needs no external tool.

The risk is that a wrong field fails silently - the job simply runs at the wrong time or never. The generator's live description and next-run list surface that mistake before it reaches production, which is worth the few seconds even for experts.

Best Practices

Read the plain-English description before deploying

Always confirm the sentence matches your intent. It is the fastest way to catch a swapped field or an off-by-one hour.

Check the next run times

The upcoming runs reveal mistakes a static expression hides. If the first run is not when you expect, the expression is wrong.

Mind the day-of-month / day-of-week interaction

When both are set, cron runs when either matches. If you mean 'the 1st only when it is a Monday', cron cannot express that directly - rethink the schedule.

Use steps instead of long lists

*/15 is clearer and less error-prone than 0,15,30,45. Prefer step syntax for evenly spaced schedules.

Remember cron uses the server's timezone

Cron fires in the machine's local timezone (often UTC on servers). Account for that gap between the preview's local time and where the job actually runs.

Avoid 'every minute' in production by accident

Leaving the minute field as * runs the job 60 times an hour. Double-check the minute field is set when you intend an hourly or daily job.

Keep heavy jobs off the top of the hour

Everyone schedules at :00. Offset heavy jobs (for example minute 7) to avoid resource contention with other cron tasks.

Comment your crontab lines

Cron files have no built-in description. Add a comment above each line - the generated plain-English sentence makes a good one.

Common Mistakes to Avoid

Assuming both day fields must match (AND)

When day-of-month and day-of-week are both restricted, cron uses OR - the job runs if either matches. This causes jobs to fire more often than expected.

Leaving the minute field as a wildcard

0 * * * * is hourly, but * * * * * runs every minute. Forgetting to set the minute is the classic 'why is this running constantly' bug.

Mixing up the field order

The order is minute, hour, day-of-month, month, day-of-week. Putting the hour first (a natural instinct) schedules the job completely wrong.

Forgetting cron runs in the server timezone

A schedule that looks like 9am to you may run at 9am UTC on the server - hours off from your local expectation. Always reconcile timezones.

Using a 6-field expression where 5 is expected

Adding a seconds field for standard Unix cron shifts every field one place to the right and breaks the schedule. Know whether your scheduler wants 5 or 6 fields.

Using day names or month names where numbers are required

Standard cron uses numbers (0-7 for days, 1-12 for months). Some implementations accept names (MON, JAN) but many do not - use numbers for portability.

Technical Specifications

Fieldsminute, hour, day-of-month, month, day-of-week (5 fields)
Minute range0-59
Hour range0-23
Day-of-month range1-31
Month range1-12
Day-of-week range0-7 (0 and 7 = Sunday)
Operators* (any), / (step), - (range), , (list)
Day-field ruleOR when both day-of-month and day-of-week are restricted
PrivacyParsed in your browser. No data sent to U2L.

Frequently Asked Questions

What is a cron expression?

A cron expression is a compact string of five fields - minute, hour, day-of-month, month, and day-of-week - that tells cron when to run a job. For example, 0 9 * * 1-5 means 'at 09:00, Monday through Friday'.

What do the five fields mean?

In order: minute (0-59), hour (0-23), day-of-month (1-31), month (1-12), and day-of-week (0-7, where both 0 and 7 are Sunday). Each field accepts a value, a wildcard, a range, a list, or a step.

What does */15 mean in cron?

The slash is a step. */15 in the minute field means 'every 15 minutes' (at minutes 0, 15, 30, 45). You can apply steps to any field, such as */2 in the hour field for every two hours.

How do I run a job every weekday at 9 AM?

Use 0 9 * * 1-5. Minute 0, hour 9, any day-of-month, any month, days 1 through 5 (Monday to Friday). The 'Weekdays at 9:00 AM' preset fills this in for you.

What is the day-of-month and day-of-week 'OR' rule?

When both day fields are restricted (neither is *), cron runs the job when EITHER matches. So 0 0 1 * 1 runs on the 1st of the month AND every Monday - not only on Mondays that fall on the 1st.

Does standard cron support seconds?

No. Classic Unix cron has five fields and the smallest interval is one minute. Some schedulers (Quartz, certain cloud services) add a leading seconds field, making six fields - check your platform's docs.

What timezone does cron use?

Cron runs in the host machine's local timezone, which on many servers is UTC. The next-run preview here uses your browser's local time, so reconcile the two when scheduling production jobs.

Can I use names like MON or JAN?

Some cron implementations accept three-letter names for months and weekdays, but many do not. For maximum portability, use numbers: 0-7 for days of the week and 1-12 for months.

How do I run something on the first of every month?

Use 0 0 1 * * - minute 0, hour 0, day-of-month 1, every month, any day-of-week. The 'First of every month' preset sets this for you.

Why is my cron job running every minute?

The minute field is probably a wildcard (*). An expression like * * * * * runs 60 times an hour. Set the minute field to a specific value (such as 0) for an hourly or daily schedule.

How do I schedule every 5 minutes?

Use */5 * * * *. The minute field steps by 5, and the remaining wildcards mean every hour, day, and month. The 'Every 5 minutes' preset provides this.

Can cron run a job multiple times a day?

Yes. List or range the hour field. For example, 0 9,12,17 * * * runs at 09:00, 12:00, and 17:00 daily, and 0 9-17 * * * runs hourly from 9am to 5pm.

What does 0 0 * * 0 mean?

Minute 0, hour 0, any day-of-month, any month, day-of-week 0 (Sunday). It runs every Sunday at midnight. Paste it into the fields to see the description and next runs confirm it.

Is this generator accurate for next run times?

It computes the next runs by checking each upcoming minute against all five fields, applying the real day-field OR rule. It reflects your local timezone, so adjust for the server timezone where the job actually runs.

Does the tool send my expression anywhere?

No. Parsing, the description, and the next-run calculation all happen in your browser with JavaScript. Your cron expression never leaves your device.

Where can I use the expression I build?

Anywhere standard five-field cron is accepted: Unix/Linux crontab, GitHub Actions, Kubernetes CronJobs, cloud schedulers, and many app frameworks. For six-field schedulers, treat this as the minute-and-up portion.

Key Terms

Cron
The time-based job scheduler in Unix-like operating systems, and by extension the expression format many other schedulers adopt.
Crontab
The configuration file (and command) that lists cron jobs, one per line, each beginning with a five-field cron expression.
Field
One of the five space-separated parts of a cron expression: minute, hour, day-of-month, month, and day-of-week.
Step value
The /n syntax (for example */15) that schedules every n units within a field, such as every 15 minutes.
Wildcard
The * character, meaning 'every value' for that field - every minute, every hour, every day, and so on.

Automating links and campaigns on a schedule?

Pair your scheduled jobs with u2l.ai branded short links and the U2L API to rotate destinations and track clicks automatically. Sign up free to manage links, QR codes, and analytics in one place.

Sign up free