Crontab Guru

Translate cron schedule expressions into plain English.

minute   hour   day(month)   month   day(week)

Every minute

About cron expressions

Cron is the original scheduled-task system on Unix. A cron expression is five space-separated fields — minute, hour, day-of-month, month, day-of-week — each containing either a number, a list, a range, a step, or the wildcard *. The deceptively-simple grammar is powerful enough to express "every weekday at 9:30 AM" or "twice an hour between 2pm and 6pm on the 15th of every month" but it is also famously hard to read at a glance.

This generator helps you build cron expressions from a friendly UI and explains an existing expression in plain English. It also shows the next ten times the schedule will fire, computed in your local timezone, so you can sanity-check before deploying.

How to use

  1. Pick a preset (every minute, every hour, daily, weekly, etc.) or type a cron expression directly.
  2. The plain-English description and the next ten run times update live.
  3. Copy the resulting cron expression into your scheduler — Linux crontab, Kubernetes CronJob, GitHub Actions, etc.
  4. Use the timezone toggle to preview the schedule in UTC if your scheduler runs in UTC.

Common use cases

  • Scheduling nightly database backups.
  • Configuring GitHub Actions workflows that run on a recurring cadence.
  • Setting up Kubernetes CronJobs for periodic cleanup tasks.
  • Building Airflow DAG schedules.

Frequently asked questions

Does this support six-field cron expressions?

Six-field expressions add seconds (Quartz, Spring) or year (some BSD crons). The default mode is the standard five-field POSIX expression. Toggle "extended" mode for six-field syntax.

What does "every 15 minutes" actually look like?

*/15 * * * * — the */15 means "starting at 0, then every 15". This fires at :00, :15, :30 and :45.

How does day-of-month interact with day-of-week?

In standard cron, when both fields are restrictive (i.e. neither is *), the schedule fires when EITHER condition is met, not both. This is the most common surprise in cron syntax.

Advertisement