Info Tools — Manual
Vollständige Funktionsbeschreibung: Zusammenfassung per Client Hints, alle neun Tabs von Connection bis API, die Plain-Text-Endpunkte und der JSON-Export.
Zurück zur Übersicht: Info Tools · Tool live öffnen: www.jpkc.com/tools/info/
Dieses Manual beschreibt Info Tools Bereich für Bereich: was jeder Datenpunkt bedeutet, woher er stammt (Server oder Browser) und wie du das Ergebnis liest. Die Oberfläche des Tools ist auf Englisch — Tab- und Feldnamen stehen hier deshalb in ihrer englischen Original-Schreibweise (mit deutscher Erläuterung), damit du dich im echten Interface zurechtfindest. Neben vielen Feldnamen zeigt das Tool zusätzlich in Code-Schrift die Quelle des Werts an, etwa REMOTE_ADDR oder navigator.languages.
Bedienung: nichts eingeben, nur lesen
Info Tools verlangt keine Eingabe. Du rufst die Seite auf, und sie füllt sich automatisch. Oben steht die Karte At a glance mit der Zusammenfassung, darunter eine Karte mit neun Tabs: Connection, Headers, Display, Media features, Locale & time, Capabilities, Permissions & storage, Navigator und API. Auf schmalen Bildschirmen brechen die Tabs in mehrere Zeilen um.
Einige Werte kommen asynchron nach: der Hostname, die exakten Versionen aus den Client Hints, Berechtigungen, Speicherkontingent, Akku und die Uhrabweichung. Bis dahin steht dort ein Platzhalter wie „looking up…“ oder „measuring…“. Die Ladezeiten (Page load) misst das Tool erst nach dem vollständigen Laden der Seite.
Neben den meisten Textwerten sitzt ein kleiner Kopier-Knopf, der genau diesen Wert in die Zwischenablage legt. Ganz oben stehen außerdem Copy as JSON und Export as JSON für den gesamten Datensatz (siehe JSON-Export).
Woher die Daten kommen
Die Trennung von Server- und Client-Daten ist das Kernkonzept des Tools:
- Server-seitig (PHP) sind nur die Werte, die dein Browser bei der Anfrage ohnehin mitschickt: IP-Adresse, Quell-Port, HTTPS-Status,
SERVER_PROTOCOL,X-Forwarded-Forund die Request-Header (Tab Headers). Diese Daten sieht jeder Server, den du besuchst. - Client-seitig (JavaScript im Browser) ist alles andere — Zusammenfassung, Bildschirm, Media Features, Locale, Fähigkeiten, Berechtigungen,
navigator. Diese Werte liest dein Browser lokal aus; sie werden nicht an den Server übertragen. Alle Werte landen ausschließlich als Text im DOM, nie als HTML.
Zwei Werte brauchen eine zusätzliche Anfrage an den Server, ohne dass dabei Client-Daten mitgehen: Der Hostname (Reverse DNS deiner IP) wird per ?host nachgeladen, und für die Uhrabweichung holt die Seite per ?time die Serverzeit.
Zusammenfassung: At a glance
Die Kopfzeile fasst Browser, Hauptversion und Betriebssystem in einem Satz zusammen, etwa „Firefox 144 on Windows 10 or 11“; mit Client Hints folgt dem Betriebssystem die exakte Plattformversion. Darunter stehen:
- Browser — Name und Version. Die Quelle steht dabei: Client Hints oder User-Agent.
- Engine — Blink, Gecko oder WebKit (alle iOS-Browser nutzen WebKit).
- Operating system — Betriebssystem und Version.
- Device — Gerätetyp (
desktop,mobile,tablet), dazu ggf. Modell und Form Factors. - Architecture — CPU-Architektur und Bitbreite, sofern der Browser sie meldet.
- IP address (
REMOTE_ADDR), Hostname (Reverse DNS), Protocol (nextHopProtocol), Language (navigator.language) und Time zone (Intl).
User-Agent Client Hints liefern in Chromium-Browsern exakte Werte: Das Tool fragt per getHighEntropyValues() Architektur, Bitbreite, Form Factors, die vollständige Versionsliste, Modell, Plattformversion und WoW64 ab. Bei der Markenwahl gewinnt der spezifischere Name (Edge, Opera, Vivaldi, Brave, Yandex Browser oder Samsung Internet vor Chrome und Chromium); Platzhalter-Einträge wie „Not.A/Brand“ ignoriert das Tool. Windows erkennt es an der Plattformversion: ab 13 meldet es Windows 11, ab 1 Windows 10, darunter Windows 7/8/8.1.
Ohne Client Hints (Firefox, Safari) wertet das Tool den User-Agent-String aus und weist darauf hin. Dort ist Windows 10 nicht von 11 zu unterscheiden („10 or 11“), macOS steht im User-Agent eingefroren bei 10.15.7 („10.15.7 or later“), und ein iPad im Desktop-Modus gibt sich als Mac aus — das Tool erkennt es an mehr als einem Touch-Punkt und zeigt iPadOS. Solche Einschränkungen stehen als Hinweise unter der Zusammenfassung, ebenso der Fall, dass der Browser die exakten Werte verweigert oder unter Linux keine Betriebssystem-Version meldet.
Der Hostname erscheint mit kurzer Verzögerung. Gibt es keinen PTR-Eintrag, steht „no PTR record“. Der Lookup ist begrenzt: höchstens 20 Anfragen pro Minute und IP und höchstens drei gleichzeitige Lookups auf dem Server. Ist die Grenze erreicht, zeigt das Tool „rate limited — try again later“ bzw. „lookup busy — try again later“.
Die Tabs
Connection
Der Tab hat drei Abschnitte.
Connection beschreibt die Verbindung:
- IP address (
REMOTE_ADDR) und Hostname (Reverse DNS) wie in der Zusammenfassung. - Protocol (browser) (
nextHopProtocol) — das Protokoll, das dein Browser tatsächlich gesprochen hat: HTTP/3 (QUIC), HTTP/2 oder HTTP/1.1. - HTTPS — Badge „secure (HTTPS)“ oder „not secure (HTTP)“.
- Remote port (
REMOTE_PORT) — der Quell-Port, wie ihn der Webserver sieht. - Server-side protocol (
SERVER_PROTOCOL) — das Protokoll zwischen Front-End-Server und PHP. Es kann von dem abweichen, was dein Browser benutzt hat (z. B. HTTP/1.1 statt HTTP/2). - X-Forwarded-For — die Proxy-Kette, falls ein Proxy oder CDN den Header gesetzt hat; sonst „not set (direct connection)“.
- Online (
navigator.onLine) — „online“ oder „offline“, aktualisiert sich beim Wechsel automatisch.
Network Information API (navigator.connection, nur Chromium) zeigt Effective type (z. B. 4G), Downlink (estimate) in Mbit/s, Round-trip time (estimate) in ms, Data saver (on/off) und ggf. Connection type. Chromium rundet diese Schätzwerte absichtlich (Datenschutz) — es sind keine Messungen. Ändert sich die Verbindung, aktualisiert sich der Abschnitt. Fehlt die API, steht dort ein Hinweis.
Page load (Navigation Timing) zerlegt den Aufruf dieser Seite in Phasen: Protocol, DNS lookup, TCP connect, TLS handshake, Time to first byte (responseStart − requestStart), Download, DOM interactive, DOMContentLoaded, Load event und Transferred (HTML) (transferSize). Die Werte stammen aus dem Navigation-Timing-Eintrag (performance.getEntriesByType('navigation')) und beziehen sich auf den Start der Navigation. Wurde eine Verbindung wiederverwendet oder die DNS-Antwort gecacht, steht dort meist 0 ms. Einen Strich zeigt das Tool nur, wenn der Browser für eine Phase keinen Zeitstempel liefert: „— (cached or reused)“ bei DNS lookup, „— (connection reused)“ bei TCP connect und TLS handshake. Bei TLS handshake erscheint dieser Strich auch dann, wenn die Seite ohne HTTPS geladen wurde — dann gab es schlicht keinen TLS-Handshake.
Headers
Eine Tabelle mit allen Request-Headern, die dein Browser für diese Seite gesendet hat — in der Reihenfolge, in der der Server sie empfangen hat. Damit siehst du neben User-Agent, Accept, Accept-Language und Accept-Encoding auch Header wie Sec-Fetch-*, Sec-CH-UA-*, Sec-GPC oder Upgrade-Insecure-Requests.
Zwei Header zeigt das Tool bewusst nie im Klartext: Bei Cookie erscheinen nur Anzahl und Namen der Cookies („… (values hidden)“), bei Authorization und Proxy-Authorization nur das Schema („Basic … (hidden)“). Das gilt für die Seite, den Export und die Endpunkte ?headers und ?json gleichermaßen.
Display
Bildschirm- und Fenstergeometrie:
- Screen (
screen.width × height) in CSS-Pixeln und Screen in device pixels (×devicePixelRatio). - Available area (
screen.availWidth × availHeight) — ohne Taskleiste o. Ä. - Viewport (
innerWidth × innerHeight) und Layout width (without scrollbar) (documentElement.clientWidth). - Window (
outerWidth × outerHeight). - Device pixel ratio — Verhältnis physischer zu CSS-Pixeln, z. B.
2xauf Retina-Displays. - Colors (
screen.colorDepth) — Farbtiefe in Bit, zusätzlich als Anzahl Farben ausgerechnet. - Orientation (
screen.orientation) — Typ und Winkel, z. B.landscape-primary (0°). - Touch (
maxTouchPoints) — „yes (n points)“ oder „no“. - Zoom-aware root font size — die berechnete Schriftgröße des
<html>-Elements, die eine geänderte Standard-Schriftgröße im Browser sichtbar macht.
Die Werte aktualisieren sich live, wenn du das Fenster veränderst oder das Gerät drehst — ohne Neuladen.
Media features
Wie dein Browser 18 CSS-Media-Features gerade auswertet: prefers-color-scheme, prefers-reduced-motion, prefers-contrast, prefers-reduced-transparency, prefers-reduced-data, forced-colors, inverted-colors, color-gamut, dynamic-range, video-dynamic-range, pointer, any-pointer, hover, any-hover, display-mode, orientation, scripting und update.
Angezeigt wird jeweils der erste passende Wert (bei color-gamut der weiteste: rec2020 vor p3 vor srgb). Kennt der Browser ein Feature gar nicht, erscheint das Badge „not supported“; kennt er es, aber keiner der geprüften Werte passt, steht „none of the known values“. Auch dieser Tab aktualisiert sich live — etwa wenn du das System auf Dunkelmodus umstellst.
Locale & time
Sprach- und Zeiteinstellungen:
- Languages (
navigator.languages) und Accept-Language (der HTTP-Header). - Formatting locale, Time zone, Calendar und Numbering system (alle aus
Intl). - UTC offset now und Local time.
- Hour cycle —
h23/h24(24-Stunden) oderh11/h12(12-Stunden). - Number format — die Zahl 1234567,891 in deinem Format.
- Clock offset vs. server — wie weit die Uhr deines Geräts von der Serverzeit abweicht.
Die Uhrabweichung misst das Tool mit einer einzigen Anfrage nach NTP-Art: Es notiert die lokale Zeit vor und nach der Anfrage und vergleicht deren Mitte mit der Serverzeit. Die Unsicherheit beträgt die halbe Laufzeit der Anfrage. Liegt die Abweichung unter 500 ms (bzw. innerhalb der Unsicherheit), steht „in sync (± n ms)“, sonst etwa „2.3 s behind (± 40 ms)“ — „behind“ heißt, deine Uhr geht nach, „ahead“, sie geht vor.
Capabilities
Drei Abschnitte zu dem, was dein Browser kann.
User-Agent Client Hints listet die Rohwerte: Brands, Full versions, Platform, Platform version, Mobile, Model, Architecture, Form factors und WoW64. Gibt der Browser die exakten (high-entropy) Werte nicht frei, sagt das ein Hinweis; ohne Client Hints (Firefox, Safari) bleibt nur der User-Agent-String.
WebGL / GPU legt ein unsichtbares Canvas an (WebGL 2, sonst WebGL 1) und liest GPU renderer, GPU vendor, Version, GLSL, Max texture size, Max viewport und die Anzahl der Extensions. Renderer und Hersteller kommen über WEBGL_debug_renderer_info als konkreter Chip, sofern der Browser das erlaubt; sonst die generischen Werte. Ist WebGL abgeschaltet oder blockiert, erscheint ein Hinweis.
HTML5 & CSS feature detection nutzt einen eigenen Build von Modernizr 3.13.1, der nur Features der aktuellen Web-Plattform prüft: Entfernte oder nie ausgelieferte Funktionen (AppCache, Flash, WebSQL, CSS Regions u. a.) und Proben, die eval oder new Function bräuchten, sind nicht enthalten. Die Ergebnisse stehen in Gruppen — CSS, Images, Audio & Video, Canvas & WebGL, SVG & MathML, Forms & Input, Storage & Files, Network, Workers, DOM & Events, Elements, JavaScript und Other — mit grünem (unterstützt) oder rotem Badge und einem Zähler „unterstützt / gesamt“ je Gruppe. Oben rechts zeigt der Abschnitt die Summe („N supported“, „N not“).
Ergebnisse mit Unterwerten zeigt das Tool aufgeschlüsselt: bei audio und video die Codecs mit der Antwort des Browsers („probably“, „maybe“ oder „no“), bei inputtypes die einzelnen Eingabetypen, bei webp die Varianten. Einige Tests laufen asynchron; der Abschnitt rendert deshalb zweimal — sofort und noch einmal, sobald diese Tests fertig sind (spätestens nach 4 Sekunden). Ein negatives Ergebnis für blobworkers prüft das Tool vor dem zweiten Rendern mit großzügigerem Timeout von 3 Sekunden nach, weil Modernizrs eigener Test auf ausgelasteten Geräten fälschlich „nein“ meldet — in diesem Fall kommt das zweite Rendern entsprechend bis zu 3 Sekunden später.
Permissions & storage
Permissions (this site) fragt über die Permissions API den Zustand von 14 Berechtigungen ab: Geolocation, Notifications, Push, Camera, Microphone, Clipboard read, Clipboard write, Persistent storage, MIDI, Screen wake lock, Storage access, Local fonts, Window management und Idle detection. Jede erscheint mit einem von vier Zuständen: granted (grün), asks first (gelb — der Normalfall: die Seite muss vorher fragen), denied (rot) oder not supported (grau). Das Abfragen selbst löst keine Berechtigungs-Nachfrage aus.
Storage zeigt, ob Cookies aktiviert sind und ob localStorage und sessionStorage nutzbar sind (das Tool schreibt und löscht dafür einen Testeintrag). Dazu kommen aus navigator.storage Used by this site, Quota for this site (ein Schätzwert des Browsers) und Persistent — ob der Speicher dieser Seite vor automatischem Löschen geschützt ist.
Browser settings:
- Built-in PDF viewer (
navigator.pdfViewerEnabled) — „no (PDFs are downloaded)“, wenn der Browser PDFs nicht selbst anzeigt. - Global Privacy Control — aus dem Header
Sec-GPCodernavigator.globalPrivacyControl; „on — sites must not sell/share your data“ oder „off“. - Do Not Track — der veraltete DNT-Header, „on“ oder „off“.
- Automation (
navigator.webdriver) — „controlled by automation“, wenn ein Automatisierungs-Framework den Browser steuert, sonst „not automated“.
Battery nutzt die Battery Status API: Level in Prozent, Charging und je nach Zustand Time to full oder Time remaining. Die Werte aktualisieren sich bei Änderungen. Desktop-Rechner ohne Akku melden 100 % und „charging“; Firefox und Safari geben die API aus Datenschutzgründen gar nicht frei.
Navigator
Eine alphabetische Tabelle aller navigator-Eigenschaften mit einfachem Wert — Text, Zahl, Wahrheitswert oder Liste, z. B. hardwareConcurrency, deviceMemory, languages, platform oder userAgent. Funktionen und verschachtelte Objekte überspringt das Tool.
Darunter stehen Plugins und MIME types, jeweils mit Anzahl. Aktuelle Browser melden hier statt echter Plugins eine feste Liste (den eingebauten PDF-Viewer) oder gar nichts — beides schützt vor Fingerprinting. MIME-Typen erscheinen als Badges; die Beschreibung und Dateiendung siehst du per Tooltip.
API
Der Tab listet die Plain-Text-Endpunkte als fertige curl-Befehle, jeweils mit Kopier-Knopf. Details im nächsten Abschnitt.
Einzelwert-Endpunkte
Für Skripte und die Kommandozeile gibt es schlanke Endpunkte, die einen Wert als reinen Text (text/plain) zurückgeben, abgeschlossen mit einem Zeilenumbruch:
?ip— deine IP-Adresse (REMOTE_ADDR)?ua(Alias?agent) — der User-Agent?accept— der Accept-Header?enc— Accept-Encoding?lang— Accept-Language?gpc—Sec-GPC(Global Privacy Control)?dnt— der DNT-Header (veraltet)?port— dein Quell-Port, wie ihn der Webserver sieht?protocol— das Protokoll zwischen Front-End und PHP (SERVER_PROTOCOL), nicht unbedingt das, was dein Browser benutzt hat
Fehlt ein Header in der Anfrage, antwortet der Endpunkt mit not set. Zwei Endpunkte liefern mehr als einen Wert:
?headers— alle Request-Header, einer pro Zeile (Cookie- und Authorization-Werte verborgen)?json— alle server-seitigen Werte zusammen als JSON (IP, Port, HTTPS, Protokoll, X-Forwarded-For, die einzelnen Header und die komplette Header-Liste)
Jeder Endpunkt funktioniert als Query-Parameter oder als Pfad: https://www.jpkc.com/tools/info/?ip und https://www.jpkc.com/tools/info/ip liefern dasselbe. Ein Parameter mit Wert (?ip=1) zeigt dagegen die normale Seite. Antworten werden nie gecacht (Cache-Control: no-store).
Die Seite selbst nutzt zusätzlich ?host (Reverse DNS der eigenen IP, begrenzt auf 20 Anfragen pro Minute) und ?time (Serverzeit in Millisekunden als JSON); im API-Tab sind diese beiden nicht aufgeführt.
JSON-Export
Oben auf der Seite bündeln zwei Knöpfe den kompletten Datensatz:
- Copy as JSON — legt alle Werte als formatiertes JSON in die Zwischenablage.
- Export as JSON — lädt dieselben Daten als Datei
browser-info-<datum>.jsonherunter.
Vor dem Export wartet das Tool, bis alle asynchronen Werte (Client Hints, Hostname, Modernizr-Tests, Berechtigungen, Speicher, Akku, Uhrabweichung) da sind. Klickst du direkt nach dem Laden, kann das ein paar Sekunden dauern — vor allem wegen der Modernizr-Tests und eines langsamen Reverse-DNS-Lookups für den Hostname. Modernizr-Ergebnisse und Ladezeiten erfasst das Tool erst nach dem vollständigen Laden der Seite; exportierst du vorher, fehlen beide im Datensatz. Der Datensatz umfasst die server-seitigen Werte samt Header-Liste und alles, was der Browser beigesteuert hat: Zusammenfassung, Client Hints, Hostname, Verbindung, Network Information, Ladezeiten, Display, Media Features, Locale samt Uhrabweichung, WebGL, die Modernizr-Ergebnisse (mit Unterwerten), Berechtigungen, Speicher, Browser-Einstellungen, Akku, navigator-Eigenschaften, Plugins und MIME-Typen. Erzeugt wird die Datei lokal im Browser. Der Hinweis oben auf der Seite erinnert daran, dass der Export deine IP-Adresse und deinen Hostname enthält; Cookie- und Authorization-Werte sind nie enthalten.
Betriebsgrenzen und Datenschutz
- Keine Speicherung der Werte: Die Seite und alle Endpunkte senden
Cache-Control: no-store, private; nichts von dem, was das Tool anzeigt, wird abgelegt. Jeder Aufruf liest frisch aus. Für die Begrenzung des Hostname-Lookups führt der Server lediglich einen kurzlebigen Zähler pro IP. - Server sieht nur das Übliche: IP und Request-Header bekommt der Server ohnehin mit jeder Anfrage — Info Tools zeigt sie dir nur zurück, Cookie- und Authorization-Werte ausgenommen.
- Client-Daten bleiben lokal: Alle browserseitig ausgelesenen Werte verlassen deinen Browser nur, wenn du sie über Copy oder Export herausnimmst.
- Hostname-Lookup begrenzt: 20 Anfragen pro Minute und IP, höchstens drei Lookups gleichzeitig.
- API-Abhängigkeit: Viele Abschnitte hängen von optionalen Browser-APIs ab (Client Hints, Network Information, Battery, WebGL). Fehlt eine oder ist sie aus Datenschutzgründen gesperrt, zeigt der Abschnitt einen sachlichen Hinweis statt eines Fehlers.
Für den Einstieg und die Zielgruppen siehe die Übersichtsseite. Konkrete Durchläufe stehen in den Beispielen, Strategie und Stolperfallen in den Tipps & Tricks. Ausprobieren kannst du alles direkt im Tool.