---
title: Crontab Generator – Build & Preview Cron Lines
description: Free crontab generator. Pick a schedule from presets or type one, read it back in plain English, preview the next run times in your timezone, and copy a line ready for crontab -e. Lists, ranges, steps and @daily aliases covered.
canonical: https://watchfor.io/crontab-generator
---

[Back to all free tools](/free-tools)

# Crontab Generator

Build a crontab line without memorising the field order — pick a schedule from presets or type one, read it back in plain English, and preview the next run times in your timezone before you paste it into crontab -e. Covers lists, ranges, steps and @daily-style aliases. Free, instant, no signup.

A crontab line is five fields and a command, and the five fields are the part everyone gets wrong: is it minute-hour or hour-minute, does day-of-week start at 0 or 1, does "*/15" mean every 15 minutes or at :15? This generator answers by showing you — pick a preset or type an expression, and the schedule is spelled out in English next to the exact times it will fire in your timezone.

When it reads the way you meant it, copy the expression, put your command after it, and paste the line into crontab -e. The syntax cheat sheet below covers the operators (lists, ranges, steps, names) and the @reboot / @daily aliases that most crons also accept.

Cron expression minute · hour · day (month) · month · day (week) Copy

Every minute Every 5 minutes Every 15 minutes Every 30 minutes Hourly Every 2 hours Every 6 hours Twice a day Daily at midnight Weekdays at 9:00 Every Sunday 1st of the month Twice a month (1st & 15th) Quarterly Yearly (Jan 1)

Every 5 minutes

Minute

*/5

0–59

Hour

*

0–23

Day of month

*

1–31

Month

*

1–12 or JAN–DEC

Day of week

*

0–7 or SUN–SAT · 0/7 = Sun

Next 5 runs

Computing…

## Cron syntax cheat sheet

Symbol Meaning Example

* any value * = every minute/hour/day

, value list 1,15 = on the 1st and 15th

- range 9-17 = 9:00 through 17:00

/ step */5 = every 5 units

@daily alias @hourly, @daily, @weekly, @monthly, @yearly

Fields combine freely: 30 8 * * 1-5 is "08:30 on weekdays", 0 3 1,15 * * is "03:00 on the 1st and 15th", and */10 9-17 * * * is "every 10 minutes during working hours".

## How to use the Cron Expression Tester

- Type or paste an expression — the plain-English description updates as you type, and errors are pinpointed to the field that caused them.
- Check the next 5 runs — computed in your local timezone (shown above the list) so you can sanity-check the schedule against a calendar before deploying it.
- Start from a preset — the chips cover the schedules that appear in almost every crontab, from every-minute to first-of-the-month.
- Mind the server's timezone — your server most likely runs UTC. A 9:00 job in UTC fires at a different local hour; verify with timedatectl or date on the host.

## Frequently asked questions

What is the order of the five crontab fields? Minute (0–59), hour (0–23), day of month (1–31), month (1–12 or JAN–DEC), day of week (0–7 or SUN–SAT, where both 0 and 7 are Sunday). Then the command. So `30 2 * * 1` is 02:30 every Monday, not 2:30 on the 30th.

How do I write "every day at 3 am"? `0 3 * * *`. Minute 0, hour 3, any day, any month, any weekday. For 3:15 am use `15 3 * * *`; for 3 am on weekdays only, `0 3 * * 1-5`.

What does */15 mean? A step: every 15th value across the field's range. In the minute field, `*/15` fires at :00, :15, :30 and :45. `1-59/15` would start at :01 instead. Steps count from the start of the range, not from when cron started.

Which timezone does cron use? The system timezone of the machine running crond, unless the crontab sets `CRON_TZ=` (Vixie/cronie) or `TZ=` (some systems) at the top. This generator previews the next runs in your browser's timezone — switch it if the server lives elsewhere.

Can I combine day of month and day of week? Yes, but it's OR, not AND. `0 9 1 * 1` runs at 09:00 on the 1st of the month and on every Monday — both conditions match independently. That surprises almost everyone; if you need "first Monday" you need a test inside the command.

How do I know the job actually ran? Cron won't tell you — a missing PATH, a dead machine or a stuck previous run all fail silently. A cron job monitor expects a check-in after each run and alerts you when one doesn't arrive. That is what WatchFor's heartbeat monitor does with the same schedule you build here.

## The schedule is right — but did the job actually run?

Cron fails silently: wrong timezone, broken PATH, a dead machine. WatchFor monitors your endpoints and services around the clock and alerts you the moment something stops responding.

[Start monitoring for free](/pricing)

Free plan · 15 monitors · no credit card required

---

Canonical page: https://watchfor.io/crontab-generator · Site guide: https://watchfor.io/llms.txt
