What Is a WebRTC Leak? How to Test for and Prevent It

The browser-level leak that exposes your real IP address even on a VPN — how to run a 60-second test, read the results correctly, and close the hole for good.

By JoshWP TeamUpdated: ~13 min read WebRTC LeakIP LeaksVPN PrivacyLeak Testing
Quick answer

What Is a WebRTC Leak, in One Paragraph?

A WebRTC leak is a browser-level privacy flaw in which a website uses the WebRTC real-time communication stack (specifically STUN/ICE candidate gathering) to discover IP addresses that your normal web traffic never reveals — your private LAN IP and, critically, your true public IP. Because this happens inside the browser via JavaScript, it can completely bypass an active VPN tunnel: your HTTP traffic shows the VPN’s IP while a silent STUN handshake hands the site your real one. The leak has been publicly known since January 2015, requires no permission prompt, and is fixed only by controlling WebRTC at the browser, VPN, or profile level — which is exactly what this guide walks you through, test-first.

0

the year the WebRTC VPN leak was publicly demonstrated with a simple JavaScript proof-of-concept.

~0%

of top VPN solutions were reported still leaking customer IPs via the WebRTC bug known since Jan 2015.

0%

of users’ browsers globally support the RTCPeerConnection API that makes the leak possible (Can I Use, 2026).

0

permission prompts a website needs to read your IP candidates via WebRTC — camera access asks; connection setup does not.

What Is a WebRTC Leak

Definitions

What a WebRTC Leak Is (and Is Not)

WebRTC (Web Real-Time Communication) is the W3C-standardized technology that lets browsers stream audio, video, and data peer-to-peer — the engine behind Google Meet, Discord voice, WhatsApp Web calls, and browser file sharing. To connect two devices that sit behind routers, WebRTC must discover every possible network address your device can use. That discovery process is where the leak lives. If you need the full background on the technology itself, start with our guide on what WebRTC is and how it affects browser privacy.

A WebRTC leak occurs when a website reads the addresses produced by that discovery process — called ICE candidates — and learns something you intended to keep hidden:

  • Host candidates: your private LAN IPs (192.168.x.x, 10.x.x.x) — a stable internal identifier and a map of your local network.
  • Server-reflexive (STUN) candidates: your true public IP as seen from the internet — the address your VPN is supposed to be hiding.

It is important to be precise about what this leak is not. It is not malware, it is not a browser bug in the classic sense, and it does not require you to click anything. It is standard behavior of a standard API being used as a side channel. That is why patching never “fixed” it — the only fixes are configuration: browser settings, extensions, VPN behavior, or per-profile policies.

Why it matters beyond VPNs: even without a VPN, leaked local IPs become a persistent cross-session identifier that complements browser fingerprinting. For anyone running multiple accounts, one leaked candidate can link every profile you own.
Mechanics

The Mechanics in 60 Seconds

When a page creates an RTCPeerConnection, the browser gathers candidates using the ICE framework and two helper protocols: STUN (asks an external server “what address do you see me from?”) and TURN (a relay fallback). The gathered candidates are delivered to JavaScript through the onicecandidate event. A tracking script simply reads that event. No prompt, no visible network activity in dev tools’ main request list, no cookies involved.

Candidate typeContainsLeak consequence
hostPrivate LAN addresses (192.168.x.x, 10.x.x.x)Reveals LAN topology; stable internal tracking ID
srflx (STUN)Your public IP + port as seen externallyExposes the real IP a VPN/proxy should hide
mDNS (modern browsers)Random .local hostname instead of LAN IPNeutralizes the local-IP half of the leak
relay (TURN)The relay server’s addressNot a leak — it is the relay’s IP, not yours

Modern Chrome, Edge, Safari, and Firefox now mask host candidates behind mDNS hostnames by default (Chromium made this default and removed the old toggle around Chrome 86). But mDNS does nothing for the public IP half: if your VPN fails to tunnel UDP or IPv6 correctly, STUN still answers with your real address. That is the leak people mean when they say “WebRTC leak” in 2026.

