InterLAB tools · Next runs · time zones · DST

Cron expression helper

Type a cron expression or build one — the tool says in plain English when the job fires, lists the next runs in the right time zone and hands you a ready snippet for crontab, systemd, GitHub Actions, Kubernetes or node-cron.

Free, no sign-up

Linux cron · Quartz · GitHub Actions · Kubernetes
Dialect

Vixie cron / cronie: 5 fields, JAN–DEC and SUN–SAT names, steps and ranges, @daily, @hourly, @reboot macros. If both day of month and day of week are set, either one is enough (OR).

Fields separated by spaces. You can paste a macro (@daily) or pick an example.

  1. */15minutes0–59
  2. 8-18hours0–23
  3. *day of month1–31
  4. *month1–12, JAN–DEC
  5. 1-5day of week0–7, SUN–SAT

Every 15 minutes, between 08:00 and 18:59, Monday through Friday

Builder

Next runs

…

How daylight saving time is handled
cronie: a fixed-time job that falls into the skipped hour runs right after the change, and once in the repeated hour. Jobs with * in minutes or hours follow the new time: skipped times do not run, repeated times run twice.

Runs per day, 30 days

Next 24 hours

Ready-made snippets

# Every 15 minutes, between 08:00 and 18:59, Monday through Friday
*/15 8-18 * * 1-5 /usr/local/bin/report.sh
  • Job output is mailed to the owner — append >> /var/log/job.log 2>&1 if mail is not set up.

How the tool works

  1. Dialect-aware parsing

    Linux cron (Vixie/cronie), Quartz, GitHub Actions and Kubernetes read cron differently: number of fields, names, ?, L, W, #, macros. Errors name the field and value: “The hours field: 24 is outside the allowed range 0–23.”

  2. Plain language

    The expression becomes a sentence: “At 09:00, Monday through Friday”, “Every 15 minutes, between 08:00 and 18:59, Monday through Friday”. The Vixie cron trap is called out too: when both day of month and day of week are set, either one is enough.

  3. Next runs

    Runs are computed on the calendar of the chosen IANA time zone: month ends, February 29, leap years and daylight saving changes follow the rules of the specific system. Next to them: a 30-day map and a timeline of the next 24 hours.

  4. Builder and snippets

    Every-N-minutes, daily, weekdays, monthly and a per-field editor stay in sync with the expression. Snippets: a crontab line, a systemd timer, GitHub Actions on.schedule (converted to UTC), a Kubernetes CronJob and node-cron.

Standards and rules

Sources: POSIX crontab (IEEE Std 1003.1), cron(8) and crontab(5) from cronie, the Quartz Scheduler documentation (CronTrigger), GitHub Docs (the schedule event), Kubernetes (CronJob and the timeZone field) and the robfig/cron library documentation that CronJob is built on.

Linux cron

Specifics
Vixie cron / cronie: 5 fields, JAN–DEC and SUN–SAT names, steps and ranges, @daily, @hourly, @reboot macros. If both day of month and day of week are set, either one is enough (OR).
Daylight saving time
cronie: a fixed-time job that falls into the skipped hour runs right after the change, and once in the repeated hour. Jobs with * in minutes or hours follow the new time: skipped times do not run, repeated times run twice.

Quartz

Specifics
Quartz Scheduler (Java): 6–7 fields — seconds first, year last; ? is required in day of month or day of week; L — last, W — nearest weekday, # — nth weekday of the month; weekdays 1–7, 1 = Sunday.
Daylight saving time
Quartz (java.util.Calendar): a non-existent time is skipped, a repeated one fires once. Behaviour depends on the version — check yours.

GitHub Actions

Specifics
GitHub Actions on.schedule: 5 POSIX fields, always UTC, a 5-minute minimum interval, no macros; runs may be delayed under load.
Daylight saving time
GitHub Actions works in UTC — there are no DST changes; the chosen zone only affects display.

Kubernetes

Specifics
Kubernetes CronJob (robfig/cron): 5 fields, @hourly…@yearly macros, ? as *; the time zone goes into spec.timeZone (Kubernetes 1.27+).
Daylight saving time
robfig/cron (Kubernetes): a time in the skipped hour does not run (as the library documents), a repeated time may run twice.
Dialects

seconds

Linux / GitHub / Kubernetes
—
Quartz
0–59
Where
Quartz

minutes

Linux / GitHub / Kubernetes
0–59
Quartz
0–59
Where
all

hours

Linux / GitHub / Kubernetes
0–23
Quartz
0–23
Where
all

day of month

Linux / GitHub / Kubernetes
1–31
Quartz
1–31
Where
all

month

Linux / GitHub / Kubernetes
1–12, JAN–DEC
Quartz
1–12, JAN–DEC
Where
all

day of week

Linux / GitHub / Kubernetes
0–7, SUN–SAT
Quartz
1–7, SUN–SAT
Where
all

year

Linux / GitHub / Kubernetes
—
Quartz
1970–2099
Where
Quartz
Fields and allowed values

@yearly

Same as
0 0 1 1 *

@annually

Same as
0 0 1 1 *

@monthly

Same as
0 0 1 * *

@weekly

Same as
0 0 * * 0

@daily

Same as
0 0 * * *

@midnight

Same as
0 0 * * *

@hourly

Same as
0 * * * *

@reboot

Same as
at system start-up (cron only)
Macros (Linux cron, Kubernetes)

Limitations

  • Daylight saving rules follow the systems’ documentation; Quartz behaviour depends on the version and JVM — check yours.
  • Time zones come from the browser’s IANA database: if a country changed its zone recently and the browser is old, times may differ.
  • GitHub Actions does not guarantee exact timing: under load runs are delayed or dropped. UTC conversion covers fixed hours and minutes; steps and hour ranges need converting by hand.
  • Conversion between dialects happens only where the meaning matches: Quartz seconds, year, L, W and # cannot be expressed in 5 fields, and the tool says so.
  • Runs are searched 30 years ahead; a schedule such as “February 30” is shown honestly as never firing.

Privacy

  • Everything is computed in your browser; the expression, command and job name are not sent anywhere (the expression goes only in the short summary if you attach it to a request yourself; the command and job name never do), and the page address does not change.
  • The expression and settings are kept in this browser only (localStorage). “Reset” brings back the example.
  • Analytics receives only the fact of copying or downloading a snippet, its type (crontab, systemd…) and the dialect — never expressions or commands.
  • The result reaches us only if you send a request yourself and keep the “Attach the result” box ticked — the form shows exactly what will be sent. Keys, passwords and tokens are never part of the summary: it holds the expression, dialect, description, time zone and next 5 runs — no command or job name.

Related tools

All tools · 40
Tell us about your task — we'll review your request and get back to you

Need background jobs you can rely on?

We set up schedules, queues and retries, monitoring of missed runs and alerts. Scope and cost come after a brief.

  • The first short conversation is free — we choose the format
  • NDA — yours or ours
  • Pricing after a brief and an agreed scope

Please do not send passwords, access keys or source code through this form — we will agree a safe way to share access separately.

By clicking the button you agree to the processing of your personal data.