The nginx instance that receives your connection on jkit.tools knows your real IP and forwards it to the Next.js container via X-Real-IP. Our API reads that header and returns it. We do not use external APIs.
Your public IP, browser and environment, straight from the server, no extra tracking.
The browser makes a request to the /api/tools/my-ip endpoint. The nginx that receives your connection forwards the real client IP via headers like X-Real-IP and X-Forwarded-For; the server reads the first trusted header, classifies the address as IPv4 or IPv6, detects whether it is private/reserved and also returns the headers your browser already sent with the HTTP request, User-Agent, Accept-Language, Client Hints (sec-ch-ua) and the connection's protocol/host. None of this data needs an external database: it arrives at the server naturally when you visit any site. The tool prioritizes protocol identification, privacy and transparency about the technical data visible in the connection, without calling geolocation or fingerprinting providers.
Unlike sites that query an external service to 'find' your IP, here the server already knows the address: it is the other end of the connection. Because traffic passes through an nginx proxy before reaching the app, the real client IP is forwarded in headers like X-Real-IP and X-Forwarded-For, and the API reads the first trusted one. This avoids relying on paid databases and keeps the reply fast and direct.
The server then classifies the address (IPv4 or IPv6), flags whether it is a private/reserved address and returns, without enriching from any external source, the headers the browser already included in the request: User-Agent, accepted languages, Client Hints and the protocol/host used. The response is sent with caching disabled, so it always reflects the current connection.
Example 1, two protocols: if you browse on a network with native IPv6, the primary address shows as IPv6 (something like 2804:...), and the tool still tries to detect the secondary IPv4 address when available. Opening the page on a 4G/5G network or disabling IPv6 in your system is the way to force a comparison between the two stacks.
Example 2, opening a support ticket: click 'Copy summary' to grab, in one go, the IP, protocol, browser, system, timezone and relevant headers for a ticket or log. It is more reliable than typing those values by hand and helps diagnose network, DNS or geo-blocking issues.
Most of the displayed data is technical and already part of your HTTP request; the one exception is the secondary protocol check (IPv4/IPv6), which queries a public IP-echo service directly from your browser. We do not call fingerprinting providers or geolocation databases, and we do not store your IP for tracking. A public endpoint like this has a request limit to prevent automated abuse, and the response is sent uncached so it always reflects the current state.
Two honest notes: the public IP identifies your connection, not you as a person, and the location derivable from it is usually approximate (the ISP's city/region). And this page cannot be embedded in an iframe: since it reads the IP through the server, an embed would read the wrong context and confuse users, use the direct link.
Paste the code into your HTML and the tool shows up on your page, without J-Kit's navigation and ads. It still runs in the browser of whoever visits your site.
<iframe
src="https://jkit.tools/embed/en-US/my-ip"
width="100%"
height="600"
style="border:0"
loading="lazy"
title="My IP"
></iframe>These references help contextualize formulas, standards, APIs and limitations used on this page. They do not replace professional validation when a result has legal, financial, medical or operational impact.
The nginx instance that receives your connection on jkit.tools knows your real IP and forwards it to the Next.js container via X-Real-IP. Our API reads that header and returns it. We do not use external APIs.
Your IP and headers come straight from our own server (behind our nginx). To automatically check the secondary protocol (IPv4 or IPv6), the browser queries a public IP-echo service; no other data is sent. We do not call fingerprinting APIs or geolocation providers.