Pixelquil logoPixelquil

Cron Expression Translator & Visual Builder

Translate a cron expression into plain English, or build one visually with a schedule picker.

Minute
*
Hour
*
Day
*
Month
*
Weekday
*

Everything runs in your browser. Nothing you enter is uploaded or stored.

How it works

  1. 1

    Paste a cron expression to translate it

    Enter any standard 5-field cron expression to see a plain English description of exactly when it runs, along with each field broken out individually.

  2. 2

    Or switch to Visual Builder

    Choose this mode to construct an expression from scratch using plain controls instead.

  3. 3

    Pick a frequency

    Choose every N minutes, hourly, daily, weekly, or monthly, and the relevant additional controls appear automatically.

  4. 4

    Fill in the schedule details

    Set the time, interval, days of the week, or day of the month depending on the frequency you chose.

  5. 5

    Use the generated expression

    Click Use This Expression to copy the built cron expression over to the Translate tab and confirm it reads back exactly as intended.

About the Cron Expression Translator & Visual Builder

Cron syntax packs an entire recurring schedule into five compact fields, but that compactness cuts both ways, it is genuinely easy to misread which field controls the hour versus the day of month, or to misplace an asterisk and schedule a job to run every minute instead of once a day. This tool works in both directions: paste an existing cron expression to get a plain English description of exactly when it runs, or use the visual builder to construct a valid expression by picking days, times, and intervals from plain controls, no memorized syntax required.

The five fields, and why order matters so much

A standard cron expression is five space separated fields, in a fixed order: minute, hour, day of month, month, and day of week. Each field accepts an asterisk, meaning every possible value, a specific number, a range like 9-17, a comma separated list like 1,15,30, or a step value like */15 meaning every 15 units. The fixed field order is exactly what makes cron easy to misread, swapping the hour and day of month fields, for instance, produces a syntactically valid expression that silently schedules something completely different from what was intended, which is exactly the kind of mistake a plain English translation catches immediately.

Reading step values and ranges correctly

A step value like */15 in the minute field means every 15 minutes, starting from 0, so 0, 15, 30, and 45 past the hour, not simply a repeating interval starting from whenever the job happens to first run. Ranges like 9-17 in the hour field mean every hour from 9 through 17 inclusive, 9 AM through 5 PM. Combined, an expression like */15 9-17 * * 1-5 means every 15 minutes, but only during the 9 AM to 5 PM hour range, and only Monday through Friday, a common pattern for a job that should only run during business hours on weekdays. This tool's translation spells out exactly this kind of combined logic in plain language, rather than requiring you to mentally combine each field's meaning yourself.

Day of month and day of week can both be set, and that interacts unusually

One genuinely confusing corner of cron worth knowing about: when both the day of month and day of week fields are set to something other than an asterisk, most cron implementations treat them as an OR condition, running the job if either condition matches, not an AND condition requiring both. An expression like 0 9 15 * 1 does not mean the 15th of the month if it happens to fall on a Monday, it means both the 15th of every month and every Monday, which often surprises people expecting an AND relationship. This is a well documented cron quirk rather than a bug in any particular implementation, and it is worth double checking with a translation any time both fields are set simultaneously.

Building a schedule without writing syntax at all

The visual builder flips the process around entirely. Choose a frequency, every N minutes, hourly at a specific minute, daily at a chosen time, weekly on specific days, or monthly on a specific day of the month, fill in the relevant plain controls, a time picker, a set of day checkboxes, a number field, and the corresponding cron expression is generated automatically underneath, ready to copy directly into whatever scheduling system you are configuring, without needing to know the underlying five-field syntax at all.

Runs entirely in your browser

Both parsing and building happen instantly using plain JavaScript, nothing you enter is sent to a server. If you are setting up a scheduled task that also involves converting or checking a related timestamp, our Unix Timestamp Converter is part of the same Developer Utilities collection this tool belongs to.

Frequently asked questions

Does this support standard 5-field cron syntax?

Yes, standard 5-field cron expressions are supported, along with common extensions like step values and ranges.

Can I build an expression without knowing cron syntax at all?

Yes, the visual builder lets you pick a schedule using plain controls, and generates the correct cron expression for you.

What does a step value like */15 actually mean?

It means every 15 units starting from 0, so in the minute field, that's 0, 15, 30, and 45 past the hour, not simply an interval starting from an arbitrary point.

If both day of month and day of week are set, does the job need to match both?

No, most cron implementations treat this as an OR condition, running the job when either field matches, which frequently surprises people expecting an AND relationship.

Does this support 6-field cron expressions with a seconds field?

This tool is built around standard 5-field cron syntax, minute through day of week, the most widely used format across Unix cron, most CI systems, and job schedulers.

Can I translate an expression with multiple comma separated values?

Yes, a field like 1,15,30 or 1-5,7 is parsed and described correctly, listing out the specific values or combined ranges that field matches.

Is my cron expression sent anywhere when I translate it?

No, parsing and translation both happen entirely in your browser using plain JavaScript. Nothing you enter is sent to a server.

Why does the tool flag my expression as invalid?

A standard cron expression needs exactly 5 space separated fields, each using valid cron syntax, an asterisk, a number, a range, a list, or a step value. An expression with the wrong number of fields or malformed syntax in any field is flagged before attempting a translation.