P2P Network Tester

Test WebRTC peer-to-peer latency, jitter, and packet loss between two browsers. No backend, no account.

ZERO UPLOAD · ALL LOCAL

What to look for

  • 100.64.0.0/10 (RFC 6598 IANA Shared Address Space)
  • Type 1 (direct), Type 2 (open cone), Type 3 (strict/symmetric)
  • Open, Moderate, Strict
  • the same external port returned across two different STUN server requests

If your router's admin panel reports Open NAT but the STUN probe still shows symmetric behavior, the ISP's carrier-grade NAT upstream is the likely cause.

What to look for

  • roughly 10-20% of connections
  • typically 20-80 ms extra round-trip time
  • can be limited to under 30 ms

Cone NAT types keep the external port consistent across destinations, which is exactly the property ICE hole-punching relies on; symmetric NAT breaks that assumption.

What to look for

  • RTT under 150 ms, jitter under 10 ms, loss 0%
  • RTT under 80 ms, jitter under 5 ms, loss under 0.5%

What to look for

  • below 1%
  • above 3%
  • 150 ms (about 300 ms RTT)

What to look for

  • below 30 ms
  • 30 to 80 ms
  • above 100 ms

What to look for

  • UDP 3478
  • 5349

What to look for

  • 20-byte UDP packet

What to look for

  • 40 to 80 ms

What to check on your router

  • ICE candidate type srflx means the router allows a direct path; relay means traffic goes through a TURN server
  • External port the same port across STUN servers means cone NAT; different ports mean symmetric NAT
  • Public IP an address in 100.64.0.0/10 means carrier-grade NAT from your ISP, above the router
  • UPnP confirm it is enabled in the router's admin panel or app before changing anything else

What this page covers

  • getUserMedia() requests camera/microphone access, returning a MediaStream
  • RTCPeerConnection manages ICE negotiation, the DTLS handshake, and SRTP key exchange
  • RTCDataChannel bidirectional message transport over SCTP/DTLS, independent of any media track
  • Browser support baseline RTCPeerConnection: Chrome 23+, Firefox 22+, Safari 11+, Edge 79+

What this page covers

  • RFC 1918 private ranges 192.168.x.x, 10.x.x.x, and 172.16.x.x, all translated to one public IP
  • Port forwarding a permanent NAT table entry routing a specific external port to one internal device
  • DMZ mode routes all inbound traffic on all ports to a single device, most routers allow only one at a time
  • IPv6 as the long-term fix gives every device a globally routable address, removing NAT traversal entirely

What to look for

  • 5 ms
  • 5 to 10 ms
  • above 20 ms

What to look for

  • 1%
  • 3%
  • 5%
  • 10%

What to look for

  • 1 to 5 seconds

What to look for

  • UDP 3478
  • 5349 (or 443 as a firewall-friendly fallback)
  • stun.l.google.com:19302
  • 49152-65535, over 16,000 simultaneous sessions

STUN only discovers addresses; it cannot relay traffic. Every general-purpose WebRTC deployment needs a TURN fallback as well.

What to look for

  • about 200,000 km/s
  • 1 to 5 ms lightly loaded, 20 to 50 ms congested

What this page covers

  • Offer/answer sequence createOffer() > setLocalDescription() > (signaling) > setRemoteDescription() > createAnswer()
  • "v=0" version line every SDP blob's first line, followed by session-level and per-media descriptions
  • a=candidate: lines carry each peer's ICE candidates within the SDP text
  • a=fingerprint: the DTLS certificate fingerprint that the handshake verifies against the remote peer's certificate

PROBING...

Public IP — NAT Type — Candidate Types — STUN Reachable — Gathering Time —

YOUR OFFER — COPY AND SEND TO PARTNER

PASTE PARTNER'S ANSWER HERE

PASTE PARTNER'S OFFER HERE

YOUR ANSWER — COPY AND SEND BACK

Current RTT— Average RTT— Min RTT— Max RTT— Jitter— Packets Sent— Packets Received— Packet Loss— ICE Candidate Type—

Accent line = RTT over time. Red markers = simulated packet drops.

Data Channel State — Packets Echoed —

  1. Wait for the automatic STUN probe to complete; it shows your public IP and NAT type.
  2. Choose a role: click "Start Session" on one browser to become the Initiator, "Join Session" on the other.
  3. Initiator: copy the offer SDP and send it to your partner (paste into their browser).
  4. Joiner: paste the offer, click "Generate Answer", then copy the answer SDP and send it back.
  5. Initiator: paste the answer and click "Connect". The live dashboard starts automatically once connected.
  6. Use the Simulated Loss and Artificial Latency sliders to test degraded conditions. Click "Stop Test" when done.

Why test peer-to-peer?

Most latency tools measure the path from your browser to a server (usually a low-latency datacenter with a direct backbone connection). Peer-to-peer tests are different: traffic travels through your router, your ISP, the remote ISP, and the other person's router. Dropped packets on that path are caused by congestion at your ISP, overloaded home networks, and NAT hairpin delays that no synthetic test can replicate.

What server-based pings miss

This tool is useful for diagnosing lag in video calls, gaming sessions, and remote desktop connections where traffic flows directly between participants. A server-based ping can look clean while the actual P2P path adds enough packet loss or variable delay to make a call, game, or remote session feel unstable.1 Because the probe traffic follows the same route your real applications take, you see the congestion and jitter that actually affect your sessions rather than the favourable path to a nearby datacenter.

A bandwidth test answers a different question than this tool does. A speed test measures how much data a well-connected server can push to you in a burst: its download and upload numbers describe throughput, and its ping is a bonus measurement to the test server itself. Between two specific peers, this tool measures the stability of the path instead: delay, variation in that delay, and loss along the route your actual sessions take. Neither number predicts the other, which is why a gigabit connection can still host a stuttering call. When your speed test looks great but your calls feel bad, the peer-to-peer path is the thing left to measure, and that is exactly what this probe exercises.

WebRTC and STUN

WebRTC is the browser API behind video calls, screen sharing, and arbitrary data exchange between peers.2 Under the hood, it uses ICE (Interactive Connectivity Establishment) to discover how two peers can reach each other, with STUN used for connectivity checks and mapped-address discovery.3 STUN servers are contacted briefly to discover your public IP and check whether your NAT allows incoming connections; no probe data passes through them.

How the STUN probe classifies your NAT

The STUN probe on page load reports likely NAT behavior rather than a permanent router label. Endpoint-independent mapping is friendlier to direct peer connections, while address-dependent or address-and-port-dependent mapping can make direct P2P fail and push the session toward a relay path.4 Briefly contacting a STUN server lets the tool observe how your router rewrites outbound packets. From that single exchange the tool can infer which mapping style your NAT is using without any persistent connection.

Seeing address-dependent or address-and-port-dependent behavior up front tells you whether a direct test with a remote partner is realistic. When that mapping style is present the session may fall back to a relay, so the probe saves you from attempting a connection that would fail partway through negotiation. This classification is specific to the moment of the test, since some routers switch behavior as their mapping table fills up.

