Cron Expression Parser - Explain & Build Cron Schedules Online

Paste any cron expression and get a plain-English description plus next run times instantly. Free, browser-based cron expression parser — no signup needed.

Cron expression
17 chars · 1 lines · 17 bytes
Explanation

Paste a cron expression, get plain English back

Type any cron expression into the tool above and it instantly tells you exactly when that job will run — no memorising field order, no second-guessing asterisks. Perfect for anyone writing a scheduler, reviewing someone else's config, or debugging a task that fires at the wrong time.

How to use the cron expression parser

  1. Type (or paste) your cron expression into the input field above — for example 0 9 * * 1-5.
  2. The tool decodes it in real time: you'll see a plain-English description and the next several run times listed.
  3. Tweak individual fields and watch the description update instantly so you can dial in the exact schedule you need.

Worked example: decoding a real cron schedule

Input: 30 6 1 * *

What the parser returns: "At 6:30 AM, on day 1 of every month." It also shows the next five run dates — useful for confirming the schedule is right before you deploy it.

Change it to */10 8-17 * * 1-5 and the parser reads back "Every 10 minutes, between 8:00 AM and 5:00 PM, Monday through Friday" — a handy sanity-check before pushing to production.

Cron field reference — what each position means

Position Field Allowed values Special characters
1Minute0 – 59* , - /
2Hour0 – 23* , - /
3Day of month1 – 31* , - / ?
4Month1 – 12* , - /
5Day of week0 – 6 (0 = Sunday)* , - / ?

* (asterisk) means every valid value for that field. */n (step) means every n units — so */15 in the minute field fires at :00, :15, :30, and :45.

Quick reference: 3 common expressions

ExpressionMeaning
0 9 * * 1-59:00 AM every weekday (Monday – Friday)
*/15 * * * *Every 15 minutes, all day, every day
0 0 1 1 *Midnight on 1 January every year

How to parse or build cron expressions in code

Sometimes you need to validate or describe a cron string inside your own app. Here are two quick, copy-pasteable examples.

Python (using the croniter library)

# pip install croniter
from croniter import croniter
from datetime import datetime

expr = '30 6 1 * *'
base = datetime.now()
cron = croniter(expr, base)
print(cron.get_next(datetime))  # next run after now
print(cron.get_next(datetime))  # the one after that

JavaScript / Node.js (using the cron-parser package)

// npm install cron-parser
const parser = require('cron-parser');

const interval = parser.parseExpression('30 6 1 * *');
console.log(interval.next().toString());  // next run
console.log(interval.next().toString());  // then this one

Both libraries throw an error if the expression is invalid — handy for input validation at runtime.

How the parser works

The tool splits your expression into its five fields (minute, hour, day-of-month, month, day-of-week) and checks each value against the allowed range. It then walks forward through a calendar — starting from the current time — to find the next moments that satisfy all five fields simultaneously. That matching calendar walk is what produces the "next run times" list.

Special characters like ranges (1-5), lists (1,15), and steps (*/10) are expanded into the full set of matching values before the walk begins. Everything runs in your browser — your cron expression is never sent to any server and stays completely private.

When to use a cron expression parser — and when not to

Use it when you:

  • Inherited a crontab you didn't write and need to understand it quickly.
  • Want to double-check a schedule before deploying a job (CI pipelines, database backups, report generators).
  • Are learning cron syntax and want immediate visual feedback as you type.
  • Need to generate a valid expression — build it field by field and confirm the description matches your intent.

Don't rely on it when:

  • Your scheduler uses extended syntax. Some systems (AWS EventBridge, Spring, Quartz) add a sixth field for seconds, or use a ? differently from standard POSIX cron. Always cross-check against your platform's own docs.
  • You need timezone-aware scheduling. Standard cron expressions have no timezone field — the schedule runs in whatever timezone the server uses. Tools like Kubernetes CronJobs or Airflow have their own timezone settings separate from the expression itself.
  • You need sub-minute precision. Cron fires at most once per minute. For anything faster, you'll need an application-level scheduler instead.

The POSIX crontab specification defines the canonical five-field syntax this tool follows.

Bottom line: if a cron schedule looks mysterious or you're not 100% sure it'll fire when you expect, paste it in above and get a plain-English answer in seconds.

Frequently asked questions

Is my cron expression uploaded or stored anywhere?+
No. The parser runs entirely in your browser. Nothing you type is sent to a server, logged, or stored. You can safely paste expressions from private or production configs.
What's the difference between a 5-field and a 6-field cron expression?+
Standard POSIX/Unix cron uses five fields: minute, hour, day-of-month, month, day-of-week. Some platforms (Quartz scheduler, AWS EventBridge, Spring) prepend a seconds field, giving six fields total. If you paste a 6-field expression, the parser here may read it shifted — always check your platform's own documentation for the exact field order it expects.
How do I run a cron job every weekday at 9 AM?+
Use 0 9 * * 1-5. The 1-5 in the day-of-week field covers Monday through Friday; 0 9 sets the time to 9:00 AM. Paste it into the tool above to confirm the plain-English description matches.
What does */5 mean in a cron expression?+
*/5 is a step value — it means 'every 5 units.' In the minute field, */5 fires at :00, :05, :10, :15, and so on. In the hour field, */5 fires every five hours (0, 5, 10, 15, 20). You can use step values in any field.
Can I use this to build a cron expression from scratch, not just read one?+
Yes. Type or adjust individual fields directly in the tool and the plain-English description updates as you go. The next-run list confirms the result, so you can iterate until the schedule is exactly what you want.
Why does my cron job fire at the wrong time?+
The two most common causes are timezone mismatch (the server's system timezone differs from what you expected) and a mis-typed field order. Paste the expression here to verify the fields are correct, then check the timezone setting on your server or scheduler platform separately.
Does this tool work with Kubernetes CronJobs, GitHub Actions schedules, or AWS EventBridge?+
Kubernetes CronJobs and GitHub Actions both use standard 5-field cron — this tool reads them correctly. AWS EventBridge uses a 6-field variant with a slightly different syntax, so results may not match exactly; check the EventBridge schedule docs for its specific rules.
Is this tool free? Do I need an account?+
Completely free, no account needed. Open the page, paste your expression, and get results instantly.