What you get
For every schedule the page shows three things: the expression itself, a plain-English description such as “Every 15 minutes, between 09:00 and 17:59, Monday through Friday”, and the next ten run times as ISO 8601 timestamps with the weekday. A summary above the output repeats the meaning, the detected dialect, the time zone and the very next run; the Table view lists the run times so you can scan or export them.
The engine is cronstrue + cron-parser: cronstrue writes the description, cron-parser computes the dates, and PasteKit adds validation with precise positions plus the rules neither library covers on its own (the nearest-weekday W, LW and Quartz year ranges).
Three dialects are recognised automatically by the number of fields:
- 5 fields — standard Unix cron and most schedulers: minute, hour, day of month, month, day of week.
- 6 fields — seconds first, as in Spring
@Scheduled, node-cron and many libraries. - 7 fields — Quartz, with seconds first and a year last; day of week runs 1–7 from Sunday.
The macros @yearly, @annually, @monthly, @weekly, @daily, @midnight and @hourly are expanded and shown next to their five-field equivalents, and @reboot is explained even though it has no calendar times.
Crontab files and the time zone option
You can paste an entire crontab. Comment lines starting with # and variable lines such as MAILTO=ops@example.com or CRON_TZ=... are skipped, and anything after the schedule fields is shown as the command, so you can check a server’s jobs at a glance.
Time zone for next runs sets the IANA zone used to compute the run times, for example Asia/Singapore, Europe/London or America/New_York. It defaults to UTC. Cron daemons use the server’s local zone unless told otherwise, GitHub Actions schedules are always UTC, and Kubernetes CronJobs follow the controller manager’s zone (usually UTC) unless .spec.timeZone is set — so set this to whatever the system running the job uses. Daylight-saving transitions are applied, which is the quickest way to see whether a 02:30 job will be skipped or doubled in spring and autumn.
Ctrl/Cmd+Enter recalculates, Ctrl/Cmd+Shift+C copies the explanation and Ctrl/Cmd+K opens the command palette. Ctrl/Cmd+Shift+M (minify) has no meaning for cron.
Validation that catches real mistakes
Every field is checked against its range, and the error points at the exact character: a minute of 60, a range that runs backwards like 17-9, a step of zero, or a month name that does not exist. Schedules that can never fire, such as the 30th of February, are rejected with a message naming the month instead of silently producing no runs.
Quartz expressions get an extra check: Quartz expects ? in either day-of-month or day-of-week. If both are set, PasteKit warns that either day will match. That OR rule is also standard cron behaviour whenever both day fields are restricted, and it surprises people: 0 0 1,15 * 1 runs on the 1st, the 15th and every Monday. The cron syntax cheat sheet covers this and the special characters in more depth.
Examples
A crontab with commands and comments
Three schedules are explained separately, each with its command; the comment and MAILTO lines are skipped.
# m h dom mon dow command
MAILTO=ops@example.com
30 2 * * * /usr/local/bin/backup.sh --full
*/5 * * * * /usr/local/bin/healthcheck > /dev/null 2>&1
@weekly /usr/local/bin/rotate-logs30 2 * * *
At 02:30
Command: /usr/local/bin/backup.sh --full
Next 10 runs (UTC):
2026-10-06T02:30:00Z Tue
2026-10-07T02:30:00Z Wed
2026-10-08T02:30:00Z Thu
2026-10-09T02:30:00Z Fri
2026-10-10T02:30:00Z Sat
2026-10-11T02:30:00Z Sun
2026-10-12T02:30:00Z Mon
2026-10-13T02:30:00Z Tue
2026-10-14T02:30:00Z Wed
2026-10-15T02:30:00Z Thu
*/5 * * * *
Every 5 minutes
Command: /usr/local/bin/healthcheck > /dev/null 2>&1
Next 10 runs (UTC):
2026-10-06T01:25:00Z Tue
2026-10-06T01:30:00Z Tue
2026-10-06T01:35:00Z Tue
2026-10-06T01:40:00Z Tue
2026-10-06T01:45:00Z Tue
2026-10-06T01:50:00Z Tue
2026-10-06T01:55:00Z Tue
2026-10-06T02:00:00Z Tue
2026-10-06T02:05:00Z Tue
2026-10-06T02:10:00Z Tue
@weekly (= 0 0 * * 0)
At 00:00, only on Sunday
Command: /usr/local/bin/rotate-logs
Next 10 runs (UTC):
2026-10-11T00:00:00Z Sun
2026-10-18T00:00:00Z Sun
2026-10-25T00:00:00Z Sun
2026-11-01T00:00:00Z Sun
2026-11-08T00:00:00Z Sun
2026-11-15T00:00:00Z Sun
2026-11-22T00:00:00Z Sun
2026-11-29T00:00:00Z Sun
2026-12-06T00:00:00Z Sun
2026-12-13T00:00:00Z Sun
Quartz expression in Singapore time
Seven fields are detected as Quartz; the year field limits the runs to 2027 and times carry the +08:00 offset.
0 0 12 ? * MON-FRI 20270 0 12 ? * MON-FRI 2027
At 12:00, Monday through Friday, only in 2027
Next 10 runs (Asia/Singapore):
2027-01-01T12:00:00+08:00 Fri
2027-01-04T12:00:00+08:00 Mon
2027-01-05T12:00:00+08:00 Tue
2027-01-06T12:00:00+08:00 Wed
2027-01-07T12:00:00+08:00 Thu
2027-01-08T12:00:00+08:00 Fri
2027-01-11T12:00:00+08:00 Mon
2027-01-12T12:00:00+08:00 Tue
2027-01-13T12:00:00+08:00 Wed
2027-01-14T12:00:00+08:00 Thu
Special characters L, W and #
The last day of each month, the weekday nearest the 15th, and the third Friday of every month.
0 0 L * *
0 9 15W * *
0 10 * * 5#30 0 L * *
At 00:00, on the last day of the month
Next 10 runs (UTC):
2026-10-31T00:00:00Z Sat
2026-11-30T00:00:00Z Mon
2026-12-31T00:00:00Z Thu
2027-01-31T00:00:00Z Sun
2027-02-28T00:00:00Z Sun
2027-03-31T00:00:00Z Wed
2027-04-30T00:00:00Z Fri
2027-05-31T00:00:00Z Mon
2027-06-30T00:00:00Z Wed
2027-07-31T00:00:00Z Sat
0 9 15W * *
At 09:00, on the weekday nearest day 15 of the month
Next 10 runs (UTC):
2026-10-15T09:00:00Z Thu
2026-11-16T09:00:00Z Mon
2026-12-15T09:00:00Z Tue
2027-01-15T09:00:00Z Fri
2027-02-15T09:00:00Z Mon
2027-03-15T09:00:00Z Mon
2027-04-15T09:00:00Z Thu
2027-05-14T09:00:00Z Fri
2027-06-15T09:00:00Z Tue
2027-07-15T09:00:00Z Thu
0 10 * * 5#3
At 10:00, on the third Friday of the month
Next 10 runs (UTC):
2026-10-16T10:00:00Z Fri
2026-11-20T10:00:00Z Fri
2026-12-18T10:00:00Z Fri
2027-01-15T10:00:00Z Fri
2027-02-19T10:00:00Z Fri
2027-03-19T10:00:00Z Fri
2027-04-16T10:00:00Z Fri
2027-05-21T10:00:00Z Fri
2027-06-18T10:00:00Z Fri
2027-07-16T10:00:00Z Fri
Spring-style schedule with seconds
Six fields mean seconds come first: every ten minutes during office hours on weekdays, London time.
0 */10 8-18 * * MON-FRI0 */10 8-18 * * MON-FRI
Every 10 minutes, between 08:00 and 18:59, Monday through Friday
Next 10 runs (Europe/London):
2026-10-06T08:00:00+01:00 Tue
2026-10-06T08:10:00+01:00 Tue
2026-10-06T08:20:00+01:00 Tue
2026-10-06T08:30:00+01:00 Tue
2026-10-06T08:40:00+01:00 Tue
2026-10-06T08:50:00+01:00 Tue
2026-10-06T09:00:00+01:00 Tue
2026-10-06T09:10:00+01:00 Tue
2026-10-06T09:20:00+01:00 Tue
2026-10-06T09:30:00+01:00 Tue
Common errors and how to fix them
| Error | Cause | Fix |
|---|---|---|
A cron expression needs 5 fields (minute hour day-of-month month day-of-week); this has 4Explained | A field is missing, or two fields were merged by a missing space. | Use * for “every”, for example 0 9 * * 1-5 for 09:00 on weekdays. |
Minute value 60 is out of range 0–59Explained | Minutes run 0–59, hours 0–23, days 1–31 and months 1–12. | Use 0 with the next hour instead of 60, or */30 for twice an hour. |
Hour range 17-9 goes backwards | A range has to be written low-high; cron does not wrap around midnight. | Write 9-17, or split an overnight window into a list such as 17-23,0-9. |
This schedule never runs: day 30 does not occur in February | The day-of-month and month fields together describe a date that does not exist. | Use L for the last day of the month, or pick a day that exists in every month you list. |
Unknown cron macro "@every" | @every 5m is a Go-library extension, not part of cron. | Write */5 * * * *, or use one of @yearly, @monthly, @weekly, @daily, @hourly or @reboot. |
Unknown time zone "Mars/Olympus" | The Time zone for next runs option is not a valid IANA zone name. | Use a name such as UTC, Europe/London, America/New_York or Asia/Singapore. |
Frequently asked questions
Is day of week 0 Sunday or Monday?
In standard and 6-field cron, 0 and 7 are both Sunday and 1 is Monday. In 7-field Quartz expressions, 1 is Sunday and 7 is Saturday. Names like MON-FRI avoid the ambiguity.
What time zone does cron use?
Classic cron uses the server’s local time and GitHub Actions uses UTC. Set the time zone option to match whichever system actually runs your job.
How do I run a job every 90 minutes?
A single cron expression cannot do it, because steps restart every hour. Use two lines, such as 0 0-21/3 * * * and 30 1-22/3 * * *.
Can I paste my whole crontab?
Yes. Comments and variable lines are skipped, and each schedule is explained along with its command.
Does it support AWS EventBridge cron?
EventBridge uses six fields without seconds (minutes through year). Drop the cron( ) wrapper and add a leading 0 for seconds to read it here as a Quartz-style 7-field expression.