Observation with clear boundaries
Calcomera helps you reproduce the symptom and compare conditions. The test does not replace hardware diagnostics, provider measurements, or manufacturer's instructions. Method version: 1.0, September 22, 2026.
Internet: one node and several different quantities
Stability and ping measure the time of an HTTP request to our node using the monotonous browser clock. This is HTTP RTT, not ICMP ping. The interval between samples is approximately a second, the timeout is 3 seconds. A failed sample does not show the exact duration of the break between observations. The median is the central value, p95 is the value below which approximately 95% of measurements lie. Jitter here is the average absolute difference of neighboring successful RTTs; this definition must be taken into account when comparing with other services.
Hidden tab, long pause of the timer and sleep are marked as observation pauses. The test does not promise monitoring with the browser closed. Features of background tabs - MDN.
The loss test sends about 20 numbered messages per second via WebRTC DataChannel, ordered=false, maxRetransmits=0. The server stores the numbers of received messages; after waiting a second for late responses, the client checks the log. Up non-delivery is counted from sent messages, echo non-delivery is counted from messages received by the server. These are application messages, not an exact IP packet counter. Failure to install a link is reported as an error rather than “100% loss.”
The speed test transfers a limited amount of data over HTTP. Time includes the request and response processing. The transfer is limited by the selected budget and time; a very fast channel may not have time to saturate. Bufferbloat compares the latency without load and during transmission. We do not assign a universal assessment of network quality based on one number. How WebRTC replays are configured - MDN.
Mouse, keyboard and gamepad
We count the events delivered to the browser. Rapid repeated clicks and keys are compared to a visible, customizable threshold. Deliberately quick input can also get into the counter. Auto-repeat KeyboardEvent.repeat is counted separately. The frequency of mouse events is estimated at intervals and is not reported as an exact USB frequency.
The sticks show the Gamepad API axes and deflection radius. The average for drift only makes sense when the sticks are stationary. The custom zone does not change the device firmware. For non-standard mapping, the order of the axes may differ. Gamepad API — MDN.
Sound and video
The camera and microphone are requested only after clicking. Streams are not sent to our server. Microphone RMS and peak levels are expressed in dBFS relative to the digital range, not in physical dB SPL. Without calibration, you cannot measure room volume using this method. The test prompts for processing options and shows the actual flow settings available. The maximum session is 60 seconds.
The stereo test creates channels, but does not measure sound at the ear. The tone generator does not test hearing health. The camera shows the available image and stream settings; This is not a sensor resolution certification. Media Permissions - MDN.
Audio file synchronization and analysis
The sync test schedules a short audio via AudioContext and draws a flash via requestAnimationFrame. The user selects the offset manually. This is a subjective compensation for a specific browser, display, and audio output; it is not the measured Bluetooth latency. The background tab stops the comparison. Web Audio Timeline - MDN.
The mono compatibility check accepts a local fragment of up to 60 seconds and 8 MiB. The browser decodes it to PCM 48 kHz. We calculate the RMS of the channels, the Pearson correlation with mean removal, and the mono-sum energy (L+R)/2 relative to the average energy of the two channels. We separately consider windows of about a second: a correlation below −0.3, together with a loss of more than 6 dB, is a reason to listen to a section, and not a universal defect. An empty channel and silence do not receive a fictional correlation score. This is not LUFS, true peak, or physical speaker testing. After decoding, a small residual is possible even with almost complete cancellation. The file remains in the browser. Audio Decoding - MDN.
Screen, touch and reaction
Color fields and gradients are intended for manual inspection. The page does not see physical defects of the matrix. The frame rate is calculated by the requestAnimationFrame, not by the measuring sensor. Touches are limited to the events that the OS and browser passed to the page. Reaction time includes device and screen latency.
The color clarity test draws alternating black-and-white and color stripes one pixel wide in the Canvas buffer, taking into account devicePixelRatio. Visually compare brightness and color detail. Scaling the OS, page, TV and video path can distort the sample. Requires native resolution, 100% page scale and no gesture zoom. The browser does not read HDMI/DisplayPort and does not automatically confirm RGB or 4:4:4. PNG 1024x640 in original size is available for repetition.
IP and CGNAT
Show the address of the current connection to the server. Comparison with WAN IPv4 helps to find signs of additional translation. VPNs, IPv6 and proxies can make comparison impossible. Public IP is not equal to static and does not prove open ports. General Addressing - RFC 6598.
Advertising and accuracy
On network test pages, advertisements and optional analytics wait until the measurement is complete. Re-measuring after loading the ad starts on a blank page. We do not add a wait for the sake of ad impressions and do not update ad units based on a timer.