Skip to content
JustTools

Cron Expression Generator

Create a cron schedule in a few clicks or paste one to see what it means, exactly when it runs next, and how to write it for crontab, Quartz, Spring or AWS — all in your browser.

Runs in your browser Free · no sign-up

At a glance

  • Four formats: Unix / Linux cron (crontab, Kubernetes, GitHub Actions), Quartz (with seconds and year), Spring @Scheduled and AWS EventBridge.
  • Explains any expression in plain English — e.g. 30 9 * * 1-5 is “At 9:30 AM, Monday through Friday” — in 12- or 24-hour time.
  • Shows the next 10 run times in your time zone or UTC, including L, W and # rules, leap years and the Unix “either day” rule.
  • Converts a schedule between formats, rewriting day-of-week numbers (Sunday is 0 in Unix and Spring but 1 in Quartz and AWS), ? and seconds — or explains why it can’t.
  • Errors point to the exact field (“Hour: 24 is out of range (0–23)”), and an expression in the wrong format is recognised and you’re offered a switch.
  • Presets and a simple builder for every few minutes or hours, daily, weekly, monthly and yearly schedules, plus ready-to-paste crontab, GitHub Actions, Kubernetes, Spring and AWS snippets.
  • Warns about schedules that never run (30 February) or skip months, and about day-of-month + day-of-week combinations that run more often than expected.

Step by step

How to create a cron expression

  1. 1

    Pick the format

    Choose Unix, Quartz, Spring or AWS — the one your scheduler uses.

  2. 2

    Build or paste

    Click a preset, use Build a schedule, or paste an expression and edit any field.

  3. 3

    Check it

    Read the plain-English description and the Next runs; switch between your time zone and UTC.

  4. 4

    Copy it

    Copy the expression or a ready-made snippet for crontab, GitHub Actions, Kubernetes, Spring or AWS.

Features

Everything you need, nothing you don’t

Plain-English check

Paste the expression from a crontab, YAML file or code review and read what it actually does before it ships.

Real next runs

See the next ten dates and times — “in 3 h 15 min” — so a schedule that’s off by a day or an hour is obvious.

Every scheduler

Unix cron, Quartz, Spring and AWS each have their own rules. Pick the one you use and the syntax is checked for it.

Convert between them

Moving a job from crontab to Spring or EventBridge? Get the equivalent expression with day numbers and “?” fixed.

Build without memorising

Choose “Every week”, tick Mon–Fri and pick a time — the expression is written for you.

Share a schedule

Copy a link that opens the tool with your expression and format, for a ticket or code review.

Cron syntax at a glance

* any value · , list (1,15) · - range (9-17) · / step (*/15) · ? no value · L last · W nearest weekday · # nth weekday (FRI#3).

FieldUnixQuartz / SpringAWS
Second—0–59—
Minute0–590–590–59
Hour0–230–230–23
Day of month1–311–31, L, W, ?1–31, L, W, ?
Month1–12 or JAN–DEC1–12 or JAN–DEC1–12 or JAN–DEC
Day of week0–7 (0 and 7 = Sun)Quartz 1–7 (1 = Sun) · Spring 0–7, L, #1–7 (1 = Sun), L, #, ?
Year—Quartz only, optional1970–2199

Common cron expressions

ScheduleUnix cronQuartz
Every 5 minutes*/5 * * * *0 */5 * * * ?
Every hour0 * * * *0 0 * * * ?
Every day at midnight0 0 * * *0 0 0 * * ?
Weekdays at 9:30 AM30 9 * * 1-50 30 9 ? * MON-FRI
Every Sunday at 6 PM0 18 * * 00 0 18 ? * SUN
1st of every month0 0 1 * *0 0 0 1 * ?
Last day of the monthnot possible0 0 0 L * ?

Things that often go wrong

Time zones: cron uses the server’s time zone, GitHub Actions always uses UTC, and EventBridge rules run in UTC. Check the next runs in UTC if your job runs at the “wrong” hour.

Both day fields in Unix cron: 0 0 1 * 1 runs on the 1st and every Monday, not only on Mondays that are the 1st.

Day numbers: Monday is 1 in Unix and Spring but 2 in Quartz and AWS. Using names like MON avoids mistakes.

FAQ

Frequently asked questions

How do I run a cron job every 5 minutes?

Use */5 * * * * in Unix cron. In Quartz it’s 0 */5 * * * ?, in Spring 0 */5 * * * * and in AWS */5 * * * ? *.

What does * * * * * mean?

Every minute. The five fields are minute, hour, day of month, month and day of week; * means “every”.

What is the difference between Unix cron and Quartz cron?

Quartz adds a seconds field at the start (and an optional year), numbers days of the week 1–7 starting with Sunday, needs a “?” in either day-of-month or day-of-week, and supports L, W and #. The tool converts between them.

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

Use L in day-of-month in Quartz, Spring or AWS, e.g. 0 0 0 L * ?. Standard Unix cron has no last-day option; a common workaround is to run daily on days 28–31 and check the date in the script.

Why does my GitHub Actions schedule run at a different time?

GitHub Actions cron is always in UTC (and may start a few minutes late when busy). India is UTC+5:30, so 9:00 AM IST is 30 3 * * *. Switch Next runs to UTC to check.

Can cron run every 30 seconds?

Not standard Unix cron — its smallest unit is a minute. Quartz and Spring have a seconds field: */30 * * * * ? (Quartz) or */30 * * * * * (Spring).

Keep going

Browse every tool

Last updated Report a problem or suggest a feature