A scheduling language

Schedules in plain English.

hron does everything cron can — and the things it can't. Write the schedule the way you'd say it out loud.

cron 0 9 * * 1-5
hron every weekday at 9:00
One spec, native implementations everywhere Rust TypeScript Python Go Dart Java C# Ruby WASM
The difference

Same schedule. One you can read.

Every expression on the right is valid hron. The ones at the bottom can't be written in cron at all.

cron cryptic
0 9 * * 1-5
0 10 * * 0,6
*/30 9-17 * * 1-5
0 9 1,15 * *
— not possible —
— not possible —
— not possible —
hron readable
every weekday at 9:00
every weekend at 10:00
every 30 min from 09:00 to 17:00 on weekdays
every month on the 1st, 15th at 9:00
every 2 weeks on monday at 9:00
every month on the first monday at 10:00
every year on dec 25 at 00:00
Beyond cron

Things the five-field syntax can't say.

hron is a superset. Compose any of these with except, until, starting, during, and a timezone.

Multi-week intervals

every 2 weeks on monday at 9:00

Ordinal weekdays

every month on the first monday at 10:00

Yearly schedules

every year on dec 25 at 00:00

Exception dates

every weekday at 9:00 except dec 25, jan 1

End dates

every day at 09:00 until 2026-12-31

Timezone & DST aware

every day at 9:00 in America/New_York
Install

Drop it into your stack.

One conformance spec, hand-written parsers, identical DST semantics across every language.

$cargo add hron

Stop decoding asterisks.