IP Address Lookup
Look up IP address details including location, ISP, timezone, and coordinates.

Utilities

IP Address Lookup

Look up IP address details including location, ISP, timezone, and coordinates.

IP Address Lookup resolves public IP addresses into location, ISP, timezone, and coordinates. This tool makes outbound network requests to third-party APIs: on load (with an empty field) it calls ipify (api.ipify.org) to discover your public IP, then queries ipapi.co (ipapi.co/{ip}/json/) for geolocation details. Type any IP into "Manual IP Lookup" (placeholder "e.g. 8.8.8.8") to query that address instead — requests go directly from your browser to those two services, not through an app server.

Results fill eight stat cards — City, Region, Country, Postal, Timezone, ISP / Org, Latitude, Longitude — with "N/A" defaults when a field is missing, plus a "View on Google Maps" link built from the coordinates (user-initiated navigation only). Copy the IP from the header, or Clear to reset. Failures surface the API's reason string or HTTP status text.

How it works

lib/ipLookup.ts exposes two outbound calls. fetchOwnIp hits https://api.ipify.org?format=json (IPIFY_URL) when no manual IP is present — the page auto-runs this on mount. lookupIp(ip) then fetches https://ipapi.co/{ip}/json/ (IPAPI_URL) and maps city, region, country_name, org, timezone, latitude, longitude, and postal, defaulting each missing field to "N/A". API-level errors (data.error) surface as data.reason || 'Invalid IP address'.

State lives in ipLookupSlice (processingStarted / ipInfoSet / errorSet / clearAll). The Google Maps link is ordinary https:// navigation the user clicks — it is not auto-fetched. These are the only network destinations: your browser talks directly to ipify and ipapi.co; no first-party server receives the queried IP.

How to use

  1. On load the tool auto-looks-up your own IP (ipify → ipapi.co); StepIndicator moves to "Results".
  2. Or type a target IP into "Manual IP Lookup" (placeholder "e.g. 8.8.8.8") and click "Lookup".
  3. Wait for "Looking up..." (toast "IP lookup complete!" on success).
  4. Copy the IP from the result header (toast "IP copied!") — header reads "Your IP Address" or "Looked-up IP".
  5. Review the 8 stat cards: City, Region, Country, Postal, Timezone, ISP / Org, Latitude, Longitude (missing → "N/A").
  6. Click "View on Google Maps" to open the coordinates in a new tab (rel="noopener noreferrer").
  7. "Clear" resets state (toast "Cleared!"); errors show in the destructive rounded box.

Tips

  • Leave the field empty to discover your public IP via ipify — the header then reads "Your IP Address".
  • Missing fields display "N/A" (lookupIp defaults each with ?? 'N/A') — that means the API omitted the value, not that lookup failed.
  • Latitude/longitude of 0 means the API omitted them (the code uses ?? 0).
  • Failure messages come from res.statusText or ipapi's reason field — useful for spotting rate limits.

IP Address Lookup FAQ

Which APIs are called?

Two third-party services: ipify (api.ipify.org?format=json) for your public IP, then ipapi.co (/{ip}/json/) for geodata — both fetched directly from your browser.

Is my IP sent to a server of this site?

No app server is involved — requests go from the browser straight to ipify and ipapi.co.

Why "N/A" in a card?

The API omitted that field; lookupIp defaults it with ?? 'N/A'.

Can I look up any IP?

Yes — any value typed into "Manual IP Lookup"; API errors surface as the reason string or 'Invalid IP address'.

Does "View on Google Maps" auto-fetch anything?

No — it's a plain user-clicked https:// link to google.com/maps built from lat/lon, opened with rel="noopener noreferrer".

Credits

  • ipify — Fetches the caller's public IP (IPIFY_URL in lib/ipLookup.ts) — outbound third-party API
  • ipapi.co — Geolocation/ISP details endpoint (/{ip}/json/) in lib/ipLookup.ts — outbound third-party API
  • Google Maps — Optional 'View on Google Maps' link built from lat/lon (user-initiated navigation)
ShareTweet
More Utilities

Command Palette

Search for a command to run...