Reading your metrics

RTT (round-trip time) is the total time for a probe packet to reach the other peer and return. Average and min/max values give a picture of baseline latency versus spikes. Jitter measures stability: low jitter means consistent delivery, and high jitter means audio and video will require buffering to compensate.5

P2P tester NAT and STUN analysis showing Full or Restricted Cone NAT, host and srflx candidates, STUN reachable and 143 ms gathering time
One run of the NAT probe: Full / Restricted Cone NAT, host and srflx candidates, STUN reachable, gathering done in 143 ms. The public IP is blurred.

What each metric tells you

Packet loss counts both simulated drops from the loss slider and real timed-out probes, which are packets that never return an echo within the timeout window. ICE Candidate Type shows whether the connection is direct on your LAN (host), traversing NAT (srflx), or relayed through a TURN server (relay).3 Seeing a relay candidate is a useful signal that NAT traversal failed and that traffic is taking a longer path through an intermediary, which usually adds latency.

The min and max RTT values help you separate brief congestion spikes from a consistently high baseline. A stable average with occasional outliers points to a transient overload somewhere on the path, whereas a consistently high minimum suggests the route itself is the bottleneck. Jitter combines with loss here: a connection with low average RTT but rising jitter is starting to show the kind of irregular delivery that breaks real-time audio and video playback.

Where you run the two sides changes what the numbers mean. Two browser windows on the same machine exercise only the local loopback path, so the RTT sits near the floor and the test can never show a real network problem; it is useful for learning the controls, not for diagnosis. Two machines on the same Wi-Fi add the wireless hop, where contention and retransmissions live; two machines on different internet connections traverse the full NAT-plus-ISP path this tool exists to test. Give the session time, too. Jitter and loss verdicts need an observation window long enough to catch periodic congestion, so let it run for several minutes rather than trusting the first ten seconds of a quiet line.

WebRTC Latency Test: Measure P2P Round-Trip Time

Round-trip time is the first number the tester reports, and it is the one most often misread. Because the probe travels through both routers, both ISPs and any NAT hardware between the two browsers, it measures the real path a call or game would use. The guide below explains what the RTT covers, what raises it, how to read your result and how to separate the delay your own router adds from the delay on the ISP path, wired and wireless.

WebRTC latency measures the actual peer-to-peer round-trip. Because traffic travels through both users' routers, ISPs, and any NAT hardware in between, the round-trip time you see here reflects real network conditions that server-based ping tools cannot replicate.1 A 20 ms server ping can coexist with 80 ms peer-to-peer latency on the same connection. Running two browser instances on different connections and completing the WebRTC handshake gives you the number your video conferencing software experiences when it routes a call directly between participants.

The STUN probe on this page runs automatically before the connection begins.2 Contacting public STUN servers from Google and Cloudflare, it discovers your public IP address and classifies your NAT type, which tells you whether your network supports a direct WebRTC data channel or will require relay infrastructure.3 Probe packets then travel directly between the two browser instances at 100 ms intervals, and each round-trip time lands on the live sparkline as it arrives.4

What round-trip time measures in WebRTC

Round-trip time in WebRTC is the elapsed time between one peer sending a probe packet and receiving the echo back from the other peer. Unlike a server ping, which measures the path to a datacenter, this measurement captures every router, switch, and NAT translation layer between the two browsers.5 Consequently, RTT values here are always higher than the same network's ping to Google.com. That gap represents the overhead of home router NAT, residential ISP routing, and any carrier-grade NAT sitting in between.Values below 30 ms indicate a direct LAN or very low-latency ISP path; values above 150 ms point to geographic distance, congested ISP links, or relay routing through TURN infrastructure.6

What causes elevated WebRTC RTT

Geographic distance is the largest single factor in peer-to-peer RTT. Light travels through fiber at roughly 200,000 km per second, so a trans-continental connection adds a physical minimum of 30 to 70 ms before any routing overhead.7 Building on this, ISP peering arrangements can add further delay; two connections on the same city block but served by different ISPs may route through distant peering points. Symmetric NAT forces all traffic through a TURN relay server, adding a server hop that typically contributes 20 to 60 ms depending on relay location.8 ISP congestion during peak evening hours raises RTT by 20 to 40 ms on many residential connections.9

Interpreting results and taking action

An average RTT below 50 ms with jitter under 5 ms indicates a healthy direct connection suitable for video calls and gaming. RTT between 50 and 150 ms with low jitter is usable for most real-time applications but may show buffering in video calls. RTT above 150 ms or jitter above 20 ms will produce audible artifacts in VoIP and visible stuttering in video.6

Using the ICE candidate type to prioritize fixes

Yet the most actionable signal is whether the ICE candidate type shows "srflx" (direct NAT traversal) or "relay" (TURN server path).3 Switching from relay to direct reduces RTT by the full relay server round-trip, typically 20 to 60 ms.8 Checking the candidate type before adjusting router settings avoids wasted effort on configurations that will not change the relay status. A relay path means the NAT topology prevents a direct connection, and no amount of local QoS tuning will bypass the need for the relay.

Isolating router-added latency from the ISP path

Total P2P RTT combines contributions from three distinct network segments: your local router's processing and queuing delay, the backbone routing between the two ISPs, and the remote peer's local routing. Treating the result as a single number hides which segment is responsible for elevated latency. The simplest isolation step is running both browser instances on the same local network using two different devices connected to the same router. The RTT produced by this same-LAN test reflects only router processing overhead and wireless delay, with no ISP path contribution.1

A typical wired same-LAN RTT is 1 to 4 ms; Wi-Fi adds 2 to 10 ms depending on band and distance from the router.10 Subtracting this baseline from a cross-ISP measurement isolates the ISP backbone contribution. For example, if same-LAN RTT is 3 ms and cross-ISP RTT is 80 ms, the ISP path contributes approximately 77 ms. Repeating the cross-ISP test with the remote browser on a mobile hotspot from a different carrier reveals whether the backbone routing or carrier-grade infrastructure adds the gap.

When to run a same-LAN baseline before comparing connections

Running a same-LAN baseline whenever you evaluate a router change or QoS configuration establishes a clean reference point. If a configuration change increases same-LAN RTT from 3 ms to 8 ms, the router itself has become slower, not the ISP path. This distinction prevents misattributing router-side regressions to the ISP. For Wi-Fi evaluation, compare same-LAN RTT on 2.4 GHz versus 5 GHz versus wired to quantify wireless overhead independently before testing across locations.

Comparing wired and wireless WebRTC latency

Switching from wireless to wired Ethernet is the single most effective step for reducing P2P RTT and jitter on a home network. Wireless connections introduce variable queuing from 802.11 frame retransmissions: when a frame fails on first transmission and is retransmitted, the retransmission delay (typically 2 to 8 ms at 5 GHz) adds a jitter spike to that packet's arrival time.11 On 2.4 GHz, neighboring network interference increases retry frequency, often producing 10 to 30 ms jitter on a lightly loaded connection.10

