GAMEPAD CHECK

BROWSER TIMING · TWO EXPLICIT ESTIMATES

Controller Input Latency Test (Browser Estimate)

Inspect browser observation age or run a separate ten-round human prompt exercise. Each mode stays local and keeps its limits visible.

TWO DISTINCT MODES · LOCAL TIMING

No controller selected

Compare a controller timestamp observation age or run a separate human prompt exercise. One estimate never substitutes for the other.

No controllers detected.

Waiting for controller

Browsers expose a controller after it sends an input. Keep this page active, then press a physical controller button.

Index
Not available
Mapping
Not available
Connected
No
Stale
No
Latency mode

Select a test button to begin.

PERFORMANCE.NOW − GAMEPAD.TIMESTAMP

Chosen rising-edge ages

0 retained

Latest age
Unavailable
Mean age
Unavailable
Minimum age
Unavailable
Maximum age
Unavailable

Local report

The report is created in this browser and downloaded directly to your device. Nothing is uploaded.

Raw controller samples are excluded unless you opt in. At most 5,000 samples are included.

Separate evidence models

What these browser estimates measure

The page provides two separate modes. Browser observation age subtracts a plausible Gamepad.timestamp from performance.now() on one chosen rising edge. Prompt-to-browser response time begins at a visible prompt and ends when the browser observes the first later rising edge. Neither value substitutes for the other.

Deliberate sequence

How to run both latency modes

  1. 01

    Connect, choose, and release

    Connect one controller, select it when more than one is visible, choose one raw button, and release that button before collecting an edge.

  2. 02

    Inspect observation age

    In Browser observation age mode, press the chosen button. A sample appears only when performance.now() and Gamepad.timestamp form a plausible 0–1,000 ms difference.

  3. 03

    Run the human exercise separately

    Switch to prompt-to-browser response time, start ten rounds, wait through each cryptographically randomized delay, and press only after PRESS NOW appears.

  4. 04

    Read and export with context

    Compare the exact mean, median, range, and population standard deviation, then opt in separately if bounded local samples should enter the JSON report.

Evidence boundary

Latency estimate limitations

Human response values include human reaction, display delay, browser scheduling, operating-system processing, controller transport, and the page's observation cadence. Browser age is only a timestamp comparison. An external physical reference is required for true end-to-end input latency; this page does not measure the physical event directly.

When a sample does not appear

Troubleshooting latency estimates

  • Keep this tab active and select one controller and one raw button.
  • Release a held button before pressing again so a new rising edge can occur.
  • Use the human mode only when secure cryptographic random values are available.
  • Restart after changing device, mapping, cable, Bluetooth connection, or browser.

Controller latency questions

Is browser observation age the controller's hardware latency?

No. It is the age of one browser-exposed controller timestamp when the page observes a chosen rising edge, and it is available only when the two monotonic clocks appear comparable.

Why are human response values much larger?

That separate exercise includes human reaction, display presentation, browser scheduling, operating-system input handling, and controller transport before the browser observes the press.

Why did an early press not count?

A press before PRESS NOW is deliberately rejected. Release the chosen button and wait for the next prompt so a held button cannot become a response edge.

Are latency samples uploaded?

No. Reports are built and downloaded locally, exclude the controller identifier and browser user agent, and include at most 5,000 samples only after explicit opt-in.