Tooleux

Parse any cron expression - 5-field, 6-field, or @shortcut - into a human description and the next 10 run times.

Runs in your browser. Nothing leaves your device.
Parse cron expressions into human-readable descriptions, see the next run times, and preview upcoming schedules. Also known as a crontab generator, cron expression parser, and cron schedule tester. Free, offline, runs in your browser. Read more Show less

What is a cron expression?

A cron expression is a compact string that describes a recurring schedule. It is used by Unix cron, Kubernetes CronJobs, GitHub Actions, Spring, Quartz, and almost every job scheduler in existence. A typical expression looks like */5 9-17 * * 1-5 - five space-separated fields that together mean "every 5 minutes, between 9am and 5pm, Monday through Friday."

Learning to read cron is useful, but writing it correctly the first time is where most people trip up. This tool shows you exactly what your expression means, when it will next run, and what each field contains.

The five fields

A standard cron expression has five fields, in this order:

FieldAllowed valuesSpecial characters
Minute0-59* , - /
Hour0-23* , - /
Day of month1-31* , - /
Month1-12 or JAN-DEC* , - /
Day of week0-6 or SUN-SAT (0 = Sunday)* , - /

Some systems (Quartz, Spring, and a few Kubernetes cron implementations) add a sixth field at the front for seconds. This tool detects and parses both formats automatically.

Special characters

* - matches every value. In the minute field, * means "every minute."

, - matches a list. 0,15,30,45 in the minute field means "at minutes 0, 15, 30, and 45."

- - matches a range. 9-17 in the hour field means "every hour from 9 through 17."

/ - matches a step. */5 in the minute field means "every 5 minutes." 0-30/10 means "every 10 minutes starting at minute 0, up to minute 30."

Shortcuts

Common schedules have names, which some cron implementations accept in place of the five fields:

ShortcutEquivalentMeaning
@yearly / @annually0 0 1 1 *Once a year at midnight on January 1
@monthly0 0 1 * *Once a month at midnight on the 1st
@weekly0 0 * * 0Once a week at midnight on Sunday
@daily / @midnight0 0 * * *Once a day at midnight
@hourly0 * * * *Once an hour, on the hour
@reboot-Runs once when the system boots

The day-of-month and day-of-week quirk

Classic cron has a surprising rule: if both the day-of-month and day-of-week fields are restricted (i.e., neither is *), the job runs when either matches, not when both match. For example, 0 0 13 * 5 fires on the 13th of every month and every Friday - not just on Friday the 13th. This tool applies the correct Vixie cron behavior when computing next-run times.

How to use this cron parser

Type a cron expression into the box. The tool updates live and shows: the human-readable description, a field-by-field breakdown, and the next 10 run times in your local timezone. Click any preset in the dropdown to load a common schedule as a starting point.

All parsing happens in your browser. Nothing is sent anywhere.

FAQ

Is this the same as crontab.guru?

Similar purpose, different implementation. This tool adds field-by-field breakdown, six-field parsing (seconds), and preset examples. It runs entirely in your browser instead of on a server, so your expressions never leave your device.

What timezone does cron use?

Unix cron uses the system's local timezone, not UTC. If your servers are set to UTC and you write cron in local time, jobs will fire at unexpected hours. Kubernetes and many hosted schedulers default to UTC. Check your platform's documentation, and set TZ= in your crontab if your deployment allows it.

Why does my cron sometimes run twice a year, or not at all?

Daylight saving time. When clocks spring forward, an hour of wall time disappears; when they fall back, an hour repeats. Different cron implementations handle this differently - some skip the repeated hour, some run it twice. Test DST transitions if your job is time-critical.

Which crontab implementations support @shortcuts?

Vixie cron (the standard on most Linux distributions), BusyBox cron, and cronie. They are not supported by Quartz, Spring, or Windows Task Scheduler. If your expression is short like @daily, expand it to 0 0 * * * before pasting into one of those schedulers.

Why do some crons allow 7 for Sunday?

Tradition. POSIX defines day-of-week as 0-6, but Vixie cron has long accepted both 0 and 7 as Sunday. This tool accepts both and normalizes them.

What about L, W, and #?

Those are Quartz-specific extensions for "last day of month", "nearest weekday", and "nth weekday of month". They are not part of standard cron and are not supported by this parser. If you need them, use a Quartz-compatible parser.

How do I run a job every N seconds?

Standard 5-field cron cannot schedule finer than a minute. To run every 10 seconds, either use a 6-field cron (if your scheduler supports it - Quartz and Spring do), or wrap your command in a shell script that loops with sleep.

Command line equivalent
# Show current user's crontab
crontab -l

# Edit crontab
crontab -e

# Explain a cron expression (from the cron-utils package)
npm i -g cronstrue
cronstrue "*/5 9-17 * * 1-5"

# Python
python3 -c "from croniter import croniter; from datetime import datetime; c = croniter('*/5 9-17 * * 1-5', datetime.now()); print([str(c.get_next(datetime)) for _ in range(5)])"

# Validate crontab syntax
crontab -T <(echo "*/5 * * * *")  # BusyBox cronie
Loads a test value into the form