Connect one test device to Ethernet and leave the second on Wi-Fi, both on the same router, and run the P2P tester between them. The measured RTT reflects the wireless contribution to round-trip time, with no ISP path component. A 5 GHz device typically adds 2 to 8 ms over the wired baseline; a 2.4 GHz device on a congested band can add 10 to 30 ms.12

Determining whether excess RTT is wireless or ISP in origin

If your total cross-ISP RTT is unacceptably high, splitting same-LAN RTT from cross-ISP totals confirms whether the excess sits in the wireless segment or further upstream, comparing same-LAN RTT on Wi-Fi versus wired. Wireless excess shows in both same-LAN and cross-ISP measurements; ISP excess shows only in cross-ISP measurements. This two-step process prevents adjusting router wireless settings when the actual problem is an ISP backbone bottleneck that no router setting can address.

Running the same-LAN and cross-ISP measurements on a schedule keeps the reference points honest as your router firmware and ISP routing change. A baseline that drifts upward over several weeks usually points to ISP-side changes rather than your local hardware, especially when the same-LAN number stays flat. Treat the wireless-versus-ISP split as a repeatable routine, not a one-time check, so you can defend any router purchase or ISP complaint with current numbers.

Run this test when video calls feel laggy, when you want to compare wired and wireless connections, or when you need to verify that a router configuration change improved your direct peer-to-peer latency before committing to the change.

Both peers on the same ISP, different cities

RTT shows 45 ms with srflx ICE candidate. This is direct NAT traversal with normal intra-ISP routing. The 45 ms reflects geographic distance and ISP backbone latency, not a configuration problem.

One peer behind a corporate firewall

ICE candidate shows "relay" and RTT jumps to 140 ms. The corporate network uses symmetric NAT, forcing traffic through a TURN relay. Fixing this requires network configuration changes at the corporate level; the relay path is expected behavior.

