This page compares the public IP our server sees over HTTPS with server-reflexive (srflx) ICE candidates produced by a short WebRTC gather using standard STUN servers. When those public endpoints disagree, it can mean WebRTC is traversing a different path than your page load—often worth reviewing if you rely on a VPN.DNS resolver identity cannot be fully enumerated from the browser alone; we explain why and point you to complementary checks.
WebRTC ICE and why VPN users care
WebRTC negotiates realtime audio, video, and data channels. During setup the browser runs the Interactive Connectivity Establishment (ICE) algorithm: candidates describe every network path peers might try (host/private, server-reflexive, relay, peer-reflexive). A STUN (Session Traversal Utilities for NAT) server echoes the public-facing endpoint it observes for outbound UDP—that becomes an srflx candidate typed in SDP.
Your VPN may route TCP (what typical HTTPS relies on) through the tunnel while UDP to STUN exits elsewhere if policy, split routing, firewall rules, or IPv6 bridging differ. Researchers and users colloquially call that a WebRTC leak because the leaked srflx can reveal a home or carrier IP unrelated to your VPN egress.
How detection works here
- HTTP baseline: the browser performs
GET /api/ip; Cloudflare-suppliedCF-Connecting-IP(orX-Forwarded-For) resolves the address we log for HTTPS. - ICE gather: we instantiate
RTCPeerConnectionwith public STUN servers, open an in-band data channel, callcreateOffer → setLocalDescription, and collecticecandidateevents until a timeout expires. - Srflx harvesting: any candidate whose
type === "srflx"(SDP or object property) exposes a reflexive endpoint; we isolate non-private IPs and compare them against the HTTP baseline IP after normalization for IPv6 casing. - Verdict heuristics: mismatched IPv4 reflexive vs IPv4 HTTPS IP flags a probable WebRTC/IP conflict. Dual-stack or timeout edge cases downgrade to explanatory copy instead of a binary pass/fail—see the results table below the hero for raw values.
DNS leaks and the browser sandbox
A DNS leak happens when lookups for VPN-controlled hostnames—or plain cleartext SNI-associated names—are resolved outside the VPN resolver path, oftentimes by your ISP. Full leak suites assign each session a unique label under a wildcard zone so resolvers observable at authoritative servers can be mapped.
Ordinary web apps cannot silently enumerate resolver chains for arbitrary OS sockets. Privacy guides therefore recommend VPN vendor tooling, firewall rules, DHCP/DNS-lock features, or dedicated native utilities. Inside the browser we still surface best-practice copy and steer you toward our What Is My DNS tool where you knowingly issue DoH lookups to study resolver-visible answers—not a substitute for a native DNS leak panel, but useful when teaching how lookups differ across configurations.
Privacy implications
Running ICE exercises signals similar network metadata to trackers that monetize fingerprints, though we do not store candidate outputs server-side—they stay in your DOM until reload. Blocking third-party trackers does not by itself prevent first-party probes like ours; clearing state after sensitive sessions remains wise.
Related tools
Correlate egress identity with What Is My IP, organization labels via What Is My ISP, and GeoIP-style summaries on What Is My Location. Understand transport quality using What Is My Latency and throughput using the Internet Speed Test.
Privacy note
HTTPS calls hit our `/api/ip` route; ICE checks contact public STUN infrastructure and otherwise execute locally. Structured logs may exist at the infrastructure layer—see Privacy Policy regarding analytics cookies and advertisements separate from diagnostics.