Parse cron expressions
Free online cron expression parser that runs in your browser. Paste a 5-field crontab line (or 6-field with seconds, or a @yearly / @monthly / @weekly / @daily / @hourly alias) and the tool explains what it means in plain English, lists the next 10 times it will fire in your local timezone (with a UTC toggle), and breaks down each field. Quasi-random expressions like "*/15 9-17 * * MON-FRI" are decoded the same way as plain "0 9 * * *". Useful for verifying a crontab before pasting it on a server.
How to use
Any 5- or 6-field crontab line, or an @alias.
Plain-English explanation of when it fires.
Ten upcoming fire times, defaulting to your local time.
Verify against what your server cron expects.
Read any cron expression — human description, ten upcoming run times, per-field breakdown
Build expression from schedule
Description
Fields
Next 10 runs (your local time)
Field reference
* * * * * = Minute (0-59) · Hour (0-23) · Day of month (1-31) · Month (1-12 (or JAN-DEC)) · Day of week (0-6 (Sunday=0, also SUN-SAT))Special characters: * (any) , (list) - (range) / (step)
Features
Typical uses
- Verify a complex schedule like "*/15 0-6 * * MON-FRI" before pasting it on a production server.
- Find the next 10 fire times to plan a deployment window around a scheduled job.
- Decode a cron expression someone wrote into your repo without leaving any comment.
- Convert between server-time and your local time for an on-call rota.
- Build a Quartz expression (with seconds) and validate it before pushing to a Java app.
Why this one
Most cron tools either explain the expression OR list next runs — not both. We do both, plus a per-field breakdown that helps you spot the field where you slipped a digit. Calculation runs entirely in your browser, so there is no rate limit or signup. Both classic 5-field crontab and Quartz-style 6-field (with seconds) work.
Common questions
What is the difference between 5-field and 6-field cron?
Traditional Unix cron uses 5 fields: minute, hour, day-of-month, month, day-of-week. Quartz (used by Java schedulers, Spring Boot, etc.) prepends a "second" field for 6 fields. We auto-detect: 5 tokens → classic, 6 tokens → Quartz.
What is the timezone of the parsed schedule?
Cron expressions themselves have no timezone — the server interprets them in its local timezone. The tool shows next runs in your browser's local timezone by default and offers a UTC toggle. If your server runs in a different zone, the times will differ; check your crontab's TZ= line or the container's TZ env.
Why does "*/5" mean "every 5"?
The step character "/" combined with "*" means "start at the field minimum and step by N". So */5 in the minute field is 0, 5, 10, 15, … 55. You can also write 10/5 (start at 10, step by 5: 10, 15, 20, …).
What about "L" / "W" / "#" modifiers (last weekday, etc.)?
Those are Quartz extensions (Spring Scheduler, Hangfire, etc.) and not part of POSIX cron. The current version of this tool does not support them. If your scheduler uses them, validate in the scheduler's own UI.
Why does the day-of-month and day-of-week both filter "OR"?
POSIX cron quirk: if BOTH day-of-month and day-of-week are restricted (i.e., not "*"), the job runs when EITHER matches. So "0 0 1 * MON" fires on the 1st of every month AND every Monday — many people mis-read it.
Mobile?
Yes. The expression input is monospaced; the schedule list scrolls.
We can — and it's free! Just send us a quick message with your idea. If you'd like to discuss it in detail, leave your email and we'll get back to you. You can stay anonymous.