Cron Expression Parser

Translate a cron expression into plain English and preview the next runs. Supports standard 5-field cron plus shorthand like @daily and @hourly.

Runs in your browser — nothing uploaded

Paste any cron expression and see exactly what it does — in plain English, with the next five run times worked out for you. Handles ranges, lists, steps, named months and weekdays, plus shorthand like @daily and @hourly. Useful for reviewing schedules in a PR, debugging a missed job, or sanity- checking a one-off backfill.

Private by design — your data never leaves your device

How to use it

No account, no upload — it all happens on your device.

1
Type a cron expression or click one of the preset buttons to load it.
2
Read the plain-English description in the highlighted card.
3
See the next 5 runs in your local time zone below.
4
Use the field breakdown table to understand each piece of the expression.

The 5 fields

Position determines meaning.

PositionFieldRangeSpecial characters
1minute0–59* , - /
2hour0–23* , - /
3day of month1–31* , - /
4month1–12 or JAN–DEC* , - /
5day of week0–6 (Sun = 0) or SUN–SAT* , - /

Special characters at a glance

Combine them in any field.

CharacterMeaningExample
*every value in the range* in hour = every hour
, (comma)list of distinct values1,15,30 in minute = at :01, :15, :30
- (dash)inclusive range9-17 in hour = 9 AM through 5 PM
/ (slash)step within a range*/5 in minute = every 5 minutes
Combinedlist of ranges with steps0,30 9-17 * * 1-5 = :00 and :30 each hour, 9-5, Mon-Fri

Shorthand expressions

Faster to type, identical to the long form.

ShorthandEquivalentMeaning
@yearly / @annually0 0 1 1 *Once a year at midnight, January 1
@monthly0 0 1 * *First of every month, midnight
@weekly0 0 * * 0Every Sunday at midnight
@daily / @midnight0 0 * * *Every day at midnight
@hourly0 * * * *Every hour, on the hour

Pitfalls to watch out for

  • Time zones.Cron schedules run in the server's local time unless you configure otherwise. UTC vs US/Eastern is one of the most common debugging surprises. The next-run preview here uses YOUR browser's local time zone — set your server to match if you want them to agree.
  • Day-of-month AND day-of-week. When both are restricted, classic cron treats them as OR: any day that matches either field runs. Modern schedulers (k8s CronJob, GitHub Actions) follow this convention; some custom tools change it.
  • Step expressions. */15in hour does NOT mean "every 15 hours" — it means "starting at 0, then 15, then 30…" capped at 23. To go strictly every 15 hours you have to write 0,15 (which is only 2 runs in 24 hours).
  • Seconds field. Quartz (Java) and a few cloud schedulers add a leading seconds field for 6 total. This tool uses the classic 5-field shape. Strip the seconds field before parsing if your input has one.

Frequently asked

What's the order of the 5 fields?
minute (0-59), hour (0-23), day of month (1-31), month (1-12 or JAN-DEC), day of week (0-6 with 0 = Sunday, or SUN-SAT). Some cron implementations add a 6th field for seconds or a 7th for year — this tool follows the classic POSIX 5-field shape used by Linux crontabs, GitHub Actions, and most CI/CD systems.
What's the deal with day-of-month and day-of-week together?
If both fields are restricted (not *), classic cron runs when EITHER matches — so '0 0 15 * 1' fires on the 15th OR every Monday, not only Mondays the 15th. This tool follows that convention. If only one is restricted, only it gates the schedule.
Is my expression sent anywhere?
No. Parsing happens in your browser as a small state machine. Your expression, schedule, and the computed next-run dates are never uploaded.

Related tools

JSON Formatter & BeautifierFormat, beautify, and validate JSON instantly in your browser. Your data never leaves your device.JWT Decoder & VerifierDecode and verify JSON Web Tokens (JWT) in your browser. HS256, RS256, ES256 supported. Tokens and keys never leave your device.Base64 Encoder & DecoderEncode text to Base64 or decode Base64 back to text instantly in your browser. Unicode-safe. Nothing is uploaded.