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