Browser Info & Diagnostics
See everything your browser reveals: IP address, WebRTC local IP leak, screen resolution, hardware specs, and browser capabilities. Test your speakers and keyboard.
Everything on this page is read locally in your browser. The only network request is a lookup of your public IP against this site's own /api/ip endpoint. Nothing is logged or stored.
Identity
Network
Display
Hardware
Browser Capabilities
Speaker Test
Plays a 440 Hz sine tone (concert A) for 0.8 seconds through your default audio output.
- Check system volume and confirm the correct output device is selected (headphones vs. speakers vs. HDMI).
- Check that this browser tab is not muted. Right-click the tab and look for "Unmute site".
- Check per-site sound permission: click the padlock in the address bar, then Site settings, then Sound.
- Check the OS mixer. Browsers get their own volume slider on Windows and Linux and it can sit at zero.
- Bluetooth output can stay connected but stop routing audio. Disconnect and reconnect the device.
- If nothing works, another app may be holding exclusive control of the audio device. Close it and retry.
Keyboard Test
Press any key to test your keyboard. Keys light up green as they register. Type test and confirm all four letters light up. A key that never highlights is not reaching the browser at all, which points at hardware, the OS layout, or a driver rather than at this page.
What is a WebRTC IP leak?
WebRTC is the browser API behind video calls and peer-to-peer connections. To set up a direct connection it collects ICE candidates, which include your device's real network addresses, and any script on the page can read them. Because this happens inside the browser rather than over the proxied HTTP connection, a VPN or SOCKS proxy does not necessarily hide it: the page can end up seeing your LAN address (192.168.x.x, 10.x.x.x) and, if a STUN server is reachable outside the tunnel, your real public IP as well. Chrome and Edge now obfuscate host candidates with random mDNS .local hostnames by default, so most Chromium users show no LAN address. To lock it down further, use a VPN client that forces all traffic including UDP through the tunnel, set media.peerconnection.enabled to false in about:config on Firefox, or install an extension such as uBlock Origin and enable its WebRTC leak prevention setting. Disabling WebRTC entirely will break video calling in the browser.
Why does my browser show my local IP address?
Your local IP is the address your router handed your device on the private network, usually something like 192.168.1.42 or 10.0.0.15. It is not routable on the internet and by itself it does not identify you, but it does tell a site how your home or office network is laid out and it can be combined with other signals to fingerprint you. It becomes visible because WebRTC needs candidate addresses to negotiate a peer-to-peer connection, and the browser exposes them to JavaScript on the page. If this tool shows a LAN address, any site you visit can read the same value.
How can I test if my VPN is leaking my IP?
First note the public IP shown on this page with the VPN off. Turn the VPN on, hard-reload the page, and compare. The public IP should now be the VPN endpoint and it should not match your real one. Then check the WebRTC rows: if the WebRTC public IP differs from the public IP reported by the server, traffic is escaping the tunnel and that is a genuine leak. Also confirm your DNS queries go through the VPN, since DNS leaks are more common than WebRTC leaks, and re-test after your device sleeps or switches networks because that is when tunnels silently drop. A LAN address showing up on its own is expected browser behavior, not proof that the VPN failed.
What does device pixel ratio mean?
Device pixel ratio (DPR) is the number of physical screen pixels per CSS pixel. A DPR of 1 means a 100px CSS box occupies 100 physical pixels; a DPR of 2, typical of Apple Retina displays and most modern phones, means the same box occupies 200 physical pixels in each direction. It matters because raster images need roughly DPR times the nominal resolution to look sharp, which is what srcset and 2x/3x asset exports exist for. DPR is also not fixed: it changes when you zoom the page or drag the window to a different monitor, so read it at the moment you need it rather than caching it at load.