Testing

How to Test for a WebRTC Leak

Testing takes under a minute and should be done twice: once disconnected (baseline) and once connected to your VPN or proxy (verification).

  1. Note your real IP: with the VPN off, visit any “what is my IP” page and write the address down.
  2. Connect your VPN/proxy exactly as you would for real work.
  3. Open a WebRTC leak test — well-known options include BrowserLeaks (browserleaks.com/webrtc), IPLeak.net, and the leak test pages bundled by major VPN providers.
  4. Read the candidate list, not just the headline IP. Compare every address shown against the two you know (your real IP and your VPN IP).
  5. Repeat after changes: browser updates, VPN server switches, and OS updates can all change the outcome.

How to read your results

What the test showsMeaningAction
Private IPs (192.168.x.x / 10.x.x.x)Host-candidate leak; browser not mDNS-protectedUpdate browser; add extension or use a protected browser
random-name.local entriesmDNS obfuscation active — local IP hiddenNone; this is the modern safe default
Public IP = VPN/proxy IPNo public leak; tunnel handles STUN correctlyNone; you are clean
Public IP = your real ISP IP (VPN on)Active WebRTC/STUN leakApply browser + VPN fixes below immediately
Testing tip: run the test in the exact browser and profile you use for sensitive work — not a “clean” test browser. Leak behavior differs per browser, per extension set, and per profile policy. And while you are auditing your exposure, it is worth pairing this with a check of how to check your browser fingerprint, since the two leaks compound each other.

Testing five accounts? Test each profile, not just your main browser.

Incogniton gives every isolated profile its own WebRTC policy and proxy, so a leak test in one profile tells you the truth about that identity — and a failure in one can never expose the others.

Get Incogniton →

Affiliate link — we may earn a commission at no extra cost to you.

Data

WebRTC Leak Statistics & Charts

The leak is old, but it has never gone away — because it survives in misconfigured tunnels, free VPN apps, and outdated browsers. The data below shows how widespread leak failures remain.

Leak prevalence in published tests and studies

% of tested products exhibiting the failure
~20%
84%
66%
Top VPNs leaking
via WebRTC bug
Free Android VPNs
leaking IPv6
Free Android VPNs
leaking DNS

Sources: BleepingComputer reporting on the WebRTC bug known since January 2015; Ikram et al., CSIRO / ACM IMC 2016 study of 283 Android VPN apps. Free mobile VPNs are the worst offenders, but even paid desktop solutions are not automatically safe.

How well each prevention method stops WebRTC leaks (editorial scoring)

Protection score 0–10 — higher is better
Tor Browser (default)
10
Firefox full disable
9
Anti-detect profile policy
9
Brave non-proxied UDP block
8
Leak-prevention extensions
7
VPN kill switch + UDP/IPv6
7
mDNS default alone
5

Editorial scoring based on published leak mechanics: mDNS alone only hides local IPs; full protection requires disabling WebRTC or forcing STUN through the proxy. Anti-detect profiles score high because policies are applied per identity and stay consistent.

Default WebRTC privacy posture by browser (editorial scoring)

Out-of-the-box protection 0–10 — higher is better
10
8
6
6
5
5
Tor
Brave
Firefox
Safari
Chrome
Edge

Editorial scoring: Tor disables WebRTC entirely; Brave ships a WebRTC IP-handling policy; Firefox is fully configurable via about:config; Safari and Chromium rely on mDNS (local IPs only) with no user-facing off switch. With ~96.4% global RTCPeerConnection support (Can I Use, 2026), the exposure surface is essentially the entire web.

Prevention · Browsers

How to Prevent WebRTC Leaks in Every Browser

