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
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).
*/15minutes0–598-18hours0–23*day of month1–31*month1–12, JAN–DEC1-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
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
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.”
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.
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.
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.
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
@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)
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
Image compressor (WebP/AVIF)Drop images in — WebP, AVIF or JPEG by quality or a target size in KB, a 1:1 before/after slider, srcset and <picture>, batch ZIP. All in the browser.
Link preview (Open Graph) checkerPaste HTML or fill in fields and see how a link looks in Telegram, WhatsApp, VK, Facebook, X, LinkedIn and Slack. Checks for og:image, text length and twitter:card, plus a ready <head> block.
JSON, YAML and CSV converterConvert between JSON, YAML and CSV with formatting, key sorting, syntax errors pinned to the exact spot, and a data tree.
Regex testerMatches and groups highlighted as you type, replace, a step-by-step breakdown of the pattern, a library of ready patterns and freeze protection.
Base64, hashes, UUID and ULIDBase64/base64url, Base32, HEX, URL and HTML both ways, hashes of text and files of any size (SHA-256, SHA-3, BLAKE3, MD5, CRC-32), HMAC, checksum verification, generating and inspecting UUID v4/v7, ULID and NanoID.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