Cron Expression Tester
Test 5- or 6-field cron expressions, see upcoming run times in your timezone, and turn phrases like 'weekdays at 9am' into cron.
Cron Expression Tester
Scope: 5-field POSIX cron (crontab(5)), with an optional leading seconds field. Quartz-only tokens — # (nth weekday), L (last), W (nearest weekday) and ? — are not supported.
Quick presets
Valid expression
Field breakdown
Minute
0
0-59
Hour
9
0-23
Day of month
*
1-31
Month
*
1-12
Day of week
1-5
0-7 (Sun-Sat, 7=Sun)
Want to build visually? Use the Cron Expression Builder to create cron expressions with dropdowns and toggles.
What this tool does
Type a 5- or 6-field cron expression to get a plain-English description, a field-by-field breakdown, and the next run times in any timezone — or write "every Monday at 9am" and let the tool generate the cron for you. Everything is computed in your browser. Watch the classic trap: when both day-of-month and day-of-week are restricted, cron runs on either match, not both.
Updated . Provided as is. Check the output before you rely on it in production.
How to use Cron Expression Tester
- 1
Validate cron expression syntax
Paste cron expression: '0 8 * * MON' (every Monday 8am). Tester checks syntax, converts to English ('At 08:00 on Monday'), and shows next 5 run times. Catch typos before deployment.
- 2
Calculate next run time for scheduled jobs
Need to know when your backup cron runs next? Paste expression and current date. Tester shows exact next run datetime. Useful to verify job schedules before SLA commitments.
- 3
Convert natural language to cron expression
Want 'every 15 minutes' or 'daily at 3pm on weekdays'? Describe it, tester suggests cron. Verify suggested cron is correct by checking next 10 run times.
- 4
Debug cron jobs that don't run
If a job never ran, check if cron expression is valid. Paste into tester. If it says 'invalid', that's why job never ran. Fix syntax and redeploy.
- 5
Plan maintenance windows with cron insights
Test each job's expression and compare their next-run lists to spot jobs that fire in the same minute, then stagger them.
Questions and answers
What is a cron expression?
How do I test a cron expression?
Can I generate cron from natural language?
Is this cron tester free and private?
What's the difference between Cron Builder and Cron Tester?
Use it as an API
Cron Expression Tester is also callable as a free HTTP JSON API at
https://aidevhub.io/api/cron-expression/parse/ — GET with query
parameters or POST with a JSON body, no authentication, CORS enabled, fair use
(abusive traffic is throttled at the edge; there is no per-request quota header). Responses return
{ ok, tool, result, meta }.
curl -s "https://aidevhub.io/api/cron-expression/parse/?expression=0%209%20*%20*%201-5"
Machine-readable contract: /api/tool/cron-tester.json All API endpoints: /agents/ LLM site index: /llms.txt
For AI agents: how to call this tool
Machine-readable contract, endpoints and examples. Humans can ignore this section.
Best Path For Builders
Dedicated API endpoint
Deterministic outputs, machine-safe contracts, and production-ready examples.
Dedicated API
https://aidevhub.io/api/cron-expression/parse/ OpenAPI: https://aidevhub.io/api/openapi.yaml
How do I test a cron expression and see its next run times?
Enter the expression — 0 9 * * 1-5, say — and the tester validates it, describes it in plain English ("At 09:00, on weekdays"), breaks it into fields with their valid ranges, and projects the next runs in the timezone you choose. If you would rather start from words, type "every 5 minutes" or "every Monday at 9am" into the natural-language box and it fills in the cron for you.
Step by step
- Type the cron expression, pick a preset, or write the schedule in natural language.
- Check the plain-English description against what you intended — this catches transposed fields immediately.
- Select the timezone the job will actually run in; next runs are computed against that zone's wall clock, not your local one.
- Read the next-runs table: absolute date and time, weekday, and relative time for the next 5 to 50 executions.
- Copy the expression or the run list once it matches your intent.
Cron field reference
| Field | Allowed values | Notes |
|---|---|---|
| Minute | 0-59 | |
| Hour | 0-23 | 24-hour clock |
| Day of month | 1-31 | ORed with day-of-week when both are restricted |
| Month | 1-12 or JAN-DEC | Names work in ranges and lists too |
| Day of week | 0-7 or SUN-SAT | Both 0 and 7 mean Sunday |
| Second (optional) | 0-59 | Only in 6-field expressions, written before the minute field |
Every field accepts * (any), lists (1,15), ranges (1-5), and steps (*/10), as implemented in this tester. Scheduler-specific extensions such as Quartz's L, W, and # tokens or @reboot are not evaluated here.
What happens when both day-of-month and day-of-week are set?
Standard cron ORs them: 0 0 13 * 5 fires at midnight on the 13th of the month and on every Friday, not only on Friday the 13th. This tester implements the OR rule, matching what Vixie cron and most schedulers do — and it is the single most common way a "monthly" job quietly runs weekly. Restrict only one of the two fields unless you genuinely want the union.
Does the tester support seconds and timezones?
Yes. Six-field expressions with a leading seconds field are parsed and simulated, and the next-run projection evaluates the schedule against the selected timezone's wall clock — including daylight-saving transitions, since each candidate instant is converted through the browser's timezone database. That makes it easy to verify what "03:30 Europe/Berlin" means for a server running in UTC.
Is my schedule sent to a server?
No. Parsing, description, and next-run calculation all happen in the page; nothing is transmitted or stored. Cron schedules describe internal operations — backups, billing runs, deploy windows — and there is no reason a tool needs to see them to compute the next execution times.