Real-Time IP Lookup
Percival's lookup tool has found your IP
Percival swoops through the internet's dark corners so you don't have to. Here's what the web can see about your connection right now.
Your Public IP Address
Percival couldn't reach the lookup service. Check your connection and hit refresh.
Report copied to clipboard!
A real download/upload speed test using Cloudflare's public speed-test network — the same infrastructure behind speed.cloudflare.com.
Uses 6 parallel download connections and 4 parallel upload connections — the same trick dedicated speed-test apps use, since a single TCP connection often can't ramp up fast enough to saturate a fast line on its own. Uses real data transfer (~60MB combined) to get a live reading, so it will use a real chunk of your data — worth keeping in mind on a metered connection.
Percival times a round trip to a few well-known DNS resolvers directly from your browser — an HTTP round-trip, not a true ICMP ping, but a solid read on how snappy your connection is right now. Add your own site below to test it alongside them.
Measures the time to complete a full HTTPS request-response round trip (DNS + TLS + response), not a raw ICMP ping — browsers can't send ICMP. Real latency can vary between runs. A custom site is tested the same way as the built-in resolvers; some sites block this kind of cross-origin timing probe outright, which will show as "Unreachable" even if the site is actually up.
Enter an IPv4 address with a CIDR prefix and Percival will work out the rest — no lookups, no network calls, just math.
Enter a duration in any unit — handy for DNS TTLs, cache expiry, session timeouts, and cron intervals.
Generates a cryptographically random key for IPsec, WireGuard, or VPN tunnel configs — using your browser's secure random number generator, not a predictable one.
—
Generated with crypto.getRandomValues() — a cryptographically secure random source, not Math.random(). Nothing generated here is sent anywhere; it only ever exists in your browser.
Paste a standard 5-field cron expression and Percival explains what it means in plain English, plus the next few times it would actually run.
—
Standard 5-field cron syntax (minute, hour, day-of-month, month, day-of-week) — supports *, ranges (1-5), steps (*/15), and lists (1,15,30). Next-run times are computed against your device's local clock and time zone.
Expand or compress an IPv6 address, or work out the network range for a CIDR block — the IPv6 companion to the subnet calculator above.
Pure client-side bitwise math using JavaScript's BigInt (IPv6's 128-bit address space is too big for regular numbers) — no network call, works offline.
Percival digs up the DNS records for any domain — A, AAAA, MX, NS, and TXT.
| Type | Value |
|---|
Percival tries to reach any site directly from your browser to see if it responds.
—
—
This only checks whether your device and network can reach the site — not whether it's down for everyone, and not whether the page itself loads correctly (a site that responds with an error still counts as "reachable" here). Some sites also block this kind of automated check, which can show as unreachable even when the site is fine.
Percival digs up registrar, registration dates, and ownership info for a domain or IP — via RDAP, the modern, standardized successor to WHOIS.
Powered by RDAP, the IETF-standardized JSON API that's replacing WHOIS — works for domains and IPs across all five regional internet registries (ARIN, RIPE NCC, APNIC, LACNIC, AFRINIC).
CAA records say which Certificate Authorities are allowed to issue SSL certificates for a domain — Percival checks what's actually published.
| Tag | Authorized For | Flags |
|---|
No CAA records isn't an error — it means the domain hasn't restricted issuance, so any publicly trusted CA can issue a certificate for it. `issue` restricts normal certs, `issuewild` restricts wildcard certs, and `iodef` is just a contact address for reporting policy violations.
The hero card up top only shows your IP's location — this looks up city, ISP, and timezone for any IP address.
Uses the same free ipapi.co lookup as the connection details card up top, so it shares that ~1,000-lookups/day quota. IP geolocation is inherently approximate — it's usually accurate to the city or ISP level, not your exact address.
Percival checks whether a domain has SPF and DMARC set up — the two records mail servers use to fight spoofing.
SPF
—Sender Policy Framework — lists which mail servers are allowed to send email for this domain.
—
DMARC
—Tells receiving mail servers what to do with messages that fail SPF/DKIM checks.
—
DKIM isn't shown here — its record lives at a provider-specific "selector" that isn't discoverable from public DNS alone. Use the DKIM checker below, which tries common selectors automatically.
DKIM records live at a provider-specific "selector" that can't be discovered from public DNS alone — so Percival tries a handful of common selectors automatically, or checks the exact one you give it.
| Selector | Record |
|---|
Common selectors tried automatically: google, selector1, selector2, k1, default, mail, dkim. If your provider uses a different one, enter it directly — DKIM selectors genuinely can't be guessed from DNS alone.
Paste the raw headers from any email (usually "View Source" or "Show Original" in your mail client) and Percival pulls out the authentication results, the server hop chain, and any From/Return-Path mismatch — entirely in your browser.
Authentication Results
From / Return-Path
—
Received Hop Chain
| Hop | From → By | Delay |
|---|
Everything here is read straight from the headers you paste — nothing is sent anywhere. "Authentication Results" reflects whatever the receiving mail server already decided, not a live re-check by Percival.
A mail server IP without a matching PTR record is one of the most common reasons legitimate email gets flagged as spam. Percival checks the PTR record, then confirms it points back to the same IP.
"Forward-confirmed" means the PTR hostname's own A record resolves back to the exact same IP you looked up (FCrDNS) — the gold standard for mail server reputation.
Percival checks whether an IP address is flagged on well-known spam/abuse blacklists — handy when mail from a server starts bouncing.
Spamhaus isn't included — it actively blocks queries from public DNS resolvers like the one this tool uses, so it can't be checked reliably this way. SORBS is also left out; its DNSBL zone no longer appears to resolve.
Paste in JSON to pretty-print it, minify it, or just check whether it's valid — entirely in your browser.
Result
—
Pure client-side JSON.parse / JSON.stringify — nothing you paste here is ever sent anywhere.
Encode or decode text as Base64 or URL (percent) encoding — updates live as you type, entirely in your browser.
—
Test a regular expression against sample text — matches highlight live as you type, entirely in your browser.
Generates a random password or a diceware-style passphrase, using crypto.getRandomValues() — cryptographically secure, and it never leaves your browser.
—
—
Convert between Unix timestamps and human-readable dates — handy for reading logs, certificate expiry, and JWT exp/iat claims.
Timestamp → Date
Date → Timestamp
Type some text or pick a file — Percival computes MD5, SHA-1, SHA-256, and SHA-512 entirely in your browser. Nothing is uploaded anywhere.
| Algorithm | Hash | |
|---|---|---|
| MD5 | — | |
| SHA-1 | — | |
| SHA-256 | — | |
| SHA-512 | — |
Paste any URL and Percival breaks it down into protocol, host, path, and query parameters — handy for untangling long tracking or redirect links.
No query parameters.
Look up what an HTTP status code means, or browse the full list below.
—
—
Browse all status codes
| Code | Name | Category |
|---|
Paste a JSON Web Token and Percival decodes the header and payload — entirely in your browser, nothing sent anywhere.
Header
——
Payload
——
This only decodes the token — it does not and cannot verify the signature without the signing secret/key. A token that decodes cleanly is not necessarily authentic or untampered-with; never trust a decoded-but-unverified token for authorization decisions.
Paste any User-Agent string — from a support ticket, a server log, wherever — and Percival breaks it down into browser, OS, and device type. Pre-filled with your own for a quick look.
Parsed with pattern-matching against common browser/OS signatures, not a full device database — unusual or spoofed User-Agent strings may not match cleanly.
Owl Fact
Loading a fact…