Skip to content

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

minhourdaymondow

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

At 09:00, on weekdays

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. 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. 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. 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. 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. 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?
A cron expression is five space-separated fields (minute, hour, day of month, month, day of week) that define a recurring schedule for crontab and CI schedulers. This tester also accepts a leading seconds field, lists the next run times in a timezone you pick and describes the schedule in plain English.
How do I test a cron expression?
Paste your cron expression into the input field, select your timezone, and instantly see the next scheduled run times with human-readable descriptions. The tool supports both 5-field (standard) and 6-field (with seconds) cron formats.
Can I generate cron from natural language?
Yes. Phrases such as 'every 5 minutes', 'every monday at 9am', 'weekdays at 8:30am', 'every month on the 1st at 12pm' or 'every 30 seconds' become a cron expression. Parsing runs in your browser with no API call.
Is this cron tester free and private?
Free to use and runs entirely in your browser, your data is not sent to external servers. No account required. Your expressions and schedules stay completely private.
What's the difference between Cron Builder and Cron Tester?
Cron Builder lets you construct cron expressions visually using dropdowns and toggles — ideal when starting from scratch. Cron Tester validates existing expressions, shows when they'll fire, and can generate cron from natural language descriptions.

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

GET /api/cron-expression/parse/ GET cron-expression/parse
POST /api/cron-expression/parse/ POST cron-expression/parse

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

  1. Type the cron expression, pick a preset, or write the schedule in natural language.
  2. Check the plain-English description against what you intended — this catches transposed fields immediately.
  3. Select the timezone the job will actually run in; next runs are computed against that zone's wall clock, not your local one.
  4. Read the next-runs table: absolute date and time, weekday, and relative time for the next 5 to 50 executions.
  5. 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.