How to use it
- Turn on your VPN, then open this page and press Run the test.
- Wait a few seconds while the page contacts two public STUN servers.
- Read the verdict. If it says a public address differs, turn the VPN off and on again, then run the test once more.
What the test does
WebRTC lets browsers connect directly to one another, for calls and file sharing. To find a route it gathers candidate addresses: the device's own addresses, and the public address a STUN server reports back. The test starts that gathering with two public STUN servers, Google's stun.l.google.com and Cloudflare's stun.cloudflare.com, and reads the candidates the browser finds.
The public address a STUN server reports is the address your traffic leaves from. If it is not the address our server sees for your request, a VPN may not be carrying all your traffic. The STUN servers see your public address, as they must to answer, and nothing else from this page.
How to stop WebRTC leaks, by browser
Each browser offers different controls, and the steps change between versions. Check the result of this test after every change.
- Firefox: open about:config and set media.peerconnection.ice.default_address_only to true, so WebRTC uses only the default route. Setting media.peerconnection.enabled to false switches WebRTC off altogether, which stops browser calls. Mozilla's wiki describes both settings.
- Edge: Microsoft documents a policy called WebRtcLocalhostIpHandling, set by administrators. Its value AllowPublicInterfaceOnly makes WebRTC use only the public interface. We did not find a setting for ordinary users.
- Brave: its settings include a WebRTC IP option, Default Public Interface Only, described in Brave's documentation. The menu position depends on the version.
- Chrome: we did not find an official setting for ordinary users. Extensions that apply the same limit are the usual route; choose one whose code you trust.
- Safari: we did not verify a setting for WebRTC addresses.
- Any browser: a VPN that blocks WebRTC traffic, or a VPN that routes the whole device, removes the problem at its source. Run this test again afterwards.
What this test does not show
- It does not test every route. A connection can use an address that the STUN servers did not report.
- It cannot tell which network interface a candidate came from, so an address that differs may come from an ordinary connection.
- A hidden .local name stands for a local address the browser did not reveal; the test cannot read it.
Example: a VPN that leaks
The addresses below are documentation addresses from RFC 5737, standing in for real ones. Our server sees the VPN server's address, but the browser also reports the address of the ordinary connection.
The verdict is then a possible leak, and the page lists the address that differs.
| Address | Seen by | Result |
|---|---|---|
| 203.0.113.7 | Our server | The VPN's address |
| 198.51.100.9 | The browser (WebRTC) | Differs: the ordinary connection |
| 192.168.1.10 | The browser (local) | Local address, not public |
Frequently asked questions
Why does WebRTC reveal my IP address?
WebRTC gathers every address the device has, so that it can find a route to another browser. A VPN carries your web traffic, but some WebRTC traffic can still leave through the ordinary connection unless the browser or the VPN is set to stop it.
Does this test send my IP address anywhere?
Your address reaches the two STUN servers during the test, because they must reply to it. Our server also sees the address, as it does for every request, and does not store it. Nothing else you type or click is sent.
Why does the test say a hidden .local name is not my address?
Browsers replace a device's private address with a random name ending in .local, so a web page cannot read the address itself. The name is a placeholder; the test counts these names but cannot look behind them.
What if the verdict says a public address differs but I have no VPN?
Your device may have an IPv6 address that your IPv4 traffic does not use, and the test reports it. Check your connection's IPv6 settings before you conclude that anything leaks.
Why does the test ask for no camera or microphone permission?
It does not need them. Granting camera or microphone access would make the browser show your real local address, so the test leaves that choice to you.
Can I trust a VPN that claims to block WebRTC?
Test it. Run this page with the VPN on and read the verdict. A claim is not proof, and a leak can come back after an update or a change of network.
Sources
- RFC 8839: SDP syntax for ICE (candidate attribute, section 5.1)
- IETF draft: Using Multicast DNS to protect privacy when exposing ICE candidates (expired)
- Mozilla wiki: WebRTC privacy settings
- Microsoft: WebRtcLocalhostIpHandling policy for Microsoft Edge
- Cloudflare: TURN and STUN servers
- RFC 5737: IPv4 address blocks reserved for documentation
Figures and text last checked on Tuesday, November 10, 2026.