application/octet-stream — The Generic Binary Fallback

Understand application/octet-stream, the default binary MIME type used when the actual file type is unknown or a forced download is intended.

Common Types

Detailed Explanation

What is application/octet-stream?

application/octet-stream is the generic binary MIME type. It signals that the payload is an arbitrary sequence of bytes with no specific interpretation. Servers use it in two main scenarios:

  1. Unknown file type — when the server cannot determine the actual MIME type from the file extension or magic bytes.
  2. Forced download — when the server explicitly wants the browser to download the file rather than displaying it inline.

HTTP Headers for Downloads

To trigger a download with a suggested filename:

Content-Type: application/octet-stream
Content-Disposition: attachment; filename="report.pdf"

Even though the file is a PDF, using application/octet-stream with Content-Disposition: attachment bypasses in-browser PDF rendering.

Security Considerations

Browsers perform MIME sniffing — they inspect the first few bytes of a response to guess the real type. If a file served as application/octet-stream contains HTML, some older browsers might render it, leading to XSS. Add this header to prevent sniffing:

X-Content-Type-Options: nosniff

When to Use a Specific Type Instead

Always prefer a specific MIME type when you know the format:

Instead of octet-stream Use
PDF files application/pdf
ZIP archives application/zip
Executables application/x-msdownload
Disk images application/x-iso9660-image

Using the correct type lets browsers offer appropriate handlers (open, preview, associate with apps).

Use Case

Use application/octet-stream as a last resort when the file type is genuinely unknown, or when you need to force a file download regardless of the actual content type. Web servers like Nginx and Apache default to this type for unrecognized extensions.

Try It — MIME Type Reference

Open full tool