NRTechStudio

Cron Expression Explainer, Generator & Tester

Paste any cron expression to get a plain-English description, next run times in your timezone, DST safety check, and validation with exact errors. This free online tool is a cron expression translator (cron → human language), evaluator (computes exact run times), validator (pinpoints errors) and tester (DST & edge-case analysis) in one — plus a visual cron expression builder and generator — a free cron expression generator online for standard 5-field, Quartz and AWS dialects. Supports standard 5-field cron, Quartz (6/7 fields) and AWS EventBridge — auto-detected. Free, no signup, 100% client-side.

Try:
🔒 Privacy: everything runs in your browser. Your expressions are never sent anywhere — verify in DevTools (Network tab stays empty).

This page is a cron expression translator, cron expression evaluator, cron expression validator and cron expression tester — paste any expression into the tool above.

Cron expression examples, explained

Quick answers to the most-searched schedules. This table answers "cron expression every minute", "cron expression every 5 minutes", "cron expression every 10 minutes", "cron expression every 15 minutes", "cron expression every 30 minutes", "cron expression every hour", "cron expression every 2 hours" and "cron expression every 3 hours" — plus daily, weekly, monthly and yearly patterns. Click any expression to load it into the explainer.

If you just need the expression: a cron expression for every 5 minutes is */5 * * * *; a cron expression for every 15 minutes is */15 * * * *; a cron expression for every 30 minutes is */30 * * * *; a cron expression for every hour is 0 * * * *; a cron expression to run every minute is * * * * *; a cron expression to run every 5 minutes is */5 * * * *; a cron expression to run every 15 minutes is */15 * * * *; a cron expression to run every 30 minutes is */30 * * * *; a cron expression to run every hour is 0 * * * *; a cron expression to run every 2 hours is 0 */2 * * *; and a cron expression to run once a day (9 AM) is 0 9 * * *.

ExpressionMeaning

Field reference

This cron expression guide covers the cron expression rules for all three dialects: allowed values and special characters per field.

Standard cron (5 fields) — Linux, macOS, most schedulers

#FieldValuesSpecial chars
1minute0–59, - * /
2hour0–23, - * /
3day of month1–31, - * /
4month1–12 (or JAN–DEC), - * /
5day of week0–7 (or SUN–SAT; 0 and 7 = Sunday), - * /

⚠️ Classic gotcha: when both day-of-month and day-of-week are restricted, cron runs when either matches (OR) — not both. 0 0 1 * 5 runs on the 1st of each month and every Friday.

Quartz (6–7 fields) — Java, Spring, Salesforce, UiPath

#FieldValuesSpecial chars
1second0–59, - * /
2minute0–59, - * /
3hour0–23, - * /
4day of month1–31, - * / ? L W
5month1–12 (or JAN–DEC), - * /
6day of week1–7 (or SUN–SAT; 1 = Sunday), - * ? L #
7year (optional)1970–2099, - * /

L = last (day of month, or weekday), W = nearest weekday, # = nth weekday (TUE#2 = 2nd Tuesday), ? = no specific value (required in one of the two day fields). Quartz powers scheduled jobs in Java/Spring, Salesforce Scheduled Apex and UiPath Orchestrator. The Build tab works as a cron expression generator Quartz developers can use directly, a cron expression generator Salesforce admins can use for Scheduled Apex, and a cron expression generator for UiPath Orchestrator triggers — switch it to cron expression generator 6 fields mode (seconds first) for valid Quartz expressions with L, W, # and ? supported.

AWS EventBridge (6 fields, no seconds)

#FieldValuesSpecial chars
1minute0–59, - * /
2hour0–23, - * /
3day of month1–31, - * / ? L W
4month1–12 (or JAN–DEC), - * /
5day of week1–7 (or SUN–SAT), - * ? L
6year (required)1970–2199, - * /

AWS has no seconds field, the year is required, ? must appear in exactly one of the day fields, and # is not supported. Wrap in cron(...) — e.g. cron(0 12 * * ? *).

Cron dialects by platform

PlatformDialectExample
Kubernetes CronJobStandard 5-field0 2 * * *
Linux / macOS crontabStandard 5-field*/15 * * * *
Spring @ScheduledQuartz 6-field (seconds first)0 0 9 * * MON-FRI
Salesforce Scheduled ApexQuartz 6/7-field0 0 12 ? * MON
UiPath OrchestratorQuartz 6-field0 30 9 ? * *
AWS EventBridge SchedulerAWS 6-field (no seconds)cron(0 18 ? * MON-FRI *)
GitHub Actions scheduleStandard 5-field (UTC)0 0 * * *
JenkinsStandard 5-field (+ H)H 4 * * *

Jenkins' H (hash) is not parsed by this tool — replace it with a concrete value first.

This tool vs crontab.guru

