Server Time Checker

Show any website's server time live, down to the millisecond

Enter the address of a site to check, and see its server time live, down to the millisecond. Handy for hitting the exact moment a limited sale or registration window opens.

Browsers can't read another site's exact time directly (CORS restrictions), so our server makes one request to the address you enter, just to read its time — nothing else is stored.

How to use

  • Enter the site's address and press Check to see its server time.
  • The display turns amber in the last 5 seconds of each minute, red in the last 2, and flashes briefly as the minute turns over.
  • Press Open in PIP to float the clock in a small window while you browse other tabs or apps (desktop Chrome/Edge and Android Chrome). If the browser refuses PiP it falls back automatically to a full-screen clock that keeps the screen awake — which is usually what happens on iPhone Safari.
  • So drift never builds up, the clock re-syncs every 60 seconds (a brief "corrected" note appears below it) and fully re-measures the target site every 3 minutes. Corrections are eased in over 1.5 seconds so the digits never jump.
  • The precision shown (±ms) depends on the target site and network conditions — sites behind a CDN cache can show a larger error.

About Server Time Checker

This tool shows, to the millisecond, what "now" is according to the server behind the address you enter. Its only evidence is the Date header that web servers attach to every HTTP response. That header has one-second resolution (Tue, 22 Sep 2026 11:00:02 GMT), so the tool fires overlapping requests to catch the moment the second rolls over, estimates the offset to within milliseconds, and shows a ± figure for how far the estimate can be trusted.

It is built for moments when a page opens at an exact time — concert tickets, limited sneaker drops, university course registration — where the server's clock decides, not yours. Below: what the tool actually measures, how it removes network delay, and how much of the displayed number you can rely on.

Why the measurement goes through a relay

When a script in your browser calls another site, CORS rules let it read only a short list of response headers. Date is not on that list, so unless the site explicitly exposes it (almost none do), a web page cannot see it. The tool therefore asks a Cloudflare Worker to make server-to-server HEAD requests (falling back to GET if HEAD is refused) and return just the Date value. Requests carry no-cache headers so a cached response is less likely to slip in, and private or loopback addresses are refused.

Getting milliseconds out of a one-second header

For each probe the Worker notes, on its own clock, the time s just before sending and r when the reply arrives. The target stamped its Date somewhere between s and r, and at that moment its true time was between the header value d and d + 1 second. So the offset (target clock minus Worker clock) must lie in the interval [d − r, d + 1000 − s]. Each extra probe adds another interval; intersecting them narrows the range, and half its width is the uncertainty. It is the same interval reasoning NTP uses when combining samples.

Measurement runs in two passes: up to eight probes about 110 ms apart to bracket the second boundary roughly, then up to five overlapping probes aimed at the estimated boundary to tighten it. That is at most 13 requests to the target per measurement. If the intervals fail to overlap, which happens when a cached Date sneaks in, the tool knows the data are inconsistent and falls back to one-second precision.

In the last minute before a big on-sale, many people check the same site. The Worker shares a measurement among users for about 30 seconds. Because what it stores is the difference between two NTP-disciplined clocks rather than an absolute time, reuse costs almost nothing in precision, and the tool adds a drift allowance for the reuse age anyway.

Your own network delay is measured separately

The steps above give the target's clock relative to the Worker. To draw a clock in your browser, the tool also needs the Worker's clock relative to yours, which it gets from lightweight sync requests. It assumes the Worker read its clock at the midpoint of the round trip and, among several samples, keeps the one with the shortest round trip. A short round trip means less time spent in queues along the way, so the minimum is far more accurate than the average.

The ± on screen is the target measurement's uncertainty plus half that best round trip. The clock re-syncs every 60 seconds and re-measures the target every three minutes. Corrections under 0.4 seconds are eased in over 1.5 seconds so the digits never run backwards, and samples taken across a sleep/wake or system clock change are discarded.

Why a perfect clock still doesn't guarantee first place

The tool's real value is removing a common mistake: timing your click by a phone or PC clock that is off by a second or more. The "0.482s ahead of this device's clock" line shows exactly that gap; anything under 50 ms is shown as a match. Beyond that, several things are outside any clock's control.

  • The server you measure may not be the one that decides. A ticketing site's front page is often served by a CDN or web tier, while seats are allocated by a different back-end. They are normally NTP-synced and close, but the tool only vouches for the Date header of the address you enter, so use the same domain as the sale page.
  • Your click still has to travel. Within one country that is usually tens of milliseconds, but it varies with Wi-Fi quality and device load.
  • Many sellers put a waiting room in front of the sale, and queue position may not depend only on arrival time. Clicking before the opening often returns a "not open yet" page, and the reload can cost more than you gained.
  • An uncertainty of ±100 ms means the true time is somewhere in that band. Leave margin accordingly rather than trusting the last digit.

Worked examples

Narrowing the offset by intersection

Input
probe1: s=.300, r=.380, Date=:01 · probe2: s=.480, r=.540, Date=:02 · probe3: s=.430, r=.500, Date=:01 (Worker clock, all at 10:00:00)
Output
[+620, +1700] ∩ [+1460, +2520] ∩ [+500, +1570] = [+1460, +1570] → target is 1.515 s ahead, ±55 ms

Probe 2 already saw :02 while probe 3, sent slightly earlier, still saw :01. That squeezes the second boundary into a 110 ms window.

What the ± on screen means

Input
Target measurement ±55 ms; best browser↔Worker round trip 40 ms
Output
±75 ms

55 + 40/2 = 75. On a congested mobile connection the round trip, and the ±, grow.

Your clock versus the server

Input
Server 10:00:00.000 while the laptop shows 09:59:58.700
Output
"1.300s ahead of this device's clock"

Clicking when the laptop says 10:00:00 would really be 1.3 seconds late.

How to use it

  1. Enter the same domain as the ticket or registration page (https:// optional).
  2. Once the clock runs, note the ± figure and the difference from your own clock.
  3. Float it in picture-in-picture next to the sale page and use the colour cue near the top of the minute.

Frequently asked questions

How is this different from time.gov or an atomic clock site?

Those show official time. This shows the clock of the site you enter. Most servers are NTP-synced and close to official time, but the site's own clock is what decides, so measuring it directly removes the guesswork.

Why is the ± so large?

Long or jittery round trips, typical on mobile data and busy Wi-Fi, widen it. Leave the tool open; it switches to a tighter measurement when one comes in.

It only shows one-second precision.

The target returned cached or inconsistent Date headers, so the second boundary could not be pinned down. Try another page on the same domain, such as the login page.

How early should I click?

It depends on the site. Where early requests are rejected, click just after the opening; where there is a waiting room, aim for the opening itself. The tool can only tell you the server's time.

Sources

Last reviewed:

Privacy and how data is handled