Cron Builder
Builds a cron expression field by field, each typed into its own box with its legal range beside it, and shows the resulting schedule as you change it.
Builds a cron expression field by field, with each field’s range and meaning next to it and the next runs updating as you type. The same screen as the parser with the fields editable, because building one and reading one are the same problem from two directions.
Expression
Five fields, or six with seconds first. `@daily`, `@hourly` and friends work too.
In plain English
At 09:00, on Monday through Friday.
Build it field by field
| Field | Value | Means |
|---|---|---|
| Minute0-59 | 0`*/15` is every quarter hour; `15` is at quarter past. | |
| Hour0-23 | 9Always 24-hour, always in the server’s zone unless the scheduler says otherwise. | |
| Day of month1-31 | every day of month`L` is the last day. A 31 simply does not fire in a short month. | |
| Month1-12 or JAN-DEC | every monthNames are case-insensitive. | |
| Day of week0-7 or SUN-SAT | Monday through FridayBoth 0 and 7 are Sunday. `5#3` is the third Friday; `5L` is the last. |
Next runs
Zone
UTC
Computed in the zone above, not in your browser’s. Wall-clock times that summer time skips are skipped here too.
How to use it
Start from a preset
Hourly, daily at three, weekdays at nine, the first of the month, the last day of the month. Most schedules are one edit away from one of these.
Edit the field you need
Each field has its own box with the legal range under the name. The plain-language sentence above rewrites itself as you type.
Confirm against the next runs
In the zone your scheduler uses, not your own. A schedule that looks right and runs at the wrong hour is almost always a zone, not a mistake in the fields.
Common questions
How do I run something every 90 minutes?
You cannot, in one expression. Cron fields are independent, so `*/90` in minutes is invalid and there is no way to express a period that does not divide an hour. Two expressions, or a scheduler with intervals, is the answer.
Should I add the seconds field?
Only if your scheduler wants six fields — Quartz and Spring do, Unix cron does not and will reject the expression. The button here adds and removes it so you can see both spellings of the same schedule.
Why does 31 not fire in February?
Because there is no 31 February — cron does not clamp to the last day, it simply does not match. `L` is the extension that means "last day of the month", where your scheduler supports it.
Feed it from
Next
These accept what this tool produces, so the result can go straight in.
Cron Parser
Explains a cron expression in plain language and lists the next runs in a chosen timezone.
Kubernetes Secret Decoder
Decodes every Base64 value in a Secret manifest, and re-encodes an edited one ready to apply.
Timezone Converter
Converts a moment across timezones and shows a shared-hours grid for scheduling across regions.
Base64 Encoder & Decoder
Encodes and decodes Base64 and Base64URL for text or files, handling UTF-8 correctly.
curl to Code
Converts a curl command into fetch, axios, Python requests, Go, PHP or PowerShell.
Text Hash
Computes MD5, SHA-1, SHA-256, SHA-384, SHA-512 and CRC-32 of a string, with an uppercase and Base64 output option.