File Type Check
WebEverything runs locally in your browser — nothing is uploaded
Drop in a file and compare the browser-reported type (derived from the extension) with the actual magic bytes. Why both clues: the extension is a claim — rename a file and it changes, and most programs trust nothing else — while the magic bytes are a fact fixed by the format specification. When they agree there is nothing to say; when they disagree it is always the extension-trusting side that gets hurt: a `.jpg` that is really a PNG will fail or show garbage in older image viewers and in upload endpoints that pick a parser by extension. ⚠️ The two kinds of disagreement are treated differently: `.zip` reported as `application/x-zip-compressed` is just another spelling of the same format (a naming difference, not a problem), whereas a `.jpg` whose magic bytes are PNG is a real mismatch and gets a warning with the consequence. Detection reuses the same signature table as Magic Bytes. Nothing is uploaded; everything runs locally.
Features
- Compares three things: the file extension, the browser-reported MIME (stated when absent) and the detected magic-byte type
- Detection reuses the same signature table as Magic Bytes — no second copy
- ⚠️ Distinguishes a harmless naming difference from a real mismatch — .zip / application/x-zip-compressed is not flagged
- ⚠️ A real mismatch gets a warning with the consequence: programs that trust the extension will fail
- A missing extension is not a mismatch (no claim is not the same as a wrong claim)
- When the magic bytes are unknown it says so rather than forcing a type
- ZIP-family .docx / .xlsx / .jar are not false-flagged
- Nothing is uploaded; everything runs locally
How to use
- Drop a file into the area above (or click to choose one)
- Read the three raw facts: extension, browser-reported MIME, detected type
- Read the verdict line: consistent, harmless naming difference or mismatch, plus the explanation
FAQ
- Why is the extension not enough — why also look at the bytes?
- Because the extension is just text that anyone can change: rename a.png to a.jpg and it changes, while not a single byte of the file moves. The magic bytes (the first few) are fixed by the format specification and cannot be renamed away. Most programs trust only the extension, so when the two disagree they read the file wrong. This tool puts the two clues side by side so you see the contradiction before you send or upload the file.
- .zip shows as application/x-zip-compressed — should I fix it?
- No. That is another spelling of the same format (common on Windows) and does not contradict the content, so the tool calls it a harmless naming difference rather than a warning. Flagging every naming difference would just teach you to ignore the verdict, so the two are deliberately kept apart: .zip as application/x-zip-compressed is fine, a .jpg that is really a PNG is not.
- Why is a docx not judged “not a ZIP”?
- Because a docx is a ZIP container to begin with (as are xlsx, pptx, jar and apk), so its magic bytes naturally match ZIP. The tool checks whether the extension is among the extensions the detected format declares, so .docx is not false-flagged; the browser reporting the Office type rather than application/zip is normal too and counts as “cannot compare”, not a conflict.
Related tools
Magic Bytes
WebIdentify a file from its first bytes. Covers 59 common formats, handles signatures at an offset, and looks up the magic bytes for a given format.
MIME Types
WebLook up a MIME type from an extension, or the default extension for a media type. Common types only. Runs entirely in your browser.
File Hash
EncodingDrop in a file to get its MD5, SHA-1, SHA-256, SHA-512 and CRC-32 — to verify a download or spot a modified file. Nothing is uploaded; all local.
URL Parser
WebParse a URL into scheme, host, port, path, query parameters and fragment, with each parameter shown raw and decoded. Runs entirely in your browser.
User-Agent Parser
WebParse a user agent into browser, version, OS, device type and engine, and see which rules matched. Pattern matching only. Runs entirely in your browser.
HTTP Status Codes
WebLook up an HTTP status code for its meaning, 1xx–5xx class, typical uses and common traps. Runs entirely in your browser.