Cron Expression Tester · Scheduling
Read any cron expression at a glance.
Paste a crontab line like */15 9-17 * * 1-5 to get a plain-English explanation of what it does plus the next run times — entirely in your browser, free, no signup.
Cron Expression Tester playground
Five fields — minute, hour, day of month, month, day of week. Macros like @daily are supported too.
Type a cron expression or pick an example to see a plain-English description and the next run times here.
Verify an AI's answer
Paste what ChatGPT or Claude told you — this recomputes it exactly, locally. Why AI needs checking →
Enter a cron expression above, then paste in what an AI told you to check it.
| Claim | Actual | Verdict |
|---|
The Gap
Five fields, a hundred ways to misread them.
Cron’s syntax is famously terse. The difference between */5 and 5, or between a job that runs once a day and one that runs every minute of a day, is a single character — and the classic day-of-month / day-of-week OR rule trips up even seasoned engineers. A typo here doesn’t throw an error; it just silently runs at the wrong time.
This tester converts any cron expression to plain English — a human-readable sentence you can actually verify — then shows the next run times so the schedule is concrete rather than abstract. It’s the quick sanity check that belongs between writing a crontab line and shipping it — entirely in the browser, with nothing to install.
It’s also the antidote to asking an AI: the day-of-month / day-of-week OR rule trips language models constantly, so a schedule that reads plausibly can fire on the wrong days. This tester applies real cron semantics and shows the actual next fire times — ground truth you can check any AI-suggested crontab line against.
New to the format? Jump to the syntax or try the live playground above.
The Pipeline
How it works.
Four deterministic steps run end-to-end on every keystroke — all inside your browser tab, every time.
-
Tokenize the line.
Your expression is split into its five fields — or expanded from an @macro such as @daily — exactly the way cron reads it.
-
Parse each field.
Every field is decoded into the set of values it matches: ranges, steps, lists and named months or weekdays all resolve to concrete numbers.
-
Describe in English.
The matched sets are composed into a readable sentence, including the day-of-month / day-of-week OR rule when both are restricted.
-
Project the next runs.
Starting from now in your time zone, the schedule is walked forward to list the next times it will fire.
Cron Syntax
Five fields, a few operators.
A standard crontab line is five space-separated fields, read left to right. Each accepts the same small set of operators, and a handful of @macros stand in for the most common schedules.
The five fields
Minute, hour, day of month, month and day of week — in that order. A * means “every value” for that field.
┌───────────── minute (0 - 59)
│ ┌─────────── hour (0 - 23)
│ │ ┌───────── day of month (1 - 31)
│ │ │ ┌─────── month (1 - 12)
│ │ │ │ ┌───── day of week (0 - 7)
│ │ │ │ │
*/15 9-17 * * 1-5 - Minute
- 0–59
- Hour
- 0–23
- Day of month
- 1–31
- Month
- 1–12 or JAN–DEC
- Day of week
- 0–7 or SUN–SAT
Operators & macros
Ranges, steps, lists and names combine inside any field. The @macros are exact shorthands — each expands to a plain five-field line.
# Operators, by example
* every value (every minute, every hour, …)
5 a single value (at minute 5)
1-5 a range (Monday through Friday)
*/15 a step over a range (every 15th minute)
0,30 a list (on the hour and the half hour)
MON-FRI named weekdays (same as 1-5) @yearly → 0 0 1 1 * once a year, at midnight on Jan 1
@monthly → 0 0 1 * * once a month, at midnight on the 1st
@weekly → 0 0 * * 0 once a week, at midnight on Sunday
@daily → 0 0 * * * once a day, at midnight
@hourly → 0 * * * * once an hour, at minute 0 Next Step
Moving off crontab? Convert it to a systemd timer.
Once a schedule reads correctly here, the Cron to systemd Converter turns the same line into an equivalent .timer and .service unit — with an OnCalendar expression and migration notes so the behavior carries over cleanly.
[Timer]
# from: */15 9-17 * * 1-5
OnCalendar=Mon..Fri *-*-* 09..17:00/15
Persistent=true FAQ
Questions, answered.
Tap a question to expand the answer.
What is the Cron Expression Tester?
It's a free, browser-based tool that reads any crontab-style cron expression, translates it into a plain-English description, and computes the next handful of times it will fire. Paste a line like “*/15 9-17 * * 1-5”, and you instantly see “Every 15 minutes, between 09:00 and 17:00, Monday through Friday” plus the upcoming run timestamps — no signup, no server round-trip.
Does my cron expression ever leave my browser?
No. Parsing, the English explanation, and the next-run calculation all happen client-side in your tab. Nothing is uploaded to a server, there's no account, and there's no logging. You can safely paste schedules from internal or sensitive systems.
Which cron syntax does it support?
The standard five-field crontab format — minute, hour, day-of-month, month, day-of-week — including ranges (1-5), steps (*/15), lists (1,15,30), names (JAN, MON), and the common @macros (@hourly, @daily, @weekly, @monthly, @yearly, @midnight). Vendor-specific extensions such as seconds fields or “L”/”W”/”#” qualifiers are not part of the classic crontab spec and are flagged rather than silently guessed.
How are the next run times calculated?
From the current time in your selected time zone, the tester walks the schedule forward field by field and lists the next occurrences. Because everything runs locally, the timestamps reflect your machine's clock — handy for sanity-checking a schedule before you commit it to a server whose time zone may differ.
Why do day-of-month and day-of-week behave strangely together?
Classic cron treats day-of-month and day-of-week as an OR when both are restricted: the job runs when either field matches, not only when both do. It's a well-known footgun. The tester makes this explicit in the English description so a “0 0 13 * 5” style line doesn't surprise you in production.
Can I turn a cron line into a systemd timer?
Yes — once a schedule reads correctly here, head to the Cron to systemd Converter to generate an equivalent .timer and .service unit with an OnCalendar expression and migration notes. The two tools are designed to be used back to back.
What does */5 * * * * mean in cron?
The “*/5” step expression in the minute field means “every 5th minute”, so the job fires at minutes 0, 5, 10, 15 … 55 of every hour — effectively every 5 minutes around the clock. The same step pattern applies to other fields: “*/15” in the minute field fires every 15 minutes at :00, :15, :30, and :45. Paste the expression into the tester to get the human-readable description and the next upcoming run times instantly.
What do the cron macros @daily, @hourly and @weekly mean?
Macros are shorthand aliases that start with “@”. The tester supports @hourly (0 * * * *), @daily and @midnight (both 0 0 * * *), @weekly (0 0 * * 0), @monthly (0 0 1 * *), @yearly and @annually (both 0 0 1 1 *), and @reboot (once at daemon startup, no recurring fire times). Each macro expands to its equivalent five-field expression before being parsed, so the plain-English description and next-run output reflect the full expanded schedule.
How do I validate cron syntax online without signing up?
Paste any standard 5-field cron expression and the tester checks that it has the correct number of fields and that every value falls within its valid range — minute 0-59, hour 0-23, day-of-month 1-31, month 1-12, day-of-week 0-7. If the syntax is valid it shows the plain-English meaning and the next run times; if a field is out of range or malformed, the error message identifies the offending field so you can fix it. No account is required and nothing leaves your browser.
More free, private DevOps tools.
The Cron Expression Tester is one tool in OpsCanopy — a growing canopy of browser-based validators, converters and testers that never touch a server.
New to Linux? Read the Linux guide →
29 free tools, every one offline-capable — opscanopy.com works with no signup and nothing uploaded.
Scheduling on Linux? Pair this with the Cron to systemd Converter, or browse the full tools directory.
Not affiliated with or endorsed by any cron implementation. Format names are used only to describe what this tool reads. OpsCanopy is free and open.