View any text as a hex dump
Classic xxd-style hex dump — offset, 16 bytes of hex, printable ASCII side by side. Useful for binary file inspection and reverse engineering. Runs entirely in your browser.
00000000 54 68 65 20 71 75 69 63 6b 20 62 72 6f 77 6e 20 |The quick brown | 00000010 66 6f 78 20 6a 75 6d 70 73 20 6f 76 65 72 20 74 |fox jumps over t| 00000020 68 65 20 6c 61 7a 79 20 64 6f 67 2e |he lazy dog.|
How to read a hex dump
Each row is 16 bytes. The leftmost column is the offset in hex; the middle column is the raw bytes as two-digit hex pairs; the right column shows printable ASCII (dots for non-printable).
- 01
Paste your text
UTF-8 encoded — emoji and accents become their multi-byte representation.
Bytes flow through
TextEncoder/TextDecoderfor predictable UTF-8 semantics — emoji, surrogate pairs, and combining marks all encode losslessly.inputUTF-8TextEncoderlosslessliveinput · raw bytesutf-8 · UTF-8hello
loaded · UTF-8MIME · ready - 02
Read the offset
8-digit hex on the left tells you where each row starts.
Hash and signature operations call
crypto.subtlefrom the Web Crypto API, so output matches OpenSSL / Node bit-for-bit.offsetWeb Cryptosubtledeterministicliveoff · options00000000 · live00000000 …
options applied · livelive - 03
Scan the bytes
16 hex pairs per row. Look for magic numbers, ASCII strings, run-length zeros.
Options re-run instantly through
useEffect+useMemo— switching URL-safe mode or padding doesn’t re-encode from scratch.bytesmemoisedoptionsinstantreactiverow · encoded16 B · ready68 65 6c 6c 6f
encoded · livelossless - 04
Match ASCII side
The pipe-delimited gutter shows printable bytes, dots for the rest.
Copy uses the Async Clipboard API; downloads ship via
Blobwith the appropriate MIME (text/plain,image/png, …) so external tools recognise them.asciiclipboardblobMIME-correctclient-sideok · copiedready · done|hello|
shipped · ready to shipsuccess
Encoding without surprises
Always UTF-8 first
Use TextEncoder / TextDecoder for bytes ↔ string conversion. btoa alone breaks on non-ASCII.
URL-safe vs standard Base64
Standard uses +, /, =; URL-safe swaps to -, _, no padding. Don’t mix them.
Hashes aren’t passwords
SHA-256 is fast; that’s good for fingerprints, bad for passwords. Use bcrypt / argon2 for credentials.
Watch padding rules
Some decoders are strict about = padding, others auto-pad. If round-trips fail at exactly 1 or 2 bytes, check padding.
Use Web Crypto for keys
Generate cryptographic keys via crypto.subtle, never Math.random. The latter is predictable.
JWT decode ≠ verify
Decoding a JWT just splits and base64-decodes. Verification needs the issuer’s public key / shared secret.
When to inspect a hex dump
Reverse engineering, magic-byte sniffing, binary debugging.
Magic-byte sniffing
Identify file format from the first 4–16 bytes. Output round-trips losslessly with the matching decoder — both run client-side, so end-to-end testing happens in a single tab. Encoding flows through TextEncoder for predictable UTF-8 semantics.
RFC-compliantEncoding bugs
Spot BOMs, smart quotes, hidden Unicode. Web Crypto's subtle.digest produces output that matches OpenSSL, GPG, and Node's crypto module byte-for-byte. That makes the result trustworthy as a content fingerprint, ETag, or integrity check.
OpenSSL-matchedProtocol debugging
Compare raw bytes of two HTTP/MQTT payloads. Pairs cleanly with HMAC, JWT, and signed-URL workflows where bit-level correctness matters. The browser's crypto stack is FIPS 140-validated in Chrome and Firefox, so it's production-grade.
losslessBinary diffing
Eyeball differences before a real binary diff tool. Output uses canonical RFC 4648 / 7515 alphabets so curl, openssl, and any standards-compliant decoder accept it as input. URL-safe variants drop padding for tokens that travel in query strings.
byte-identicalReverse engineering
Hunt for ASCII strings inside firmware blobs. Heavy hashing runs through useMemo so large inputs don't block typing. PBKDF2, bcrypt, and Argon2 expose configurable cost factors — tune for your threat model, not the default.
spec-gradeTeaching
Show students how text becomes bytes. Same input plus same options always yields identical bytes. That's the foundation for content-addressed storage (IPFS, Git, S3 ETags) and means the output is safe to commit to fixtures.
production-readyFrequently asked questions
Something missing?
Tell us what you need. We ship the top requests every two weeks.