BrowserBest controlExact steps
FirefoxFull disable (native)about:config → accept the warning → set media.peerconnection.enabled to false
Chrome / EdgeExtension or policy (no native off switch)Install a leak-prevention extension (e.g., uBlock Origin’s “prevent WebRTC from leaking local IPs”, WebRTC Leak Prevent); fleets can use the WebRtcLocalIpsAllowedUrls policy
BraveWebRTC IP-handling policySettings → Privacy/Security → WebRTC IP handling → choose “Disable non-proxied UDP” when using a proxy or VPN
SafarimDNS built in; no off switchKeep Safari updated (mDNS active); pair with a VPN that tunnels UDP/IPv6 for the public-IP half
Tor BrowserDisabled by defaultNothing to configure — do not “relax” Tor’s settings or you destroy its protection model

Two practical rules. First, disable globally, allow selectively: if you take browser calls weekly, keep WebRTC on only in a dedicated browser or profile used exclusively for meetings — never in the profile you use for privacy-sensitive or multi-account work. Second, extensions are a fallback, not a foundation on Chromium: they mainly harden local-IP behavior, and Chromium removed the user-facing mDNS flag around version 86, so configuration choices are deliberately limited.

Prevention · VPNs

VPN-Side Prevention: Make the Tunnel Actually Cover WebRTC

Browser controls stop the browser from asking; VPN-side controls make sure that, if something does ask, the answer is the VPN’s address. You need both halves for defense in depth.

  • Full UDP tunneling: STUN runs over UDP. If your client split-tunnels or drops UDP, candidates go out over the real connection. Verify your client routes UDP by default.
  • IPv6 handling: IPv4-only tunnels are a classic leak path — WebRTC will happily use the IPv6 route. Choose a provider that blocks or tunnels IPv6 cleanly.
  • Kill switch: during reconnect gaps, an active peer connection can re-announce your real candidates. A kill switch cuts traffic instead of leaking it.
  • Built-in leak protection: some modern VPN clients ship WebRTC/DNS leak protection toggles — enable them, then re-test rather than trust the label.

If you are currently choosing a provider, prioritize leak behavior over marketing claims — our roundup of the best VPN providers is a useful starting point, and comparing an anti-detect browser vs. VPN vs. proxy will show you which layer each tool actually covers. And remember the uncomfortable truth: a VPN does not change your browser fingerprint, so a leak-free tunnel is only one layer of a complete identity.

Prevention · Profiles

Per-Profile WebRTC Control: The Professional Layer

For affiliate marketers, ad buyers, e-commerce sellers, and QA teams, the question is not “on or off?” but “what should WebRTC see for this identity?” That is the core promise of browser profile isolation: each profile carries its own cookies, storage, fingerprint, proxy — and its own WebRTC policy, typically one of:

  • Disabled: no peer connections at all; ideal for pure browsing identities.
  • Proxy-only UDP: STUN may run, but only through the profile’s proxy, so candidates match the identity’s geolocation.
  • Local IP substitution: host candidates are replaced with values consistent with the profile’s story instead of your real LAN.

Consistency is what defeats correlation. A profile claiming to be a London user on a UK residential proxy, but answering STUN with your Texas ISP address, is instantly flaggable — and one such mismatch can link every account you run, which is the exact opposite of browsing anonymously in any practical sense.

Every profile, its own network, its own clean leak test.

Incogniton pairs each isolated profile with its own proxy and WebRTC policy, so STUN candidates, timezone, and fingerprint always tell the same story — and you can verify each identity with a leak test in seconds.

Try Incogniton Free →

Affiliate link — we may earn a commission at no extra cost to you.

Action plan

Leak-Proof WebRTC Checklist

  • Record your real public IP with the VPN off (baseline).
  • Connect your VPN/proxy, then run a WebRTC leak test (BrowserLeaks, IPLeak.net, or your VPN’s test page).
  • Confirm no private LAN IPs appear (mDNS .local names are fine).
  • Confirm any public/STUN address matches the proxy IP — never your ISP IP.
  • Firefox users: set media.peerconnection.enabled to false if calls are not needed.
  • Brave users: set WebRTC IP handling to “Disable non-proxied UDP” when proxying.
  • Chrome/Edge users: add a leak-prevention extension and verify with a re-test.
  • Multi-account users: apply per-profile WebRTC policies in an anti-detect browser (e.g., Incogniton) and test each profile.
  • Re-test after browser updates, VPN server changes, and OS upgrades.