Sources for this section
  1. 1.

    Kosuke Nakagawa et al., "WebRTC-based measurement tool for peer-to-peer applications and preliminary findings with real users," Asian Internet Engineering Conference (AINTEC '21), 2021. https://ar5iv.labs.arxiv.org/html/2112.02163

  2. 2.

    A. Keranen, C. Holmberg, and J. Rosenberg, "Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal," RFC 8445, IETF, July 2018. https://datatracker.ietf.org/doc/html/rfc8445

  3. 3.

    T. Reddy et al., "Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)," RFC 8656, IETF, February 2020. https://datatracker.ietf.org/doc/html/rfc8656

  4. 4.

    Mozilla Developer Network, "Introduction to WebRTC Protocols," developer.mozilla.org, accessed June 2026. https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Protocols

  5. 5.

    W3C, "Identifiers for WebRTC's Statistics API," w3.org, accessed June 2026. https://www.w3.org/TR/webrtc-stats/

  6. 6.

    ITU-T, "One-way transmission time," Recommendation G.114, itu.int, May 2003. https://www.itu.int/rec/T-REC-G.114-200305-I/en

  7. 7.

    Mozilla Developer Network, "RTCIceCandidatePairStats," developer.mozilla.org, accessed June 2026. https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidatePairStats

  8. 8.

    CallSphere, "Measuring Network RTT for AI Voice Agents in WebRTC," callsphere.ai, 2026. https://callsphere.ai/blog/vw8c-network-rtt-measurement-ai-voice-agents-2026

  9. 9.

    jitter.is, "Network Jitter vs. Round Trip Time in WebRTC," jitter.is, accessed June 2026. https://jitter.is/

  10. 10.

    Henrik Bostrom, "Making Sense of getStats in WebRTC," bloggeek.me, accessed June 2026. https://bloggeek.me/getstats/

  11. 11.

    Springer, "IEEE 802.11 Wireless LANs: Performance Analysis and Protocol Refinement," Wireless Communications and Networking, 2005. https://link.springer.com/article/10.1155/WCN.2005.67

  12. 12.

    Kaixin Sui et al., "Characterizing and Improving WiFi Latency in Large-Scale Operational Networks," MobiSys '16, 2016, pp. 347–360. https://dl.acm.org/doi/10.1145/2906388.2906393

FAQ

A standard ping measures the path from your machine to a server, usually a well-connected datacenter. This test measures the path between two browser instances using the actual WebRTC stack, including NAT traversal and any relay infrastructure the ICE negotiation selects. The two numbers differ on most residential connections.

Most video call applications perform well below 150 ms RTT. Jitter matters more than RTT at moderate latency levels. An RTT of 100 ms with 2 ms jitter is more comfortable than 60 ms RTT with 30 ms jitter. The call application buffers for jitter but cannot remove fixed latency.

WebRTC is a peer-to-peer protocol that measures the path between two endpoints, not from one endpoint to a server. Running both roles in the same browser on the same machine would measure localhost loopback latency, not real network conditions. Use two devices on different network connections for meaningful results.

Relay means your connection routes through a TURN server because direct NAT traversal failed. This adds the server as an intermediate hop, increasing RTT by the distance to the relay server. Symmetric NAT is the most common cause; check your router's NAT type setting and enable UPnP if available.

No. The STUN probe contacts public Google and Cloudflare servers briefly to discover your public IP; that contact is standard WebRTC behavior. Probe packets travel directly between the two browser instances. No measurement data, IP addresses, or SDP content is sent to or stored by CapyToolkit.

Browser Packet Loss Test: Measure P2P Drop Rate

Packet loss breaks real-time traffic in a different way from latency: a dropped packet becomes a click in a voice call, a frozen frame in video or a desync in a game. The guide below covers what causes peer-to-peer loss, how the tester's simulated loss differs from real loss on your connection, the loss levels each kind of application tolerates, and how bufferbloat turns a busy upload into bursts of dropped packets.

Packet loss breaks real-time communication in ways latency does not. A dropped packet in a voice call produces a click or silence; in a video stream it causes a freeze or artifact; in a game it causes desync or rubberband lag. Unlike latency, which increases slowly under congestion, packet loss can jump from 0% to 5% suddenly when a link reaches saturation, then drop back to 0% between bursts, making burst testing over a sustained period far more informative than a single-measurement tool.1

This tester sends probe packets directly between two browser instances over a WebRTC data channel, with probes every 100 ms. Any probe that does not return an echo within 2 seconds counts as a lost packet. Because the traffic follows the actual peer-to-peer path (through your router, ISP, and the remote peer's ISP), the loss reading reflects the real conditions your video call or game session experiences, not the cleaner path to a nearby server.

What causes peer-to-peer packet loss

ISP link saturation is the most common cause of P2P packet loss at home. When your upload bandwidth is fully consumed by another application (a file upload, a video stream, or a background system update), the router drops new packets because the outbound queue is full.2 This type of loss affects all connections using the same ISP link simultaneously, not just the WebRTC stream.

How wireless interference produces a different loss signature

Wireless interference produces a different pattern from ISP saturation: short bursts of 2 to 5% loss while the radio retransmits corrupted frames, followed by clean recovery once the interference subsides. Building on this distinction, comparing loss on Wi-Fi versus wired separates radio-layer loss from ISP-layer loss immediately. Run the test on both connections back to back; if loss disappears on Ethernet, the wireless link is the source rather than your ISP.

Simulated loss versus real loss in this tool

This tool displays two loss values: simulated loss from the slider control and real loss from timed-out probes. The simulated loss slider drops outbound packets at the send layer before they enter the network, which is useful for testing how your application handles degradation at a known rate. Real loss counts probes that were transmitted but never echoed back within 2 seconds. Consequently, you can compare the two: if simulated loss is 0% and real loss is 2%, your ISP path is dropping 2% of packets independently of the simulation. Yet if simulated loss matches the slider value exactly and real loss is 0%, your ISP path is clean.

Acceptable packet loss thresholds for real-time applications

Voice calls become noticeably degraded above 1% packet loss. At 3% loss, VoIP codecs skip syllables and callers ask for repetition.3 Video calls tolerate slightly more loss; most codecs recover with a single-frame artifact up to 2 to 3%, but sustained 5% loss breaks adaptive bitrate systems and forces resolution drops.3 Gaming is the most sensitive: 1% loss on a 20 Hz game server tick causes one missed update per 5 seconds, which produces visible desync.4 Conversely, file transfers and web browsing tolerate 5 to 10% loss transparently through TCP retransmission, which is why loss often goes unnoticed until real-time applications expose it.5

Bufferbloat and queue saturation as a source of burst loss

Bufferbloat describes a condition where a router's outbound queue grows large enough to absorb a substantial fraction of available bandwidth before overflowing.1 During the overflow, the router drops all arriving packets until the queue drains. This produces a burst loss pattern: zero loss during normal traffic, a sudden 3 to 10% burst when a file upload or video stream fills the queue completely, then a return to zero. The burst coincides with a large RTT spike visible in the sparkline, because packets that eventually drop waited in the queue while RTT climbed.

Pure path loss (a physical link dropping packets due to RF errors or hardware failure) distributes drops randomly and does not correlate with RTT increases. Bufferbloat loss, by contrast, always coincides with elevated RTT because queued packets experience the same delay before dropping. Watching the sparkline for simultaneous RTT elevation and loss accumulation identifies bufferbloat as the source. A router running an Active Queue Management algorithm such as CAKE or fq_codel eliminates bufferbloat by limiting queue depth proactively rather than waiting for the queue to overflow.2

Using RTT and loss together to diagnose bufferbloat

Start a large file upload in a separate browser tab while the loss test runs, then watch RTT and loss spike together: if RTT climbs from 20 ms to 200 ms and loss simultaneously rises above 1%, the router queue is full. Stopping the upload should return both RTT and loss to baseline within a few seconds. If loss persists after RTT recovers, the source is the ISP path rather than the local queue. The correlation between RTT elevation and loss accumulation is the definitive signature of bufferbloat: when both metrics spike together and recover together, the local router queue is the bottleneck rather than the ISP backbone or the remote peer's connection.

Testing application resilience with the simulation slider

For developers verifying how a VoIP client or video conferencing tool handles network degradation, the simulation slider introduces a controlled loss source without requiring a degraded ISP path. Setting the slider to 3% while your application runs on the same connection reveals whether the codec's packet concealment activates at the correct threshold and whether the adaptive bitrate logic responds within the expected time window. The simulation operates at the send layer: probe packets are dropped before entering the network stack, producing a precise application-layer loss condition independent of the actual ISP path quality.

Pairing the loss slider with the artificial latency slider replicates typical evening-congestion conditions: 80 ms of simulated latency alongside 3% loss recreates a congested residential ISP path during peak hours. Running your application through this combined degradation for five minutes tests sustained behavior rather than a transient response. CapyToolkit does not inject any additional network conditioning beyond what the sliders you configure specify, so you remain in full control of the test parameters throughout the session.

Interpreting simulated versus real loss counters

The tool displays simulated loss and real loss as separate counters. When the slider is at 3% and real loss shows 0.2%, your ISP path contributes 0.2% independently of the simulation. If the ISP path itself produces 3% loss alongside the simulated 3%, your application receives 6% total. Tracking both counters separately gives an accurate picture of what the application actually experiences under combined conditions. This separation is particularly valuable when you are evaluating a video conferencing platform's performance: the slider tests how the codec handles a known degradation rate while the real counter reveals whether your ISP path adds additional loss on top of that simulation.

This split view also helps you judge whether a router upgrade will actually help, because only the real counter reflects the path your traffic truly traverses. If the simulated slider matches your target but real loss stays high, the bottleneck is the link itself rather than the application's handling of degradation. Keeping both numbers visible during a sustained test prevents you from mistaking codec concealment for a clean connection when the underlying path is still dropping packets.

Run this test when voice calls produce clicks or dropouts, when gaming sessions show rubberbanding that a ping test does not explain, or when you suspect your ISP path to a specific geographic region drops packets under load.

3% real loss during evening hours, 0% loss in the morning

Evening packet loss points to ISP congestion on shared neighborhood infrastructure during peak hours. The test confirms the loss exists on the P2P path. Contact your ISP with timed screenshots of the loss readings to document the congestion window.

High loss on Wi-Fi drops to 0% on wired connection

The loss is in the wireless link, not the ISP path. Check the 2.4 GHz vs 5 GHz band allocation on your router and move the device to 5 GHz to reduce interference. The P2P test isolates radio-layer loss from ISP-layer loss.

Sources for this section
  1. 1.

    "Bufferbloat," Wikipedia, accessed June 2026. https://en.wikipedia.org/wiki/Bufferbloat

  2. 2.

    T. Høiland-Jørgensen et al., "Flow Queue-CoDel Packet Scheduler and Active Queue Management Algorithm," RFC 8290, IETF, January 2018. https://www.rfc-editor.org/rfc/rfc8290.html

  3. 3.

    ITU-T, "Transmission impairments," Recommendation G.113, itu.int, September 2024. https://www.itu.int/rec/T-REC-G.113-202409-I/en

  4. 4.

    Lasse Lumiaho and Varun Singh, "The Big Churn — learning from real usage stats," webrtchacks.com, March 2016. https://webrtchacks.com/usage-stats/

  5. 5.

    "TCP congestion avoidance algorithm," Wikipedia, accessed June 2026. https://en.wikipedia.org/wiki/TCP_congestion_avoidance_algorithm

FAQ

CapyToolkit does not operate any server-side loss measurement, so every reading you see reflects the actual path between the two browser instances you connected. ISP speed tests measure the path from your device to a nearby test server. This tool measures the path between two browser instances using the actual WebRTC stack. The peer-to-peer path traverses both ISPs and any peering points between them, which the server-to-client path avoids.

Any probe packet that does not receive an echo within 2 seconds counts as lost. The 2-second timeout is generous; most genuine packet loss produces no echo at all rather than a delayed one.

Yes. Run one browser instance on a device in each location and complete the WebRTC handshake. The probe traffic follows the actual inter-country peer-to-peer path. Test without VPN for accurate path measurements; VPN usage by either peer routes traffic through the VPN server instead.

Brief 100% loss followed by recovery usually indicates a router or switch in the path rebooting or re-negotiating a link. The ICE connection may briefly enter the "disconnected" state. If reconnection is automatic and loss returns to 0% within 10 seconds, the underlying path recovered normally.

The simulated loss slider drops packets at the sender before they enter the network. The receiving peer sees real packet loss equal to the slider value and adds it to the cumulative loss counter. The sender does not add these drops to its own loss counter; only truly lost probe responses increment the sender's loss figure.

Loss and latency simulation

The simulation controls let you introduce artificial conditions to test how your application behaves under degraded network quality. Sliding the loss rate simulates a congested link, and setting artificial latency approximates a longer or more contended path. Both effects appear immediately on the sparkline so you can watch your metrics react in real time as you move the sliders.

How packet drops are simulated

Simulated drops are applied at the send layer, so the packet is never actually transmitted and the other peer never sees it. The visual effect on the chart is identical to real loss: a red marker appears at that probe position, and the loss counter increments as though the packet had vanished somewhere on the path. This lets you model the experience of running over unreliable links without leaving your desk.

Applying a fixed latency offset is useful for modelling what happens when traffic crosses a long distance or passes through a slow intermediary. A small offset of 50 to 100 milliseconds hardly registers in conversation, but combined with high loss it quickly makes a session feel sluggish and unreliable, which is a realistic picture of many mobile and satellite links.

Jitter thresholds for real-time applications

Different real-time applications tolerate jitter very differently. Opus is designed for interactive audio such as VoIP, videoconferencing, and in-game chat, with frame sizes that can range from 2.5 ms to 60 ms depending on mode and layer.6 That flexibility helps applications adapt to network conditions, but variable delay can still become audible when it exceeds what the receiving side can absorb. Games and remote desktop sessions can also feel uneven when packets arrive irregularly, even if average latency looks acceptable. Measuring jitter between your actual peers rather than to a datacenter reveals whether your network introduces variable delay that affects those applications.

The tool calculates jitter using the RFC 3550 exponential weighted moving average formula, the same method used by RTP endpoints in voice over IP systems.1 This smooths momentary spikes without hiding sustained instability. If your average RTT is stable but your jitter is high, the cause is usually Wi-Fi retransmissions, CPU contention on a shared device, or bufferbloat on a home router processing multiple concurrent streams. Running the test while replicating your real usage conditions, including other active devices on the same network, gives a more accurate diagnosis than testing on an otherwise idle connection.

For raw latency, voice guidance gives the most defensible anchor. ITU-T Recommendation G.114, the one-way transmission time standard for voice, treats roughly 150 ms of one-way mouth-to-ear delay as the point where most users start noticing the lag in a conversation.7 This tool reports round-trip time, so the honest translation doubles that budget: an RTT hovering near 300 ms means each direction is consuming about the whole allowance before you add processing the probe cannot see. Anything comfortably below that leaves headroom. Run your own session above and compare the reported average against that voice budget, and you have a concrete answer to whether your path is good for conversation, not just a number.

Network Jitter Test: Measure Connection Stability

Jitter is the variation between one packet's delay and the next, and it hurts calls more than a steady high latency does. An 80 ms connection with 2 ms of jitter feels stable, while the same average with 25 ms of jitter breaks up. The guide below covers what causes jitter, the thresholds for different applications, how to reduce it at the router and how Wi-Fi retransmissions and call platforms' jitter buffers shape what you hear.

Jitter undermines smooth real-time communication more than consistent latency. A connection with 80 ms average RTT and 2 ms jitter feels stable in a video call; the same 80 ms average with 25 ms jitter produces audible skips and video freezes as the adaptive buffer cannot absorb the irregular arrival pattern. Jitter is the standard deviation of packet arrival times; high jitter means some packets arrive much earlier and some much later than the average, forcing the receiver to buffer more aggressively or drop frames.1

This tester measures jitter using an RFC 3550 exponential weighted moving average applied to the probe packet round-trip times. Probes travel directly between two browser instances every 100 ms, and the jitter statistic updates continuously as new samples arrive. Because probes follow the actual peer-to-peer path through both ISPs and both routers, the jitter value reflects real conditions your audio and video applications experience.

What causes network jitter

Queue buildup at an intermediate router is the most common source of jitter on residential connections. When a router's outbound queue fluctuates between empty and partially full as traffic bursts arrive and depart, packets experience variable queuing delay that produces jitter without increasing average RTT substantially. The effect is most noticeable during large file uploads competing with real-time traffic.

How Wi-Fi retransmissions add radio-layer jitter

Wi-Fi introduces a second source: radio retransmissions add an additional backoff delay when a frame fails on the first attempt, producing a spike on specific packets rather than a uniform delay increase. Building on these two sources, comparing jitter on wired versus wireless connections on the same ISP separates radio-layer jitter from network-layer jitter immediately. The distinction matters because each source requires a different fix: network-layer jitter responds to QoS configuration on the router, while radio-layer jitter requires a band change or channel switch.

Acceptable jitter thresholds for different applications

VoIP applications tolerate up to 20 ms jitter when a jitter buffer is active. Above 30 ms, even well-tuned jitter buffers introduce audible gaps because the buffer must grow large enough to absorb the timing variation, adding a corresponding fixed latency.2 Video conferencing applications adapt more readily (adaptive bitrate encoding absorbs some jitter by varying resolution), but above 40 ms of P2P jitter, visual artifacts become frequent.3 Consequently, a jitter reading below 10 ms at the P2P layer indicates a stable path. Readings between 10 and 30 ms suggest moderate congestion. Readings above 30 ms warrant investigation of Wi-Fi channels, router QoS settings, or ISP-level congestion.

Reducing jitter at the router level

Quality of Service (QoS) settings on the router prioritize real-time UDP traffic over bulk TCP transfers, preventing file downloads from filling the outbound queue and causing jitter for concurrent voice or video traffic. Most modern routers expose QoS controls under their WAN or traffic management settings. Enabling real-time media priority dramatically reduces jitter caused by competing background transfers. Furthermore, switching from a congested 2.4 GHz band to 5 GHz reduces wireless-layer jitter by avoiding interference from neighboring networks. For persistent jitter above 20 ms on a wired connection, the source is likely the ISP path itself. CapyToolkit's jitter tester built on live WebRTC probes lets you validate whether a QoS change actually reduced the jitter your real-time applications experience, rather than relying on the router's internal traffic counters alone.

802.11 retransmission mechanics and radio-layer jitter

Wi-Fi jitter originates at the 802.11 MAC layer before packets reach the IP stack. The 802.11 standard uses CSMA/CA (Carrier Sense Multiple Access with Collision Avoidance): each device waits for the channel to be idle, then waits an additional random backoff period before transmitting.4 When two devices transmit near-simultaneously, both defer for a longer backoff period and the deferred frame arrives late at the IP layer as a jitter spike. On a lightly loaded 5 GHz network with few neighboring networks, this backoff process adds 1 to 5 ms per collision event. On a congested 2.4 GHz channel shared with neighboring Wi-Fi networks and Bluetooth devices, collision frequency increases substantially, raising jitter to 10 to 30 ms per affected packet.

802.11 frame retransmission compounds this effect. When a transmitted frame is not acknowledged by the receiver (due to signal fading or interference), the 802.11 MAC retransmits up to seven times before declaring the frame lost.5 Each retransmission attempt takes 1 to 3 ms at 5 GHz, adding a jitter spike proportional to the number of retransmissions needed.

Confirming radio-layer versus ISP-layer jitter

Run the jitter test simultaneously on a wired connection and on the Wi-Fi connection for the same router. The wired result shows ISP-layer jitter; the Wi-Fi result shows ISP-layer plus radio-layer jitter combined. Subtracting the wired result from the Wi-Fi result isolates the radio contribution. If radio-layer jitter exceeds 10 ms on a 5 GHz connection, check the router admin panel for neighboring networks sharing the same channel and switch to a less congested channel.

How jitter buffers in video conferencing platforms respond to P2P jitter

Jitter buffers in video conferencing applications hold incoming audio packets temporarily before playing them, smoothing out arrival variation at the cost of a fixed delay equal to the buffer depth.6 Zoom, Microsoft Teams, and Google Meet all implement adaptive jitter buffers that grow when measured incoming jitter increases and shrink when the path stabilizes. A P2P jitter of 15 ms causes the adaptive buffer to maintain a depth of approximately 20 to 25 ms, adding a corresponding fixed delay to every call. Sustained jitter above 40 ms forces the buffer beyond its practical ceiling, causing the application to drop packets that arrive outside the buffer window.3

Understanding the relationship between measured P2P jitter and call quality provides meaningful improvement targets. Reducing jitter from 30 ms to 8 ms allows the application's jitter buffer to halve its depth, reducing the buffer-induced fixed delay by approximately 15 ms on top of the jitter improvement itself. This reduction is perceptible to callers because the total end-to-end delay drops by a corresponding amount, making the conversation feel more natural and responsive for everyone on the call.

Verifying jitter improvement after a QoS or band change

After enabling QoS or switching from 2.4 GHz to 5 GHz, run the jitter tester for at least five minutes while performing normal activity on the same network. A QoS change that reduces jitter from 25 ms to 5 ms during a competing file download confirms traffic prioritization is working correctly. If jitter remains above 15 ms even on a lightly loaded network, the ISP path is the source, and router-side QoS provides no benefit for upstream congestion.

A clean before-and-after comparison matters most because jitter can vary hour to hour on a shared neighborhood link regardless of your router settings. If the post-change reading looks good at midnight but climbs again at eight in the evening, the improvement is real but the ISP congestion remains the dominant factor. Re-running the verification during the same busy window that prompted the change gives a fair measure of whether the QoS or band adjustment actually moved the number you care about.

Run this test when voice calls have audio skips that a latency measurement does not explain, when video calls stutter despite adequate bandwidth, or when you want to confirm that a QoS configuration change reduced real-time traffic jitter.

35 ms jitter on Wi-Fi drops to 4 ms on wired Ethernet

The jitter is in the wireless link. Switch the device to 5 GHz or use wired Ethernet for latency-sensitive applications. The ISP path itself is clean; this is a radio-layer problem.

Jitter spikes every evening at 7 to 9 pm then drops overnight

Time-correlated jitter points to ISP backbone congestion during peak hours. Document the timing with screenshots and contact the ISP. This is a network-layer issue outside the router that the user cannot fix independently.

Sources for this section
  1. 1.

    H. Schulzrinne et al., "RTP: A Transport Protocol for Real-Time Applications," RFC 3550, IETF, July 2003. https://datatracker.ietf.org/doc/html/rfc3550

  2. 2.

    ITU-T, "One-way transmission time," Recommendation G.114, itu.int, May 2003. https://www.itu.int/rec/T-REC-G.114-200305-I/en

  3. 3.

    Fengdeng Lyu, "How WebRTC's NetEQ Jitter Buffer Provides Smooth Audio," webrtchacks.com, 2024. https://webrtchacks.com/how-webrtcs-neteq-jitter-buffer-provides-smooth-audio/

  4. 4.

    B. Aboba et al., "Architectural Implications of Link Indications," RFC 4907, IETF, June 2007. https://datatracker.ietf.org/doc/html/rfc4907

  5. 5.

    "IEEE 802.11," Wikipedia, accessed June 2026. https://en.wikipedia.org/wiki/IEEE_802.11

  6. 6.

    ITU-T, "Transmission impairments due to speech processing," Recommendation G.113, itu.int, September 2024. https://www.itu.int/rec/T-REC-G.113-202409-I/en

FAQ

CapyToolkit reports both values side by side so you can see whether your connection problem is consistent delay or inconsistent timing variation. Latency is the average time for a packet to complete a round trip. Jitter is the variation in that time from packet to packet. High latency delays all packets equally; high jitter means some packets arrive much earlier or later than others, disrupting the timing that real-time applications depend on.

RFC 3550 is the RTP standard used by VoIP and video conferencing systems. Its jitter formula weights recent samples more than older ones, producing a smoothed value that matches how real VoIP codecs experience jitter. Raw standard deviation over a fixed window would show higher peaks but hide the sustained level.

Yes for all common real-time applications. VoIP, video conferencing, and interactive gaming all perform well below 10 ms jitter. Higher-bandwidth applications like 4K video streaming are jitter-tolerant because their larger buffers absorb timing variation.

QoS reduces jitter caused by competing traffic on your local connection. It cannot reduce jitter originating from congestion on the ISP backbone, peering points, or the remote peer's ISP. Well-configured QoS typically reduces local jitter from 20 to 40 ms down to 2 to 5 ms for the real-time traffic it prioritizes.

A large download fills the outbound queue momentarily before QoS kicks in, producing a transient jitter spike. The spike resolves once the router's traffic shaping establishes priority for real-time UDP packets. If the spike is large (above 50 ms) and sustained, your router's QoS may not be classifying the real-time traffic correctly.

Network Stability Test: Measure Jitter and Loss Over Time

A single short sample can hide instability that only shows up over minutes, such as a jitter spike or a burst of loss every time a background upload starts. The guide below shows how to read the tester's live chart for those patterns, how to tell a passing blip from a sustained problem, how to stress-test the link with the simulation sliders and how to match a bad stretch to your router and system logs.

Network stability shows up over time, not in a single sample. A connection that reports 5 ms average RTT and 0% loss in a 10-second window may experience 30 ms jitter spikes and 2% loss bursts every 90 seconds as background processes contend for bandwidth. Single-shot speed tests and brief ping runs miss these patterns entirely. Sustained P2P testing over 2 to 5 minutes captures the variance that brief tests obscure, revealing whether a connection is genuinely stable or only appears stable during idle windows.

This tool runs WebRTC probe packets at 100 ms intervals between two browser instances continuously for as long as the session remains open. The sparkline visualizes individual RTT values over time, and the running jitter and loss statistics accumulate across the full session. Patterns visible in the sparkline (periodic spikes, sustained elevation, or gradual drift) each point to different root causes that a single average number cannot reveal.

Identifying instability patterns in the sparkline

Periodic RTT spikes at regular intervals (every 30, 60, or 120 seconds) indicate a background process waking up and consuming bandwidth or CPU. Common causes include backup software, system update checks, antivirus scans, and router firmware processes. Sustained RTT elevation that appears gradually then subsides points to ISP congestion accumulating on a shared link during peak hours. Random intermittent spikes with no pattern suggest wireless interference or packet queue management in the router. Consequently, running the test for at least five minutes and noting the time when spikes occur gives you enough data to correlate with system activity logs. CapyToolkit's sparkline updates in real time as each probe returns, so you can identify the exact moment a spike occurs and cross-reference it with other activity on your network.

How to distinguish the three common sparkline shapes

Periodic spikes at fixed intervals point to a scheduled process on your network, while sustained elevation that builds gradually points to ISP congestion on a shared link. Random intermittent spikes with no timing pattern point to wireless interference or router queue management. Recognizing which shape you are seeing narrows the cause to a specific category before any configuration changes are attempted.

Distinguishing transient from sustained instability

A single packet spike to 200 ms in an otherwise clean 15 ms stream is transient (a momentary queue buildup that resolved immediately). Sustained instability is a different condition: RTT that stays elevated above 50 ms for 10 or more consecutive seconds, or loss that accumulates above 1% over the full session1. Building on this distinction, the test displays both current values and running totals; comparing the current value against the session total reveals whether an observed spike is a brief outlier or part of a sustained degradation. Running the test across different times of day confirms whether the instability is time-correlated, which is the first step toward determining whether the cause is local (a scheduled process on your network) or external (ISP congestion that affects many subscribers simultaneously).

Using simulation to stress-test connection stability

The artificial latency slider adds a fixed delay to all outbound probes, simulating a higher-latency path. Combining this with the loss slider at 1 to 2% replicates typical peak-hour ISP congestion conditions. Running this simulated stress load for five minutes while monitoring whether the RTT remains stable rather than compounding upward confirms whether the connection can sustain a degraded baseline without further deterioration. Furthermore, starting a large file transfer in the background while the stability test runs reveals how the connection behaves under combined load: a well-configured QoS router maintains stable probe RTT despite the competing download. The simulation operates at the send layer, so the degradation you introduce with the sliders is independent of the actual ISP path quality, allowing you to test worst-case scenarios even when your current internet connection is clean.

Active Queue Management algorithms and long-running stability

The queue management algorithm a router uses has a direct effect on long-running stability results. Traditional FIFO (First In, First Out) queuing with tail-drop discards packets when the buffer overflows and allows the queue to grow large during traffic bursts, producing RTT spikes that persist until the queue drains. CAKE (Common Applications Kept Enhanced)2 and fq_codel (Fair Queuing Controlled Delay)3 are Active Queue Management algorithms that limit queue depth proactively, keeping RTT stable even under sustained load. Routers running OpenWrt, ASUSWRT-Merlin, or DD-WRT can enable CAKE as the queuing discipline on the WAN interface, replacing the default FIFO queue.

A stability test run for five minutes with CAKE enabled shows a flat sparkline under load: RTT stays near baseline even when a large file download is running simultaneously on the same connection. The same test on a FIFO router shows RTT rising from 15 ms to 200 ms as the download fills the queue, producing instability that affects all real-time traffic. Checking whether your router firmware supports CAKE or fq_codel and enabling it under the WAN interface QoS settings is the most impactful single configuration change for long-running stability metrics.

Enabling CAKE on OpenWrt or Merlin firmware

On OpenWrt, install the sqm-scripts package and configure it via Network > SQM QoS. Set the download and upload rates to 90% of your ISP connection speed, select "cake" as the queue discipline, and "piece_of_cake" as the script4. On ASUSWRT-Merlin, navigate to Adaptive QoS, enable it, and set the upload and download bandwidth to match your ISP plan. After enabling AQM, re-run the stability test under load and verify that RTT no longer spikes above 1.5x the idle baseline5.

Correlating stability readings with router and system logs

Stable RTT that spikes at exactly regular intervals (every 30, 60, or 300 seconds) reflects a scheduled process rather than random network congestion. On Windows, Task Scheduler runs maintenance tasks on fixed intervals; scheduled tasks generating network traffic (Windows Update checks, telemetry uploads, antivirus definition downloads) create predictable RTT spikes. On macOS, the mds_stores (Spotlight indexing) and cloudd (iCloud sync) processes generate periodic upload bursts. Matching the spike interval in the stability test sparkline to a scheduled task in the system's task scheduler or process log identifies the culprit without requiring packet capture.

Router firmware logs record WAN link events, DHCP renewals, and QoS queue overflows with timestamps. Downloading the router log after a stability test session and comparing timestamps of RTT anomalies in the sparkline against log entries at the same timestamps reveals whether the instability originated at the WAN interface or inside the LAN. Most consumer routers expose system logs under Administration > System Log.

Combining device traffic monitoring with the stability test

Pairing this stability test with ASUS, TP-Link, or Netgear's per-device traffic page shows in real time which LAN device generates bandwidth at each spike timestamp. Identifying which device causes a burst at each spike narrows the cause to a specific device and application before any configuration changes are attempted. For persistent instability where device-level traffic shows no burst, the source is the ISP path itself, confirmed by running the test from a different network connection and observing whether the pattern disappears.

Correlating the two views removes the guesswork of blaming the ISP when a household device is actually the cause of the spike. A laptop backup or phone sync that lines up exactly with each anomaly in the sparkline is far easier to fix than a vague complaint to your provider about intermittent lag. Repeating this combined check after moving the offending device to a different band or schedule confirms the fix and keeps your stability baseline clean without involving outside support.

Run this test when intermittent connection problems are suspected but brief tests show normal results, when validating a network upgrade over a sustained window, or when monitoring whether ISP congestion occurs at a predictable time each day.

RTT spikes every 120 seconds exactly

Regular 120-second spikes indicate a system process running on a fixed interval. Check task scheduler (Windows) or cron (macOS/Linux) for processes running every 2 minutes. Antivirus real-time scanning and backup agents are common culprits.

Jitter and loss gradually increase over 30 minutes then reset

Gradual accumulation followed by a reset suggests the router is restarting its QoS queue or an ISP link is cycling. The reset point is when the elevated metrics return to baseline. Check router logs for link renegotiations at the reset timestamps.

Sources for this section
  1. 1.

    Hamming AI, "WebRTC Call Quality Testing for Voice Agents," hamming.ai, May 2026. https://hamming.ai/resources/webrtc-call-quality-testing-voice-agents

  2. 2.

    Toke Høiland-Jørgensen, Dave Täht, and Jonathan Morton, "Piece of CAKE: A Comprehensive Queue Management Solution for Home Gateways," arXiv, April 2018. https://arxiv.org/abs/1804.07617

  3. 3.

    T. Høiland-Jørgensen et al., "The Flow Queue CoDel Packet Scheduler and AQM Algorithm," RFC 8290, IETF, January 2018. https://www.rfc-editor.org/rfc/rfc8290.html

  4. 4.

    tohojo/sqm-scripts, "piece_of_cake.qos," github.com, accessed June 2026. https://github.com/tohojo/sqm-scripts/blob/main/src/piece_of_cake.qos

  5. 5.

    F. Baker and G. Fairhurst, "IETF Recommendations Regarding Active Queue Management," RFC 7567, IETF, July 2015. https://www.rfc-editor.org/rfc/rfc7567.html

FAQ

For typical troubleshooting, run for at least 5 minutes. For time-correlated issues that appear at specific hours, run for 15 to 30 minutes across multiple time windows to capture enough data points for a reliable diagnosis. The longer the run, the more representative the accumulated jitter and loss statistics become for identifying intermittent patterns that shorter tests miss entirely.

A healthy sparkline shows RTT values clustered tightly around the average with no significant spikes. The line should be mostly flat with small variations. Occasional isolated spikes are normal. Frequent spikes, stepped increases, or periodic oscillations indicate instability requiring investigation.

This tool does not export data. To record results, take screenshots of the sparkline and statistics panel at intervals, or open the browser developer console and note the logged probe values. For production monitoring, a dedicated network monitoring tool with data export is better suited.

Yes. A 10 ms variation band around a 15 ms average is normal for a healthy residential broadband connection. It reflects small fluctuations in queuing delay as the router processes traffic. Variation bands above 50 ms consistently indicate real instability.

No. All probe data is processed locally in the browser. The WebRTC data channel carries probes directly between the two browser instances. No probe packets, timing data, or IP addresses are transmitted to or stored by CapyToolkit.

When direct P2P fails: symmetric NAT

Older NAT discussions often used cone and symmetric labels, but modern UDP NAT guidance describes mapping and filtering behavior separately. Address-dependent or address-and-port-dependent mapping can make hole punching fail, which is why some direct WebRTC sessions need a TURN relay server to forward packets between peers.4 Corporate networks, carrier-grade NAT (CGNAT) used by mobile carriers, and some home routers running in double-NAT configurations commonly use restrictive NAT behavior. The STUN probe on the tool's first screen identifies this condition so you know whether a direct test is possible before attempting it.

When hole punching cannot succeed, the only reliable fallback is routing traffic through a TURN server, which forwards each packet between the two peers at the cost of extra latency and bandwidth. Without TURN relay support built into this tool, a session between two restrictive NATs will simply fail to connect, which mirrors the behaviour you would see in many production WebRTC applications. Recognizing this limitation before you start troubleshooting saves time and points you toward the right fix.

What your NAT type means for connecting

"NAT type" is the question most people arrive with, and the mapping styles above are the honest answer to it. RFC 4787, the IETF's behavioral requirements for UDP NATs, names the three mapping styles this probe reports, and its requirement that NATs use endpoint-independent mapping exists precisely because restrictive mapping forces applications onto relays.8 In plain terms: endpoint-independent mapping is the friendly case, where your router reuses the same external port for every destination, so hole punching usually succeeds; address-dependent and address-and-port-dependent mapping give you a different external port per destination, which is what breaks direct connections.

Game platforms grade the same behavior with friendlier labels. Consoles and matchmaking systems often sort players into open, moderate, or strict NAT grades, bundling mapping and filtering behavior into a single verdict; the RFC deliberately measures those separately because they answer different questions.8 What this probe reports is the underlying mapping behavior, which is the quantity that actually decides whether a direct peer connection can succeed. No grade is a verdict on your connection quality overall: a restrictive result explains why direct sessions struggle to connect, and the fix sits in the router's NAT behavior or a relay, not in more bandwidth.

Stable vs. Unstable Jitter Reference

  • Stable
  • Unstable
  • 2.5-60ms

Run your own session above and compare its RTT and jitter combination against this stable-vs-unstable contrast.

Sources
  1. 1.

    H. Schulzrinne, S. Casner, R. Frederick, and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications," RFC 3550, IETF, July 2003. https://www.rfc-editor.org/rfc/rfc3550.txt

  2. 2.

    Mozilla Developer Network, "WebRTC API," developer.mozilla.org, accessed June 2026. https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API

  3. 3.

    A. Keranen, C. Holmberg, and J. Rosenberg, "Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT) Traversal," RFC 8445, IETF, July 2018. https://datatracker.ietf.org/doc/html/rfc8445

  4. 4.

    T. Reddy, A. Johnston, P. Matthews, and J. Rosenberg, "Traversal Using Relays around NAT (TURN): Relay Extensions to Session Traversal Utilities for NAT (STUN)," RFC 8656, IETF, February 2020. https://datatracker.ietf.org/doc/html/rfc8656

  5. 5.

    Mozilla Developer Network, "RTCRtpReceiver: jitterBufferTarget property," developer.mozilla.org, August 2025. https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpReceiver/jitterBufferTarget

  6. 6.

    J. M. Valin, K. Vos, and T. Terriberry, "Definition of the Opus Audio Codec," RFC 6716, IETF, September 2012. https://www.rfc-editor.org/rfc/rfc6716.txt

  7. 7.

    ITU-T, "G.114: One-way transmission time," Recommendation G.114, itu.int, May 2003. https://www.itu.int/rec/T-REC-G.114/

  8. 8.

    F. Audet and C. Jennings, "Network Address Translation (NAT) Behavioral Requirements for Unicast UDP," RFC 4787, IETF, January 2007. https://www.rfc-editor.org/rfc/rfc4787

FAQ

The tool uses WebRTC, the same protocol behind video calls, to open a direct data channel between two browser windows. Once connected, it sends small probe packets back and forth at 100ms intervals and measures the round-trip time for each one. Because the traffic travels through your actual network hardware, you get real ISP-level latency readings that server-based tools cannot replicate.

WebRTC requires both browsers to exchange a Session Description Protocol (SDP) blob before they can connect directly. Without a signaling server to relay this exchange automatically, the copy-paste step is how the two browsers find each other. This is deliberate; there is no backend, so no data passes through any server.

The STUN probe contacts public Google and Cloudflare STUN servers to determine your public IP address and how your router performs NAT. It shows whether your network can establish a direct peer connection or whether symmetric NAT might block one. This runs automatically without any browser permission prompts.

Jitter measures how much your latency varies from packet to packet. A 30ms average RTT with 1ms jitter is very stable; the same average with 20ms jitter means packets arrive irregularly, which causes audio dropouts, video stuttering, and missed inputs in games. The tool uses an RFC 3550 exponential weighted average to smooth out momentary spikes.

ICE failure usually means one or both peers are behind a symmetric NAT, which blocks direct connections. The error panel explains this and lets you start over. Without TURN relay support, connections through symmetric NAT are not possible; this is expected on some corporate or mobile networks.

No. CapyToolkit runs entirely in your browser. SDP blobs are never sent to any server; your browser does contact Google and Cloudflare STUN servers briefly to discover your public IP, which is standard WebRTC behavior. Probe packets travel directly between the two browsers.

Additional resources