New blogMaking an AI Agent You Can Trust With Money

★ What does this cron actually do?

Cron Expression Builder & Explainer

Type a cron expression or build one with inputs. Read it in plain English, see the next runs in your time zone, and copy the right syntax for crontab, GitHub Actions, Vercel, AWS or Kubernetes.

  • Runs in your browser
  • No signup
  1. 0Minute
  2. 9Hour
  3. *Day of month
  4. *Month
  5. 1-5Day of week

✓ Valid 5-field cron

Quick picks

Typing by hand. Pick a pattern above to build one with inputs instead.

In plain English

At 09:00 on Monday through Friday.

Next 10 runs

Paste it into your platform

Time zone: UTC

0 9 * * 1-5 /usr/local/bin/my-job >> /var/log/my-job.log 2>&1
  • OKRuns in the server’s local time zone. cronie (RHEL, Fedora) accepts a CRON_TZ= line above the job; Debian’s cron does not.
  • Heads-upEscape % as \% in the command: an unescaped % ends the command and starts stdin.
  • Heads-upcron runs with a minimal PATH and no login shell. Use absolute paths and redirect output, or failures disappear.
  • Linux crontab docs ↗

Cron jobs failing silently?

I build background job systems with retries, alerting and dashboards, so you hear about failures before your customers do.

Make my jobs reliable
01

Cron syntax cheat sheet

Five fields, separated by spaces, read left to right from smallest unit to largest. A job runs when the current time matches every field (with one exception for the two day fields, below).

Cron fields
#FieldAllowed valuesExampleMeans
1Minute0–59*/15every 15 minutes
2Hour0–239-1709:00 through 17:59
3Day of month1–311,15the 1st and the 15th
4Month1–12 or JAN–DEC*/3Jan, Apr, Jul, Oct
5Day of week0–6 or SUN–SAT (7 = Sunday too)1-5Monday to Friday
02

Special characters

Special characters
SymbolMeaningExample
*Any value* * * * * every minute
,A list of values0 9,17 * * * 09:00 and 17:00
-A range, low to high0 9 * * 1-5 weekdays at 09:00
/Step through a range*/10 * * * * every 10 minutes
a/nStep starting at a20/15 * * * * minutes 20, 35, 50

Linux cron (Vixie cron and cronie) also accepts shortcuts: @hourly, @daily (or @midnight), @weekly, @monthly, @yearly (or @annually) and @reboot. GitHub Actions doesn't support them, so the builder always shows the five-field form too.

L, W, # and ? come from Quartz and AWS. They don't work in standard cron, GitHub Actions, Vercel or Kubernetes.

03

The day-of-month OR day-of-week rule

This is the rule that surprises everyone. When both day-of-month and day-of-week are set (neither starts with *), cron runs when either one matches, not when both do.

So 0 0 13 * 5 doesn't mean “Friday the 13th”. It runs on the 13th of every month and on every Friday. If either field starts with * (even */2), the normal “both must match” logic applies. That is how Vixie cron behaves, and the next-run list above follows it exactly.

To run on Friday the 13th only, schedule every Friday and exit early in the job unless the date is the 13th. AWS EventBridge avoids the ambiguity by forcing ? into one of the two fields.

04

Time zones and daylight saving

A cron expression has no time zone of its own; the scheduler supplies one. Linux cron uses the server's zone. GitHub Actions defaults to UTC but accepts an optional timezone. Vercel is always UTC. EventBridge rules are UTC, while EventBridge Scheduler takes a zone. Kubernetes uses the controller's zone unless you set spec.timeZone.

Daylight saving creates two edge cases. When clocks jump forward, a time like 02:30 doesn't exist, and this tool shows that run shifted later with a DST sticker, as Vixie cron and GitHub do. When clocks fall back, 01:30 happens twice, and the tool shows a single run at the first one. Different schedulers resolve these cases differently, so avoid scheduling important jobs between 01:00 and 03:00 local time.

05

Common schedules

06

Questions engineers actually ask

What does * * * * * mean in cron?
Every minute of every hour of every day. Each * means any value for that field: minute, hour, day of month, month and day of week.
Is Sunday 0 or 7 in cron?
Both, in Vixie cron and cronie. Vercel only accepts 0–6, and AWS EventBridge numbers days 1–7 starting with Sunday = 1, so use 0 for portability and let the platform tab convert it.
Why does my job run on days I didn't expect?
Probably the day-of-month / day-of-week OR rule. If both fields are set, cron runs when either matches. Set one of them to * to get the usual AND behaviour.
What time zone does cron use?
Whatever the scheduler uses: the server's zone for Linux cron, UTC for Vercel and EventBridge rules, UTC by default on GitHub Actions (with an optional timezone key) and the controller's zone on Kubernetes unless spec.timeZone is set.
Can cron run every 30 seconds?
No. The smallest unit is one minute. Use two entries with a sleep 30 in one of them, or a long-running worker for sub-minute work.
Does this tool send my expression anywhere?
No. Parsing, the explanation and the run times are all computed in your browser.
07

Platform docs used

08

More from the workbench

Fine print

Tools: on the house.
Engineer: by the hour.

Infra that doesn't page you at 3am costs a little more. I build background job systems with retries, alerting and dashboards.

I'm Himanshu, an AI and full-stack engineer. I build MVPs, AI agents and the growth plumbing around them for early-stage startups.