FAQs

Frequently Asked Questions

Is a WebRTC leak the same as an IP leak?
A WebRTC leak is one specific type of IP leak. Other IP leaks include DNS leaks, IPv6 leaks, and kill-switch failures. What makes WebRTC leaks unique is that they happen inside the browser via JavaScript STUN requests, so they can bypass a VPN tunnel even when the tunnel itself is working correctly.
Can I have a WebRTC leak while my VPN is connected?
Yes. If your VPN does not tunnel UDP traffic, leaks IPv6, or lacks a kill switch, WebRTC STUN requests can still return your real public IP. Reporting has shown around 20% of top VPN solutions leaked customer IPs via the WebRTC bug first disclosed in January 2015.
Does incognito mode prevent WebRTC leaks?
No. Private windows run the same WebRTC stack and perform the same STUN handshakes. Incognito manages local history and cookies after the session; it does not change network behavior or hide IP candidates.
Will disabling WebRTC break video calls?
It can break peer-to-peer real-time features such as browser video meetings, voice calls, screen sharing, and P2P file transfer. General browsing is unaffected. The practical approach is to disable WebRTC by default and allow it only in a dedicated browser or profile used for calls.
Do mobile browsers leak WebRTC too?
Yes. Mobile Chrome, Firefox, and Safari all ship WebRTC, and STUN-based discovery works on mobile networks. The CSIRO study of 283 Android VPN apps found 84% leaked IPv6 traffic and 66% leaked DNS, so mobile leak testing matters as much as desktop.
What should a clean WebRTC leak test show when I use a VPN?
A clean test shows no private LAN addresses (or only mDNS .local hostnames), and any public/STUN address should match your VPN or proxy IP — never your ISP-assigned IP. If your real public IP appears anywhere in the candidate list while connected, you have a leak.
References

Sources and Research Notes

Sources & Research Notes (click to expand)

Methodologies differ across sources (security reporting, lab studies, compatibility tracking), so figures above are presented as published and should be read as directional. Open sources used:

  1. The Hacker News (2015). “WebRTC Vulnerability Leaks Real IP Addresses of VPN Users” — public disclosure of the STUN-based leak, January 2015. thehackernews.com
  2. BleepingComputer. “Many VPN Providers Leak Customer’s IP Address via WebRTC Bug” — ~20% of top VPN solutions leaking via the bug known since Jan 2015. bleepingcomputer.com
  3. Ikram et al. (2016). “An Analysis of the Privacy and Security Risks of Android VPN Permission-enabled Apps.” CSIRO / ACM IMC — 84% IPv6 leaks, 66% DNS leaks, 18% no encryption across 283 apps. research.csiro.au
  4. Can I Use (2026). “WebRTC Peer-to-Peer Connections / RTCPeerConnection” — global support ≈96.4%. caniuse.com
  5. MDN Web Docs. “RTCPeerConnection — Browser Compatibility” — full support across Chrome, Edge, Firefox, Opera, Safari. developer.mozilla.org
  6. Google Support / Chromium issue tracker. “Anonymize local IPs exposed by WebRTC” — mDNS obfuscation defaulting and flag removal around Chrome 86; Edge policy WebRtcLocalIpsAllowedUrls. support.google.com
  7. uBlock Origin Wiki. “Prevent WebRTC from leaking local IP address” — scope and limits of extension-based local-IP leak prevention. github.com
  8. W3C (2021). “WebRTC 1.0: Real-Time Communication Between Browsers” — W3C Recommendation, 26 January 2021. w3.org

Share this:

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *