Every day at noon cron: what 0 12 * * * means and how to schedule a midday job
Runs in your browser — nothing you paste leaves this page. How we prove that
Cron Expression Tester playground
Five fields — minute, hour, day of month, month, day of week. Macros like @daily are supported too.
Results update as you type — press Enter to run now.
At 12:00.
- Computed in your browser, in your timezone.
`0 12 * * *` fires once a day at 12:00 in the cron daemon's timezone. The engine reads it as: At 12:00.
Reading 0 12 * * *
Cron hours run 0–23, so 12 is noon and midnight is 0; there is no AM/PM. Minute 0 pins the start to the top of that hour, and the wildcard date fields make it daily. Writing 0 0 12 * * by mistake puts the 12 in the day-of-month field and runs once a month, on the 12th, at midnight; field order matters more than anything else in cron.
The parser on this page reads it as: At 12:00. The next run times in the panel above are computed in your browser, in your own timezone, so they are not printed in this text.
A midday job in practice
Midday schedules usually exist for people rather than machines: a lunchtime digest email, a status report posted to a chat channel, a reminder. 0 12 * * * /opt/bots/standup-digest --channel ops >> /var/log/digest.log 2>&1 is a typical line. Because the audience is human, the timezone matters more than for a backup, and noon on a UTC server is 17:30 in India and 08:00 or 07:00 in New York depending on daylight saving.
Noon is also safely clear of every daylight saving transition, so the run is never skipped or repeated; it just moves by an hour relative to UTC twice a year if the server follows local time.
Running the same job twice a day
Hours accept lists, so 0 0,12 * * * runs at midnight and noon, and 0 */12 * * * is the same thing. If the job might still be running when the next one starts, the usual guard applies: flock -n /run/lock/digest.lock before the command.
systemd, Kubernetes and GitHub Actions
systemd: OnCalendar=*-*-* 12:00:00, and a timer can name its zone directly, for example OnCalendar=*-*-* 12:00:00 Europe/London. Kubernetes uses schedule: "0 12 * * *" with an optional timeZone. GitHub Actions treats 0 12 * * * as 12:00 UTC. Related: every day at midnight, and every weekday at 09:00 if the job should skip weekends.
FAQ
Questions, answered.
Tap a question to expand the answer.
How do I write noon on weekdays only?
Restrict the day-of-week field: 0 12 * * 1-5 runs at 12:00 Monday to Friday.
Does cron understand 12pm?
No. Cron uses a 24-hour clock with hours 0 to 23, so noon is 12, 1pm is 13 and midnight is 0.
More free, private DevOps tools.
The Cron Expression Tester is one tool in OpsCanopy — a growing canopy of browser-based validators, converters and testers that never touch a server.
More in Scheduling
Read more about this
- GitHub Actions cron runs in UTC: convert your schedule and check the real next run time GitHub Actions cron timezone UTC explained: why schedule: cron: always fires on UTC, how DST shifts the wall-clock time, and how to check the real next run.
- Reading cron expressions: a field-by-field guide A field-by-field guide to reading cron expressions — the five time fields, ranges, steps, lists and @macros — plus the gotchas that misfire schedules.
New to Linux? Read the Linux guide →
42 free tools, every one offline-capable — opscanopy.com works with no signup and nothing uploaded.
Scheduling on Linux? Pair this with the Cron to systemd Converter, or browse the full tools directory.
Not affiliated with or endorsed by any cron implementation. Format names are used only to describe what this tool reads. OpsCanopy is free and open.