Ttooleras

Translate cron expressions into plain English, calculate next run times, and explore common scheduling patterns.. Free, private — all processing in your browser.

*/5
minute
*
hour
*
day (month)
*
month
*
day (week)
Every 5 minutes
1.Wed, Jun 1700:10in 4 min
2.Wed, Jun 1700:15in 9 min
3.Wed, Jun 1700:20in 14 min
4.Wed, Jun 1700:25in 19 min
5.Wed, Jun 1700:30in 24 min
6.Wed, Jun 1700:35in 29 min
7.Wed, Jun 1700:40in 34 min
8.Wed, Jun 1700:45in 39 min
9.Wed, Jun 1700:50in 44 min
10.Wed, Jun 1700:55in 49 min
*any value*/nevery n (step)n,mspecific values (list)n-mrange from n to m
Advertisement

The Crontab Guru decodes any cron expression into plain English, explaining when the schedule will run and listing the next several execution times. Cron syntax (the five-field format used in Linux cron, systemd timers, and many CI/CD systems) is powerful but notoriously cryptic. \"0 2 * * 1-5\" means \"every weekday at 2 AM\" but reading that from the raw expression is error-prone. This tool translates in both directions — paste an expression to get English, or describe your schedule in English to get the cron expression.

Input any cron expression and see: plain-English description (\"Every day at 3:30 AM\"), the next 5-10 execution times in your timezone, visualization of which days/hours are covered, common equivalents (\"@daily\" = \"0 0 * * *\"), and warnings for unusual or potentially wrong patterns. Supports standard 5-field cron (minute hour day month weekday), extended 6-field cron with seconds, and special strings (@hourly, @daily, @weekly, @monthly, @yearly, @reboot). All parsing runs in your browser — your cron schedules stay private.

Crontab Guru — key features

Cron to English

Paste an expression and see plain English explanation.

Next run times

Shows the next 10 times the schedule will execute.

English to cron

Describe your schedule in plain English and get the cron expression.

Visualization

Visual calendar/clock showing which days and hours the schedule covers.

Special strings

Recognizes @hourly, @daily, @weekly, @monthly, @yearly shortcuts.

6-field support

Extended cron with seconds for Quartz-style expressions.

Timezone aware

Next run times shown in your local timezone with UTC offset.

Warnings

Flags unusual patterns and common mistakes (day-of-week OR day-of-month logic).

How to use the Crontab Guru

  1. 1

    Paste cron expression

    Drop a cron expression like \"0 9 * * 1-5\" into the input.

  2. 2

    See English translation

    The tool explains the schedule in natural language.

  3. 3

    Check next runs

    List of upcoming execution times with relative time markers.

  4. 4

    Visualize

    See the schedule on a calendar/clock grid for intuitive understanding.

  5. 5

    Modify or copy

    Tweak the expression and see results update live, or copy the current cron for use.

Common use cases for the Crontab Guru

System administration

  • Reading server crontabs: Quickly understand what each cron job does when auditing or debugging server-side scheduled tasks.
  • Writing new cron jobs: Verify a new cron expression matches your intended schedule before deploying.
  • Timezone verification: Confirm schedules execute at expected times when server timezone differs from user expectation.

CI/CD

  • GitHub Actions scheduled workflows: Write and verify cron expressions for workflow_dispatch or schedule triggers.
  • GitLab CI scheduled pipelines: Test cron syntax for scheduled pipelines and understand execution timing.
  • Kubernetes CronJobs: Write cron expressions for CronJob schedules with confidence.

Learning

  • Cron syntax tutorial: Learn cron step by step by experimenting with expressions and seeing explanations.
  • Debugging schedule bugs: When a cron job doesn’t run as expected, paste expression here to verify intent matches actual schedule.
  • Teaching new team members: Show how cron expressions translate to schedules during onboarding.

Crontab Guru — examples

Every weekday at 9 AM

Typical business-hours schedule.

Input
0 9 * * 1-5
Output
every weekday at 9:00 AM
next runs: Mon 9:00, Tue 9:00, Wed 9:00...

Every 15 minutes

Frequent polling schedule.

Input
*/15 * * * *
Output
every 15 minutes (at :00, :15, :30, :45)
next runs: current time + 0-15 minutes

Monthly

First day of month at midnight.

Input
0 0 1 * *
Output
first day of every month at midnight
next runs: Jun 1 00:00, Jul 1 00:00, Aug 1 00:00...

Shortcut

@daily equals full expression.

Input
@daily
Output
every day at midnight (0 0 * * *)
next runs: tomorrow 00:00, day after 00:00...

Day-of-week OR day-of-month

Surprise behavior.

Input
0 0 15 * 1
Output
on the 15th of every month AND every Monday at midnight
(OR logic — surprising to many users)

Technical details

Standard cron has 5 fields:

minute (0-59) hour (0-23) day-of-month (1-31) month (1-12) day-of-week (0-6, where 0 is Sunday)

Each field accepts:
- A single value: 5 (minute 5)
- An asterisk: * (every value)
- A range: 1-5 (Monday-Friday if day-of-week)
- A step: */15 (every 15 minutes)
- A list: 1,3,5 (Monday, Wednesday, Friday)
- Combinations: 0-30/5 (every 5 minutes in the first half hour)

Examples with translations:
- * * * * * : every minute
- 0 * * * * : every hour at :00
- 0 0 * * * : every day at midnight
- 30 2 * * * : every day at 2:30 AM
- 0 9 * * 1-5 : every weekday at 9 AM
- */15 * * * * : every 15 minutes
- 0 0 1 * * : first day of every month at midnight
- 0 0 * * 0 : every Sunday at midnight

Special strings:
- @yearly or @annually : 0 0 1 1 *
- @monthly : 0 0 1 * *
- @weekly : 0 0 * * 0
- @daily or @midnight : 0 0 * * *
- @hourly : 0 * * * *
- @reboot : run on system startup (non-standard)

6-field extended cron (some systems like Quartz) adds seconds as the first field: 30 * * * * * runs every minute at :30.

Day-of-week vs day-of-month: when both are restricted, cron typically runs when EITHER matches (OR logic). Surprising to many users. To run \"every weekday in January\", you need something like 0 0 * 1 1-5.

Days of week: 0 and 7 are both Sunday in most cron implementations. Some use SUN-SAT as aliases.

Timezone: cron respects the system\u2019s timezone by default. Schedules that must run at specific UTC times should use UTC as the system timezone.

Next run calculation: deterministic based on current time and pattern. The tool computes the next 10 runs and shows in a list with relative time (\"in 2 hours\", \"in 3 days\").

Common mistakes:
- Forgetting the day-of-week OR day-of-month logic
- Using 1-7 for days of week (0-6 is standard; some systems use 1-7 with Sunday as 1)
- Confusing step syntax (*/15 vs */0)
- Timezone confusion between server and schedule expectations

Common problems and solutions

Day-of-week OR day-of-month

When both fields are restricted, cron runs when either matches (OR), not both (AND). To run \"weekdays in January\", you need special syntax. Most users expect AND.

0 vs 7 for Sunday

Standard cron uses 0 for Sunday, but some implementations use 7 or 1. Check your cron system’s documentation.

Step syntax

*/15 means every 15 minutes starting at 0. 5/15 means every 15 minutes starting at 5 (5, 20, 35, 50). Easy to confuse.

Timezone assumptions

Cron runs in the system’s timezone. If you expect UTC but the system is in local time, schedules shift by timezone offset. Check timezone before schedule-critical jobs.

@reboot availability

@reboot is non-standard and only supported in some cron implementations (not anacron, not systemd timers). Check your system before relying on it.

Very frequent schedules

* * * * * runs every minute. */1 * * * * is the same. Running every second isn’t possible with standard cron — need 6-field cron or a different scheduler.

Month/day specifics

0 0 31 2 * tries to run February 31st (impossible). Cron silently never runs. Use last-day-of-month (L in Quartz; not in standard cron) or alternative schedules.

Crontab Guru — comparisons and alternatives

Compared to crontab.guru (the canonical site), this tool provides similar functionality with added features like visualization and English-to-cron conversion.

Compared to command-line cron syntax docs, this tool is interactive and shows next run times dynamically. Docs are for reference; this tool is for active work.

Compared to Quartz or other scheduler UIs, this tool handles the common 5-field cron that Linux, CI/CD, and most schedulers use.

Frequently asked questions about the Crontab Guru

What does cron expression \"0 9 * * 1-5\" mean?

Every weekday (Monday through Friday) at 9:00 AM. Breakdown: minute 0, hour 9, any day of month, any month, days 1-5 of the week (Monday through Friday).

What are the 5 fields in a cron expression?

Minute (0-59), Hour (0-23), Day of Month (1-31), Month (1-12), Day of Week (0-6, 0 is Sunday). In that order, space-separated.

What does the asterisk mean?

Wildcard — matches any value for that field. * * * * * means every minute of every hour of every day of every month. An asterisk in one field means \"any value\" for that field.

Can I run a job every second?

Not with standard 5-field cron (minute is the smallest unit). Quartz and some extended cron systems add a seconds field, letting you do */1 * * * * *. For sub-minute scheduling on Linux, use systemd timers or a different scheduler.

Why does my cron job run twice as often as expected?

Common cause: day-of-week and day-of-month are both restricted, and cron treats them as OR not AND. \"0 0 15 * 1\" runs on the 15th of the month OR on any Monday, not only on the 15th when it’s a Monday.

What is @daily?

Shortcut for \"0 0 * * *\" — every day at midnight. Similar shortcuts: @hourly (every hour), @weekly (every Sunday midnight), @monthly (first of month midnight), @yearly (January 1 midnight).

How do I test my cron expression?

Paste it into this tool to see the English translation and next run times. Verify the next runs match your expectation before deploying to production. Also test in a non-production environment first for critical jobs.

Is my cron expression saved?

No. All parsing runs in your browser. Your schedules stay local.

Additional resources

Advertisement

Learn more

Explore more tools

200+ free tools that run in your browser.

Browse all tools →