TapCub is live — analytics, insights and live chat, free on one platform

Free tool Cron expression generator and explainer

Cron expressions are short and easy to get wrong. Type one, or start from a common schedule, and the tool spells it out in plain words, breaks it down field by field and lists the next times it will run, in the time zone your server actually uses.

  • 5 or 6 fields
  • Next runs in any zone
  • Runs locally
Generator

Build or check a cron schedule

Start from one of the buttons or type your own expression. The description, the field breakdown and the next run times update as you type.

Five fields: minute, hour, day of month, month, day of week. Six fields put seconds first (Spring, Quartz). Macros such as @daily also work.

Next runs are calculated in this zone, including daylight-saving changes. Pick the zone your server or scheduler runs in.

In plain words

At 09:30, on Monday through Friday

Next run times
2026-11-12 09:30:00  Thu
2026-11-13 09:30:00  Fri
2026-11-16 09:30:00  Mon
2026-11-17 09:30:00  Tue
2026-11-18 09:30:00  Wed

In the selected time zone, with the weekday. Times that daylight saving skips are left out.

Field by field
minute         30          30
hour           9           9
day of month   *           *
month          *           *
day of week    1-5         1,2,3,4,5

Each field as written, and the values it expands to.

Runs entirely in your browser. Nothing you type here is uploaded or stored by TapCub.

Share these inputs: the values go after the # in the link, so they never reach a server.

Version v1.0Updated Update history

Read the result

What each output tells you

Read the description first, then check it against the run times. If the two disagree with what you meant, the expression is wrong.

In plain words

A sentence built from the fields, such as “At 09:30, on Monday through Friday”. It names times and days exactly as the scheduler will match them.

Next run times

The real dates and times after now, in the selected zone. This is where surprises show: a job you expected daily that runs every minute, or a monthly job that never fires in February.

Field by field

Each field as you wrote it next to the values it expands to. */15 becomes 0, 15, 30, 45; MON-FRI becomes 1–5. A * means every value.

Notes

A six-field expression, a field outside its range, or syntax the tool does not handle is flagged above the results, with the field named.

Cron runs in the time zone of the machine or service that executes it. GitHub Actions schedules, for example, run in UTC by default.

How to use it

From idea to crontab line

Four steps, and the last one is the one people skip.

  1. 1

    Start from a schedule

    Click the closest button, such as “Weekdays at 09:30”, or paste the expression you want to check.

  2. 2

    Edit the fields

    Change minutes, hours or days. The description updates as you type, so you can see each change take effect.

  3. 3

    Set the time zone

    Choose the zone of the server or scheduler. A job at 09:00 on a UTC server runs at 17:00 in Beijing.

  4. 4

    Check the run times

    Read the next runs before you deploy. If one looks wrong, fix the expression here, then copy it into crontab or your scheduler.

Syntax

Five fields, read left to right

Standard crontab has five fields separated by spaces. Spring and Quartz add a seconds field in front. Each field accepts a value, a list, a range or a step.

  • * every value · , list (1,15) · - range (9-17) · / step (*/15, 0/5, 10-50/20)
  • ? means “no specific value” (Quartz) and is treated like *
  • Macros: @yearly, @monthly, @weekly, @daily, @hourly
  • When both day of month and day of week are restricted, the job runs when either matches
  • Not supported: L, W, # and a specific year in a seventh field
Cron fields and allowed values
FieldAllowed valuesExample
Second (6-field only)0–590 = at the top of the minute
Minute0–59*/5 = every 5 minutes
Hour0–239-17 = 09:00 to 17:59
Day of month1–311,15 = the 1st and 15th
Month1–12 or JAN–DECJAN,JUL = January and July
Day of week0–7 (0 and 7 = Sunday) or SUN–SAT1-5 = Monday to Friday
Worked example

Common schedules, explained

Descriptions as the tool prints them. The last two rows show the traps: a day-of-month plus weekday that means “or”, and a six-field expression.

Cron expressions and the tool’s plain-language reading
ExpressionIn plain wordsTypical use
*/5 * * * *Every 5 minutesHealth checks, queue polling
0 * * * *At minute 0 of every hourHourly aggregation
0 2 * * *At 02:00Nightly backup, outside working hours
30 9 * * 1-5At 09:30, on Monday through FridayMorning report on working days
*/15 9-17 * * 1-5Every 15 minutes between 09:00 and 17:59, on Monday through FridaySyncs during office hours
0 0 1 * 1At 00:00, on day 1 of the month or on MondayProbably a mistake: runs every Monday as well as on the 1st
0 0/5 9-17 * * ?Every 5 minutes between 09:00 and 17:59Spring @Scheduled or Quartz, seconds first

To run only on a Monday that is also the 1st, leave one day field as * and check the other condition in the job itself.

Common mistakes

Where cron schedules go wrong

The syntax is small. The mistakes are about what the scheduler assumes.

Wrong time zone

Most servers and containers run in UTC. A job written for 09:00 local time fires hours early or late. Check the server zone, or use a scheduler setting such as CRON_TZ where it exists.

A star in the minute field

* 9 * * * runs every minute from 09:00 to 09:59, sixty times. For once at 09:00, write 0 9 * * *.

Day of month and weekday together

0 0 13 * 5 runs on every 13th and on every Friday, not only on Friday the 13th. Restrict one day field and leave the other as *.

Mixing crontab and Quartz

A six-field Quartz expression pasted into crontab fails, and the reverse shifts every field by one. Quartz also numbers weekdays from 1 = Sunday; names like MON avoid the confusion.

FAQ

Cron expression questions

Still have a question?

Chat with the team behind TapCub — we usually reply within a few hours on business days.

What is a cron expression?

A one-line schedule made of fields separated by spaces: minute, hour, day of month, month and day of week. The Unix cron daemon reads it from a crontab file, and many schedulers (Kubernetes CronJobs, GitHub Actions, Spring, Quartz) use the same idea.

What does */5 mean in cron?

A step: every fifth value of the field, starting at its lowest value. In the minute field */5 is 0, 5, 10 … 55. 10-50/20 is 10, 30, 50.

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

Standard crontab has five fields and its smallest unit is a minute. Spring and Quartz put a seconds field first, so 0 30 9 * * * is 09:30:00. Quartz also allows a seventh year field and numbers weekdays from 1 = Sunday, while crontab and Spring use 0 or 7 for Sunday.

Which time zone does cron use?

The time zone of the machine or service running it. On most servers and containers that is UTC. Some cron implementations accept a CRON_TZ variable, Kubernetes CronJobs have a timeZone field, and GitHub Actions schedules run in UTC by default.

How do I run a job every 30 seconds?

Standard crontab cannot go below a minute. In Spring or Quartz use a seconds field: */30 * * * * *. With plain crontab, a common workaround is two entries, one of them starting with sleep 30.

What happens if I set both day of month and day of week?

By crontab convention the job runs when either field matches. 0 0 1 * 1 runs on the 1st and on every Monday. Quartz asks you to put ? in one of the two to avoid this.

Does the tool support L, W and #?

No. These Quartz extensions (last day, nearest weekday, nth weekday of the month) are reported as unsupported. Neither is a specific year in a seventh field, and neither is @reboot, which is not a time.

Changelog

Update history

New features, fixes and data refreshes for this tool, newest first.

  1. · v1.0

    LaunchedFirst release.

Missing something or found an error? Tell us — requests that come up often go into the next update. All tool updates

See your data clearly. Find your growth.

Every click, backed by data. Install one line of code and see your first numbers in a minute.

No credit card · Free plans for analytics and chat · Cookieless analytics