User Agent Parser
Parse a User-Agent string into browser, OS, device, and engine.
Search by file extension (.pdf, .png, .docx) or MIME type (image/png, application/json) to find the matching pair. Covers 150+ common types across images, documents, audio, video, archives, code, fonts, and web formats. Click any row to copy the MIME type. Useful when configuring web servers, setting Content-Type headers, or debugging file-upload validation.
No matches — try a different term or category.
| Extension | MIME Type | Category |
|---|
.pdf, png, application/json, or just image to filter the table.Every HTTP response carries a Content-Type header that tells the browser how to interpret the body. Get it right and the browser renders an image, plays a video, parses JSON, or runs JavaScript. Get it wrong and you'll see broken downloads, raw source code displayed as text, fonts that don't load, or web fonts blocked by CORS. The MIME type is the single most important piece of metadata in any file transfer.
MIME types also drive client-side feature detection. The <source type="video/webm"> attribute tells the browser whether to bother loading a media file. The Accept header lets clients say which formats they prefer. The Service Worker fetch handler routes requests by content type. File-upload validation should always check MIME type plus file contents (magic bytes), never just the user-supplied filename — extension-only checks are trivially bypassed.
On the server side, every web stack ships with a default MIME-type lookup table — Apache reads /etc/mime.types, nginx has types {} blocks, Node uses the mime npm package, Express has express.static. When you add a new file format to your project (a new font, an obscure image variant, a custom binary), the first thing to check is whether your server's table knows about it. If not, the file gets served as application/octet-stream and the browser downloads it instead of rendering it.
image/png, application/pdf, or text/html. The first part is the general category (image, video, application, text, audio, font); the second part is the specific subtype. Browsers, web servers, email clients, and APIs use MIME types to decide how to handle data — render it inline, download it, parse it as JSON, or hand it to a media player. The Content-Type HTTP header carries the MIME type for every response./etc/mime.types on Apache/nginx or via the mime npm package on Node. If a file extension isn't in the table, most servers fall back to application/octet-stream (the generic 'unknown binary' type), which causes browsers to download instead of render. Add the extension to your server's config or set the Content-Type explicitly in your application code. Common offenders: .webp, .avif, .woff2 in older Apache configs; .wasm in older nginx.application/json for actual JSON payloads. text/json is non-standard and should be avoided — older code sometimes used it but no spec backs it up. For JSON-based formats with their own conventions, use the appropriate variant: application/ld+json for JSON-LD, application/manifest+json for web app manifests, application/geo+json for GeoJSON, application/problem+json for RFC 7807 error responses. The +json suffix tells generic JSON parsers they can still process the body as JSON.