# Info Tools — Manual

> Full reference: every card from HTTP Headers to Modernizr, the single-value endpoints, the JSON export, and the split between server-side and client-side data.

Source: https://www.jpkc.com/db/en/tools/info/manual/

Back to overview: [Info Tools](https://www.jpkc.com/db/en/tools/info/) · Open the live tool: [www.jpkc.com/tools/info/](https://www.jpkc.com/tools/info/)

This manual describes **Info Tools** card by card: what each data point means, where it comes from (server or browser), and how to read the result. The tool's interface is in English, so card and field names appear here in their original spelling.

## Usage: enter nothing, just read

Info Tools requires no input. You load the page and it fills every card automatically: the server cards arrive pre-rendered with the page, and the client cards are filled in by JavaScript right after load. Three cards (Battery, Storage, Permissions) briefly show a loading hint because they wait on asynchronous browser APIs; **Performance Timing** even measures only after the page has fully loaded.

Next to many values sits a small **copy button** that puts that single value on the clipboard. At the top right, **Copy as JSON** and **Export as JSON** handle the entire dataset (see below).

## Where the data comes from

The split between server and client data is the tool's core concept:

- **Server-side** (PHP, from `$_SERVER`) are only the **HTTP Headers** and **Connection Info** cards. Your browser sent these values with the request; every server sees them.
- **Client-side** (JavaScript in the browser) are all the other cards. They are read locally and **not** transmitted to the server.

## Server cards

### HTTP Headers

Shows the key request headers your browser sends with every request:

- **HTTP_USER_AGENT** — the browser identification (product, version, platform hints).
- **HTTP_ACCEPT** — which content types your browser accepts.
- **HTTP_ACCEPT_LANGUAGE** — your preferred languages (drives a site's automatic language choice, among other things).
- **HTTP_ACCEPT_ENCODING** — supported compression methods (e.g. `gzip`, `br`).
- **HTTP_DNT** — the **Do Not Track** value; if unset, it reads "Not set".

Each of these header names is a link to a single-value endpoint (see [Single-value endpoints](#single-value-endpoints)).

### Connection Info

Describes the technical side of your connection:

- **REMOTE_ADDR** — your IP address as the server sees it.
- **Hostname** — the reverse-DNS name for that IP, resolved via PHP's `gethostbyaddr()`. If no name resolves, it reads "Not resolvable".
- **REMOTE_PORT** — the source port of your connection.
- **SERVER_PROTOCOL** — the HTTP protocol in use (e.g. `HTTP/2`).
- **Connection (HTTPS)** — "Secure (HTTPS)" or "Not Secure (HTTP)".
- **X-Forwarded-For (Proxy)** — if you arrive via a proxy or CDN, the forwarded original IP appears here; otherwise "Not set (direct connection)".

## Client cards

### Screen & Display

Reads the geometry of your screen and window:

- **Screen Resolution** (`screen.width/height`) and **Available Area** (`screen.availWidth/availHeight`, excluding taskbars and the like).
- **Device Pixel Ratio** (`devicePixelRatio`) — ratio of physical to CSS pixels, e.g. `2x` on Retina displays.
- **Screen Colors** (`screen.colorDepth`) — color depth in bits, plus the number of colors computed from it.
- **Window Size** (`window.outerWidth/outerHeight`) and **Viewport Size** (`window.innerWidth/innerHeight`).
- **Orientation** (`screen.orientation`) — portrait or landscape, or "Not supported".
- **Touch Support** (`maxTouchPoints`) — number of simultaneous touch points, "No" if none.
- **Platform** (`navigator.platform`).

### Browser Settings

Three switch-style values, each shown as a colored badge:

- **Cookies Enabled** (`navigator.cookieEnabled`).
- **PDF Viewer** (`navigator.pdfViewerEnabled`) — can read "Not supported" if the browser doesn't expose the property.
- **WebDriver** (`navigator.webdriver`) — `true` suggests automation; the tool then shows an "Automated" badge, otherwise "Human".

### Navigator Properties

Walks the `navigator` object and groups the properties it finds into **Browser**, **Platform**, **Language**, **Network**, **Features**, and **Other**. Functions and complex objects are skipped; boolean values appear as a green/red badge, lists and strings as code. The card header shows the total number of properties found as a badge.

### Browser Plugins

Lists `navigator.plugins`. Modern browsers usually reveal **nothing** here to prevent fingerprinting — then the hint "No plugins detected." appears with an explanation. If there are entries, each card shows name, description, filename, and version where available.

### MIME Types

Lists `navigator.mimeTypes`, grouped into **Application**, **Audio**, **Image**, **Video**, **Text**, and **Other**. This too is often empty in modern browsers ("No MIME types detected.").

### WebGL / GPU Info

Creates a hidden canvas, obtains a WebGL context, and reads graphics information from it:

- **GPU Renderer** and **GPU Vendor** — via the `WEBGL_debug_renderer_info` extension the actual chip and vendor, where the browser allows it.
- **WebGL Version** and **GLSL Version**.
- **Max Texture Size** and **Max Viewport** — GPU limits.

If the browser doesn't support WebGL, a warning appears instead.

### Network Info

Uses the **Network Information API** (`navigator.connection`), which not every browser has. Available values can include:

- **Effective Type** — estimated connection class (`4g`, `3g`, …), as a colored badge.
- **Downlink Speed** (Mbps), **Round-Trip Time (RTT)** (ms), **Data Saver** (on/off), and possibly **Connection Type**.
- **Online Status** — `navigator.onLine`, always present.

If the API is missing, the card says so. When the connection changes, the card updates automatically.

### Battery Status

Uses the **Battery Status API** (`navigator.getBattery()`). Where available, it shows **Battery Level** as a progress bar, the **Charging Status**, and — depending on charge/discharge state — the estimated **Time to Full** or **Time Remaining**. Many desktop browsers suppress this API for privacy; then a corresponding hint appears.

### Storage Quota

Uses `navigator.storage.estimate()` and shows how much local storage the site may use: **Storage Usage** as a bar (percentage), **Used Space**, and **Total Quota** in human-readable units. The quota is a browser estimate, not a fixed value.

### Permissions Status

Queries the state of ten permissions via the **Permissions API**: Geolocation, Notifications, Camera, Microphone, Clipboard Read, Clipboard Write, Persistent Storage, Push, MIDI, and Screen Wake Lock. Each appears as a badge in one of four states: **Granted** (green), **Prompt** (yellow, will ask on access), **Denied** (red), or **Not Supported** (gray). Merely querying triggers **no** permission prompt.

### Performance Timing

Reads the (legacy but widely supported) `performance.timing` API and breaks page construction into phases: **DNS Lookup**, **TCP Connection**, **SSL/TLS Handshake**, **Request Time**, **Response Time**, **DOM Processing**, **DOM Interactive**, and **Page Load**. The measurement happens only after the `load` event, which is why this card fills in last. The values refer to **this** page load.

### HTML5 & CSS3 Capabilities (Modernizr 3.13.1)

This card loads **Modernizr 3.13.1** and uses its feature detection: Modernizr checks client-side whether your browser supports a long list of web features (CSS features, HTML5 elements, DOM, ES5/ES6+, audio, video, canvas, forms, storage, SVG, WebRTC, workers, and more). The tool groups the results into categories and shows, per category and overall, how many features are **supported** (green) and how many are **not supported** (red).

For Modernizr's probes to work, the page loosens its Content Security Policy specifically for them (including `unsafe-eval` and `data:` workers) — this affects only internal feature checks, never user input.

## Single-value endpoints

For scripts and the command line there are lean endpoints that return **only one** value as plain text (`text/plain`) — handy for fetching your IP via `curl`, for instance. In the interface, the matching header and connection labels link directly to these endpoints:

- `?ip` — your IP address (`REMOTE_ADDR`)
- `?agent` or `?ua` — the user agent
- `?accept` — the Accept header
- `?enc` — Accept-Encoding
- `?lang` — Accept-Language
- `?dnt` — Do Not Track
- `?port` — your source port
- `?protocol` — the server protocol

Example: `https://www.jpkc.com/tools/info/?ip` returns just your IP. Each endpoint outputs a single header or connection value — not a full, documented web API, but deliberately minimal helpers.

## JSON export

At the top right, two buttons bundle the **entire** dataset:

- **Copy as JSON** — puts all values on the clipboard as formatted JSON.
- **Export as JSON** — downloads the same data as a file named `browser-info-<date>.json`.

The export covers **both**: the server-side headers and connection data **and** the client-side values (screen, navigator, plugins, MIME types, WebGL, network, battery, storage, permissions, performance, and all Modernizr features). The file is generated locally in the browser; it is not sent to the server.

## Operating limits and privacy

- **No storage:** The page sets `no-cache` headers and keeps nothing. Every visit reads fresh.
- **The server sees only the usual:** the server gets your IP and request headers with every request anyway — Info Tools just reflects them back.
- **Client data stays local:** all browser-side values leave your browser only when **you** take them out via Copy/Export.
- **API dependency:** many cards depend on optional browser APIs. If one is missing (or blocked for privacy), that card shows a factual hint instead of an error.

For the intro and target audiences, see the [overview page](https://www.jpkc.com/db/en/tools/info/). Concrete walkthroughs are in the [examples](https://www.jpkc.com/db/en/tools/info/examples/), strategy and pitfalls in the [tips & tricks](https://www.jpkc.com/db/en/tools/info/tips/). You can try it all directly in the [tool](https://www.jpkc.com/tools/info/).