Searching for "cron expression guru"? crontab.guru is iconic — and honestly, for a 2-second lookup it is still the fastest thing on the internet. This page exists for everything it deliberately leaves out:

crontab.guruThis explainer
Plain-English description✓✓
Next run times✓✓ (timezone-aware)
Quartz / AWS dialects (L, W, #, ?)—✓
DST safety check—✓
Impossible-schedule detection—✓
Compare two expressions—✓
Schedule stats (runs/year, gaps)—✓
Visual expression builder—✓
Brand & backlinks✓ legendarynew here

Frequently asked questions

What does */5 * * * * mean in cron?

It means the job runs every 5 minutes — at minutes 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50 and 55 of every hour, every day. The */n syntax means "every n-th value starting from the minimum".

How do I run a cron job every 5 minutes?

Use */5 * * * * (standard 5-field cron). The first field is minutes; */5 matches every 5th minute. Pick the "Every 5 minutes" preset above or build it in the Build tab.

What is the difference between 5-field and 6-field cron expressions?

Standard (Vixie) cron has 5 fields: minute, hour, day-of-month, month, day-of-week. A 6-field expression is usually Quartz, where the first field is seconds. AWS EventBridge also uses 6 fields but without seconds — minute, hour, day-of-month, month, day-of-week, year. The tool auto-detects which one you pasted.

How do I write a Quartz cron expression?

Quartz uses 6–7 fields: seconds minutes hours day-of-month month day-of-week [year]. Example: 0 0 12 ? * WED = noon every Wednesday. Special characters: L (last), W (nearest weekday), # (nth weekday, e.g. TUE#2), and ? (no specific value — required in one of the two day fields).

How do I schedule a cron job in AWS EventBridge?

AWS uses cron(Minutes Hours Day-of-month Month Day-of-week Year) — 6 fields, no seconds, year required, and ? in exactly one of the day fields. Example: cron(0 12 * * ? *) runs daily at noon UTC. AWS does not support #.

Why is my cron job not running?

Usual suspects: (1) an invalid expression — the validator above shows the exact error; (2) an impossible schedule like February 30th; (3) a timezone mismatch between you and the server (many platforms run cron in UTC); (4) a DST spring-forward gap swallowing the scheduled time. Paste the expression above and check the DST panel.

What cron expression never runs?

Any schedule whose date can never occur: 0 0 30 2 * (February 30th) or 0 0 31 4,6,9,11 * (31st of a 30-day month). People often search for a cron expression that never runs to use as a "disabled" placeholder — 0 0 30 2 * is the safest choice since February 30th can never exist. The tool flags these with an explanation. Note 0 0 29 2 * does run — every leap year.

Does cron run during daylight saving time changes?

Generally: on spring-forward, jobs in the skipped hour never run that day (a 2:30 AM job vanishes on that date); on fall-back, jobs in the repeated hour usually run twice. Behavior varies by daemon — select your timezone above and read the DST safety panel for exact dates.

What does 0 0 1 * 5 mean — the 1st AND Friday, or OR?

OR. In classic cron, restricting both day-of-month and day-of-week runs the job when either matches — midnight on the 1st of each month and every Friday. This is the most famous cron gotcha. Quartz instead requires ? in one of the two fields.

How do I schedule a cron job on the last day of the month?

In Quartz: 0 0 12 L * ? (noon, last day of month). Standard 5-field cron has no L; common workarounds are 0 0 28-31 * * plus a wrapper script, or separate 28/30/31 expressions filtered by month.

How do I schedule the 2nd Tuesday of every month?

In Quartz: 0 0 12 ? * TUE#2. The # means "nth weekday of the month". Standard cron cannot express this — run weekly and filter by date in your script.

What is a good crontab.guru alternative?

For instant minimal lookups, crontab.guru remains unbeaten. For depth — Quartz/AWS dialects, timezone-aware next runs, DST checks, impossible-schedule detection, expression comparison and a visual builder — this page is built for that.

How do I run a cron job every 2 hours?

0 */2 * * * — at minute 0 of every 2nd hour (00:00, 02:00, …, 22:00). The */n step syntax works in any field.

What does ? mean in a cron expression?

? means "no specific value" and is valid only in Quartz and AWS EventBridge, in day-of-month or day-of-week. Exactly one of the two must be ? — it declares which day field carries the constraint.

How can I test a cron expression before deploying it?

Paste it above: you get a plain-English description, upcoming run times in your timezone, DST analysis, exact validation errors, and stats (runs per day/week/year). The Compare tab checks two expressions for overlap, and the Build tab generates expressions visually.

🔒 Privacy: this page is a single self-contained file. No requests leave your browser — no analytics, no fonts, no CDNs. Timezone data comes from your own browser's Intl API.

Free tool by NRTechStudio