Skip to main content

Cron every 12 hours

0 */12 * * *

At 0 minutes past the hour, every 12 hours, every day.

Next runs · UTC

Calendar

September 2026 · UTC

0 runs

The cron expression for every 12 hours

0 */12 * * *

The hour step */12 resolves to 0 and 12 - twice a day, at midnight and noon. Equivalent to 0 0,12 * * * (explicit list form).

See the dedicated guide for the full breakdown: Cron every hour.

Paste it into the editor above to see the next runs on a calendar.

When to run a job every 12 hours

  • Syncing data between two systems every 12 hours without hammering either side.
  • Rotating logs, cleaning temporary files, or compacting a database.
  • Digest emails and status reports that would be noise if sent more often.

Run this cron anywhere

0 */12 * * * is five-field cron syntax. It works as is in:

AWS EventBridge and Quartz use six-field expressions with a ? in one of the day fields, so convert first:

  • AWS EventBridge - cron(minute hour day-of-month month ? year); see the AWS guide.
  • Quartz Scheduler - prepend a seconds field (0) and replace one day field with ?; see the Quartz guide.

Useful variations

  • 0 0,12 * * * - explicit list form (equivalent)
  • 0 6,18 * * * - every 12 hours at 06:00 and 18:00
  • 0 0,12 * * 1-5 - every 12 hours on weekdays only

Gotchas when running every 12 hours

  • Anchored at midnight - The hour step starts at 0, so 0 */12 * * * runs at 00:00, 12:00 and so on regardless of when you installed it. Shift the phase with a range, for example 0 1-23/12 * * *.
  • Timezone and daylight saving - DST handling is scheduler-specific: Vixie/cronie can skip or double local matches; GitHub advances nonexistent local times; EventBridge Scheduler skips spring and runs once in the fall overlap. UTC-only Vercel and Cloudflare schedules are unaffected.

Examples

  • 0 18 * * *
    Every day at 18:00
  • 0 */5 * * *
    Every 5 hours
  • 0 18 * * 1-5
    Weekdays at 18:00
  • 0 0 1 * *
    Once a month, on the 1st at midnight

Cheatsheet

Full cheatsheet
FieldReq.RangeWildcards
minuteyes0-59, - * /
houryes0-23, - * /
day of monthyes1-31, - * /
monthyes1-12 or JAN-DEC, - * /
day of weekyes0-6 or names; some dialects use 0-7 or 1-7 — see Dialects, - * /

Frequently asked questions

Timing

Are 0 */12 * * * and 0 0,12 * * * equivalent?

Yes. Both mean midnight and noon every day, not 12 hours after deployment; the explicit list names the two clock hours directly. Expression: 0 */12 * * *

Open in editor
How do I avoid midnight and noon while keeping two daily runs?

Use 0 6,18 * * * for 06:00 and 18:00. Fixed names are clearer here than trying to imply an elapsed 12-hour timer. Expression: 0 6,18 * * *

Open in editor
How do I run every 12 hours at 00:30 and 12:30?

Use 30 0,12 * * *. The minute field moves both daily runs to 30 minutes past the hour. Expression: 30 0,12 * * *

Open in editor

Days and months

How do I run at midnight and noon on weekdays only?

Use 0 0,12 * * 1-5. It fires twice on Monday through Friday, but the Friday-noon to Monday-midnight gap is longer than 12 hours. Expression: 0 0,12 * * 1-5

Open in editor
Weekday cron guide
How do I run twice on each weekday at 06:00 and 18:00?

Use 0 6,18 * * 1-5. This is a pair of fixed weekday times, so weekend gaps intentionally break the 12-hour cadence. Expression: 0 6,18 * * 1-5

Open in editor
Business hours guide

Timezones and DST

Is a local twice-daily cron always 12 elapsed hours apart?

No. Vixie/cronie may produce an 11- or 13-hour gap; GitHub advances nonexistent local times; EventBridge Scheduler skips spring and runs once in the overlap. UTC-only Vercel and Cloudflare keep midnight and noon UTC exactly 12 hours apart.

Timezone and DST reference

Platforms

What is the AWS EventBridge expression for every 12 hours?

Use cron(0 0,12 * * ? *). EventBridge starts with minutes, includes year, requires ? in one day field, and wraps the six fields in cron(...). Expression: 0 0,12 * * ? *

Open in editor
AWS cron guide
What is the Quartz expression for every 12 hours?

Use 0 0 0,12 * * ?. Quartz adds seconds before minutes, and this explicit hour list selects midnight and noon. Expression: 0 0 0,12 * * ?

Open in editor
Quartz cron guide
Can GitHub Actions and Vercel Hobby run every 12 hours?

GitHub Actions supports twice-daily scheduling because it exceeds the five-minute floor. Vercel Hobby cannot because it permits only one cron invocation per day.

Cron dialect matrix

Debugging

Will cron replay a missed midnight or noon run?

No. Standard cron waits for the next matching clock time; store a checkpoint if the missed half-day window must be processed later.

Crontap

Can Crontap run a twice-daily HTTP job with retries?

Yes. Crontap can invoke the endpoint at midnight and noon with retries; make the operation idempotent so retry attempts are safe.

Schedule API calls

General

What is the cron expression for every 12 hours?

0 */12 * * *. Paste this into Linux crontab, Vercel cron, node-cron, robfig/cron, or a Kubernetes CronJob to run a job every 12 hours; AWS EventBridge and Quartz need the six-field form.

How can I verify this cron actually runs every 12 hours?

The editor above shows the next 30+ runs on a calendar in your local timezone, plus a plain-English description. If the calendar matches your intent, the cron is correct.

Does 0 */12 * * * work on every platform?

Linux crontab, Vercel cron jobs, node-cron, robfig/cron, and Kubernetes CronJob accept the five-field form as is. AWS EventBridge and Quartz use six-field expressions with a ? in one of the day fields; see the AWS and Quartz guides for the conversion. Vercel's free Hobby plan caps the minimum frequency at once-per-day; the Pro plan removes that cap.

What happens if the previous run is still going when the next one fires?

Most schedulers will start the new run anyway, leading to overlap. To prevent this, wrap the command with flock -n /tmp/myjob.lock /path/to/script.sh on Linux, or set concurrencyPolicy: Forbid on Kubernetes CronJob. Vercel and EventBridge may overlap runs if the previous one is still executing; make the handler idempotent.

Write the cron here. Run it on Crontap.

Point Crontap at any URL. Pick any cron. Done.

WordPress, Shopify, Railway, Cloud Run, Vercel, HubSpot, Ghost, your own box. If it answers HTTP, Crontap can drive it on a clock you can read, in the timezone that actually matters, and page you when something breaks.

1.9k+ teams · Free forever tier · No credit card