WELCOME TO MY DIGITAL GARDEN & TECHNICAL ARCHIVE READ MORE →

What's my IP, where does it say I am, and who's my ISP? This tool answers that the moment the page loads, then goes further: it tries to sniff out your local network address too, and lower down there's a full readout of everything your browser is willing to tell a web page about itself β€” screen, hardware, locale, permissions, and more.

[ip-and-browser-info.js] IP Info

Public IP address

Looked up by asking a third-party IP API directly from your browser — see "What's actually happening" below for exactly which one and why.

Looking up your public IP…


Local network address

Attempts to read your device's local (LAN) IP via a WebRTC trick — no browser permission dialog is involved, but most modern browsers now hide the real address behind a private .local name by default, so don't be surprised if that's all you get.


Browser & device info

Everything below is read straight out of your browser with plain JavaScript — none of it is sent anywhere, it's only ever displayed here on this page.

User agent –

Browser

Platform–
Vendor–
Language(s)–
Cookies enabled–
Do Not Track–

Screen & window

Screen resolution–
Viewport size–
Pixel ratio–
Color depth–
Orientation–

Locale & time

Browser timezone–
UTC offset–
Locale–
Local time–

Hardware

CPU cores–
Device memory–
Touch support–
Max touch points–

Network connection

Connection type–
Downlink–
Round-trip time–
Data saver–

Graphics (WebGL)

GPU vendor–
GPU renderer–

Storage & permissions

Local storage–
IndexedDB–
Camera permission–
Microphone permission–
Geolocation permission–
Notification permission–

Reading permission status does not trigger a browser prompt β€” it only reports decisions you (or your browser) already made.

How to use it #

  1. Your public IP address loads automatically, along with the city, region, country, ISP, ASN, timezone, and approximate coordinates that come with it. Click Refresh to look it up again, or Copy IP to grab just the address.
  2. Click Detect local IP to try to read your device's LAN address via a WebRTC trick. No permission prompt is involved β€” but see below for why you'll often get a .local name instead of a real address.
  3. Scroll down to Browser & device info for a full dump of what your browser exposes: user agent, screen and window size, locale and timezone, CPU/memory hints, network connection type, GPU info, and current permission states for camera, microphone, geolocation, and notifications.

What's actually happening, and why it's GDPR-friendly #

Your browser sends a request straight to ipwho.is, a third-party IP lookup API, using fetch(). That service replies with your public IP and the geolocation/ISP data tied to it, and the page renders the JSON response directly β€” no server of ours sits in between, sees the request, or logs anything. If ipwho.is doesn't answer, the tool automatically falls back to geojs.io, a second, similarly key-free lookup service, before giving up and showing an error.

This is really the only way a "what's my IP" tool can work at all: your public IP is, by definition, whatever address your request arrives from, and no local JavaScript can compute geolocation or ISP data for it without asking someone who has a database mapping IP ranges to that information. Doing that lookup as a direct browser-to-API call β€” rather than routing it through this site's own backend β€” means the request never gets logged, stored, or associated with anything else here. It's the same exposure your IP already has on every website you visit; this tool just shows you what that exposure looks like.

Everything else on this page β€” the local IP attempt and the entire browser info section β€” runs entirely in JavaScript in your browser and never makes a network request at all.

Why the local IP is often a .local name, not a real address

Detecting a LAN IP doesn't use getUserMedia() or any permission-gated API β€” it opens a RTCPeerConnection, asks it to gather ICE candidates for a dummy connection that's never actually established, and reads the address out of the candidates it generates. That used to reliably leak a device's real local IP (192.168.x.x, 10.x.x.x, and so on) to any page that tried, which browser vendors eventually treated as a privacy leak: Chrome, Edge, and Firefox now obscure host candidates behind a randomly-generated <uuid>.local mDNS name by default, so this tool typically resolves that name rather than a usable IP. It's still worth trying β€” some browsers, configurations, and older versions still expose the real thing β€” but a .local result is the expected, privacy-protected outcome rather than a bug in the detection.

About the browser info section

Every value in that section comes from standard navigator, screen, Intl, and WebGL APIs that any website can already read without asking β€” this tool just puts them all in one place. A few are worth a note:

  • GPU vendor/renderer comes from the WEBGL_debug_renderer_info extension, which reports your actual graphics hardware. Privacy-hardened browsers (like Firefox with resist-fingerprinting enabled) deliberately block or generalize this.
  • Device memory and CPU cores are coarse hints, not exact hardware specs β€” Chromium-based browsers round device memory down to the nearest power of two, and other browsers may not expose it at all.
  • Permission states for camera, microphone, geolocation, and notifications are read with the Permissions API, which only reports a decision your browser already has on file β€” checking it never triggers a prompt.

None of this is transmitted, stored, or sent to this site or anywhere else β€” it's rendered straight into the page you're already looking at.