Cron Expression Generator
Build and decode cron expressions live — edit the raw expression or each field, get a plain-English description, and see the next run times computed right in your browser. Supports @macros (@daily, @hourly…), ranges, steps and lists, and pipes the schedule out as JSON.
About this ToolHow it works, benefits & use casesTap to collapse
Cron syntax is dense and easy to get wrong, so this generator works in both directions at once. Type a raw five-field expression and it validates it instantly, translates it into a plain-English description, and computes the next six run times right in your browser — shown in both UTC (ISO) and your local time. Prefer to build it up? Edit each field — minute, hour, day of month, month, day of week — in its own box and the expression rewrites itself. It understands ranges (1-5), lists (1,3,5), steps (*/5) and named values like JAN or MON, plus the @daily, @hourly, @weekly and other @macros, expanding each macro so you can see the standard expression it stands for. One-click presets cover common schedules, and the whole analysis pipes out as JSON.
How to Use
- 1Type a cron expression into the Expression box — five fields or an @macro like @daily — and read the green plain-English description that confirms what it means.
- 2Or build it field by field under "Build by field", setting minute, hour, day of month, month, and day of week separately.
- 3Check the "Next runs" panel to see the upcoming six fire times in both UTC and your local timezone.
- 4Click a macro chip or a common preset to drop in a ready-made schedule.
- 5Copy the expression with the copy button, or copy, download, or pipe the full schedule as JSON.
Key Benefits
- Live validation with a precise error message when a field is out of range or malformed
- Plain-English description of what any valid expression actually does
- Computes the next six run times in both UTC and local time
- Two-way editing: type the raw expression or build each field separately
- Supports ranges, lists, steps, and named values (JAN, MON, etc.)
- Expands @macros (@daily, @hourly, @weekly…) to their standard form
- One-click presets and JSON export for the full schedule
Common Use Cases
- Writing a schedule for a Linux crontab, CI pipeline, or Kubernetes CronJob
- Decoding an unfamiliar cron expression you inherited in a config file
- Verifying that a schedule fires when you expect before deploying it
- Translating a vague requirement like "every weekday at 9am" into exact syntax
- Teaching or learning how the five cron fields and step/range operators combine
Expression
Run at minute 0 at 9:00 on Monday-Friday
Build by field
0–59
0–23
1–31
1–12
0–6, Sun=0
Next runs
Calculating…
Run times shown in UTC (ISO) and your local time.
Macros
Common presets
Copy, download, or pipe to JSON Formatter / Unix Timestamp Converter.
Output will appear here.
Field reference
┌ minute ┌ hour ┌ day(month) ┌ month ┌ day(week)* any · , list (1,3,5) · - range (1-5) · / step (*/5) · names ok (JAN, MON)
Was this tool helpful?
Share Your Experience
Help others discover this tool!
Related tools
- Render Config GeneratorBuild a render.yaml blueprint — services (web/worker/cron/static), databases, typed env vars, fromDatabase links — with live YAML and an audit
- Vercel Config GeneratorBuild vercel.json — redirects, rewrites, headers (with security quick-add), crons, regions — with live JSON, presets, and a conflict audit
- Unix Timestamp ConverterConvert between timestamps and dates
- JSON Path FinderFind and test JSON paths
- Lorem Pixel GeneratorGenerate placeholder image URLs
- User Agent ParserParse and analyze user agent strings
It uses the standard five-field format (minute, hour, day of month, month, day of week) and supports * for any value, comma lists like 1,3,5, hyphen ranges like 1-5, step values like */5, and named months and weekdays such as JAN and MON. It also accepts @macros like @daily and @hourly.
The tool computes the upcoming six fire times directly in your browser from the current clock and shows each in both UTC (as an ISO string) and your local time. Times refresh periodically so they stay current while the page is open.

