Deprecated MIME Types and Their Modern Replacements

Several MIME types are formally superseded. text/javascript, text/xml, application/ecmascript, image/x-icon deprecation history, risks of serving them, and how to audit.

ZERO UPLOAD · ALL LOCAL
  1. Type a MIME string (e.g. application/json), file extension (e.g. .wasm), or keyword (e.g. "protobuf") to search the database.
  2. Use the category pills (Application, Audio, Font, Image, Model, Text, Video, Multipart) to browse all types in a category.
  3. Click Details on any card to expand the description, spec link, and server configuration snippets in a full-width panel.
  4. Click Copy next to any snippet block to copy the Nginx, Apache, .htaccess, or Caddy directive to your clipboard.

Deprecated types and their replacements

  • application/javascript, application/ecmascript superseded by text/javascript (RFC 9239)
  • text/xml an alias for application/xml (RFC 7303)
  • image/x-icon replaced by the IANA-registered image/vnd.microsoft.icon
  • application/vnd.ms-fontobject EOT fonts, effectively deprecated with IE end-of-life

APPLICATION (100 types)

application/json
.json
application/xml
.xml .xsl .xslt
application/pdf
.pdf
application/wasm
.wasm
application/javascript
.js .mjs .cjs
application/zip
.zip
application/gzip
.gz .tgz
application/x-tar
.tar
application/x-7z-compressed
.7z
application/vnd.rar
.rar
application/x-bzip2
.bz2
application/vnd.openxmlformats-officedocument.wordprocessingml.document
.docx
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.xlsx
application/vnd.openxmlformats-officedocument.presentationml.presentation
.pptx
application/msword
.doc
application/vnd.ms-excel
.xls
application/vnd.ms-powerpoint
.ppt
application/octet-stream
.bin .exe .dll
application/x-www-form-urlencoded
application/cbor
.cbor
application/x-protobuf
.proto .pb
application/grpc
application/graphql-response+json
application/vnd.api+json
application/ld+json
.jsonld
application/hal+json
application/jwt
application/manifest+json
.webmanifest
application/rtf
.rtf
application/problem+json
application/json-patch+json
application/merge-patch+json
application/vnd.geo+json
.geojson
application/yaml
.yaml .yml
application/sql
.sql
application/epub+zip
.epub
application/java-archive
.jar
application/vnd.oasis.opendocument.text
.odt
application/vnd.oasis.opendocument.spreadsheet
.ods
application/vnd.oasis.opendocument.presentation
.odp
application/x-ndjson
.ndjson .jsonl
application/vnd.apple.mpegurl
.m3u8
application/dash+xml
.mpd
application/rss+xml
.rss
application/atom+xml
.atom
application/x-apple-diskimage
.dmg
application/x-debian-package
.deb
application/x-rpm
.rpm
application/x-sh
.sh
application/ecmascript
application/toml
.toml
application/zstd
.zst
application/x-xz
.xz
application/x-bzip
.bz
application/x-lzma
.lzma
application/x-iso9660-image
.iso
application/vnd.ms-cab-compressed
.cab
application/vnd.android.package-archive
.apk
application/x-msdownload
.msi
application/vnd.apple.installer+xml
.mpkg
application/x-httpd-cgi
.cgi
application/vnd.google-earth.kml+xml
.kml
application/vnd.google-earth.kmz
.kmz
application/vnd.sqlite3
.sqlite .sqlite3 .db
application/msgpack
.msgpack
application/schema+json
application/wsdl+xml
.wsdl
application/jose+json
application/x-pkcs12
.p12 .pfx
application/pkix-cert
.cer .der
application/x-pem-file
.pem .crt .key
application/pkcs8
.p8
application/pkcs10
.p10 .csr
application/postscript
.ps .eps .ai
application/x-latex
.latex .ltx
application/x-tex
.tex
application/x-dvi
.dvi
application/fits
.fits .fit .fts
application/vnd.oasis.opendocument.graphics
.odg
application/vnd.oasis.opendocument.chart
.odc
application/vnd.oasis.opendocument.formula
.odf
application/vnd.ms-project
.mpp .mpt
application/vnd.visio
.vsd .vst .vss .vsw
application/vnd.ms-access
.mdb
application/vnd.openxmlformats-officedocument.wordprocessingml.template
.dotx
application/vnd.ms-word.document.macroenabled.12
.docm
application/vnd.ms-excel.sheet.macroenabled.12
.xlsm
application/vnd.apple.pages
.pages
application/vnd.apple.numbers
.numbers
application/vnd.apple.keynote
.key
application/typescript
.ts
application/x-perl
.pl .pm
application/x-python-code
.pyc .pyo
application/x-csh
.csh
application/x-troff
.tr .roff .man
application/trig
.trig
application/n-triples
.nt
application/smil+xml
.smil .smi
application/vnd.mozilla.xul+xml
.xul
application/vnd.lotus-1-2-3
.123 .wks

AUDIO (23 types)

audio/mpeg
.mp3 .mpga
audio/ogg
.ogg .oga
audio/wav
.wav
audio/flac
.flac
audio/aac
.aac
audio/opus
.opus
audio/webm
.weba
audio/midi
.mid .midi
audio/mp4
.m4a .m4b .mp4a
audio/3gpp
.3gp .3gpp
audio/aiff
.aif .aiff
audio/x-ms-wma
.wma
audio/amr
.amr
audio/speex
.spx
audio/ac3
.ac3
audio/vorbis
audio/basic
.au .snd
audio/x-caf
.caf
audio/mpegurl
.m3u
audio/vnd.dts
.dts
audio/mp2
.mp2
audio/3gpp2
.3g2
audio/x-realaudio
.ra .ram

FONT (10 types)

font/woff
.woff
font/woff2
.woff2
font/ttf
.ttf
font/otf
.otf
application/vnd.ms-fontobject
.eot
font/collection
.ttc
font/sfnt
.sfnt
application/x-font-truetype
.ttf
application/x-font-opentype
.otf
application/x-font-woff
.woff

IMAGE (35 types)

image/jpeg
.jpg .jpeg .jfif
image/png
.png
image/gif
.gif
image/webp
.webp
image/avif
.avif
image/svg+xml
.svg .svgz
image/vnd.microsoft.icon
.ico
image/x-icon
.ico
image/bmp
.bmp
image/tiff
.tiff .tif
image/heic
.heic
image/heif
.heif
image/apng
.apng
image/jxl
.jxl
image/jp2
.jp2 .j2k .jpf
image/jpx
.jpx
image/vnd.djvu
.djvu .djv
image/vnd.adobe.photoshop
.psd
image/x-portable-bitmap
.pbm
image/x-portable-graymap
.pgm
image/x-portable-pixmap
.ppm
image/x-xcf
.xcf
image/ktx
.ktx
image/ktx2
.ktx2
image/x-exr
.exr
image/x-rgb
.rgb .rgba .sgi
image/x-xbitmap
.xbm
image/x-pcx
.pcx
image/vnd.wap.wbmp
.wbmp
image/x-tga
.tga .tpic
image/vnd.ms-photo
.jxr .hdp .wdp
image/x-win-bitmap
.cur
image/x-emf
.emf
image/wmf
.wmf
image/vnd.radiance
.hdr .rgbe

MODEL (19 types)

model/gltf+json
.gltf
model/gltf-binary
.glb
model/obj
.obj
model/stl
.stl
model/usd
.usd .usda .usdc
model/vnd.collada+xml
.dae
model/vnd.usdz+zip
.usdz
model/mtl
.mtl
model/vnd.dwf
.dwf
model/iges
.igs .iges
model/step
.stp .step .p21
model/step+xml
.stpx .stpxz
model/x3d+xml
.x3d
model/x3d+binary
.x3db .x3dbz
model/x3d-vrml
.x3dv .x3dvz
model/vnd.3mf
.3mf
model/vnd.fbx
.fbx
model/vnd.opengex
.ogex
model/JT
.jt

TEXT (33 types)

text/html
.html .htm
text/css
.css
text/csv
.csv
text/plain
.txt .text .conf .log
text/markdown
.md .markdown
text/calendar
.ics .ical .ifb
text/vcard
.vcf .vcard
text/javascript
.js
text/event-stream
text/tab-separated-values
.tsv
text/xml
.xml
text/x-python
.py .pyw
text/x-java-source
.java
text/x-c
.c .h
text/x-ruby
.rb
text/x-go
.go
text/x-rust
.rs
text/x-kotlin
.kt .kts
text/x-swift
.swift
text/x-scala
.scala .sc
text/x-php
.php .php3 .php4 .php5 .phtml
text/x-diff
.diff .patch
text/uri-list
.uri .urls .uris
text/x-rst
.rst
text/x-asciidoc
.adoc .asciidoc
text/x-nfo
.nfo
text/x-asm
.asm .s
text/troff
.roff .me .ms .mm
text/x-ini
.ini .cfg .inf
text/x-tcl
.tcl .tk
text/x-fortran
.f .f90 .for .f95
text/x-yaml
.yaml .yml
text/cache-manifest
.appcache .manifest

VIDEO (21 types)

video/mp4
.mp4 .m4v
video/webm
.webm
video/ogg
.ogv
video/x-msvideo
.avi
video/quicktime
.mov .qt
video/x-matroska
.mkv .mk3d
video/mp2t
.ts .mts .m2ts
video/mpeg
.mpeg .mpg
video/3gpp
.3gp .3gpp
video/3gpp2
.3g2 .3gp2
video/x-ms-wmv
.wmv
video/x-ms-asf
.asf .asx
video/vnd.avi
.avi
video/iso.segment
.m4s
video/x-dv
.dv .dif
video/x-ms-vob
.vob
video/H264
video/H265
video/AV1
video/x-flv
.flv
video/x-f4v
.f4v

MULTIPART (9 types)

multipart/form-data
multipart/byteranges
multipart/mixed
multipart/alternative
multipart/digest
multipart/related
multipart/signed
multipart/encrypted
multipart/report
No MIME types match your search.

Deprecated MIME Types and Their Modern Replacements

Several MIME types have been formally superseded and should not appear in new configuration. The process of MIME type deprecation happens through IANA registration updates and IETF RFCs that designate existing types as obsolete and specify replacements. Browsers maintain backwards compatibility with deprecated types to avoid breaking the existing web, which can create a false sense that the old types are still acceptable to use. In practice, serving deprecated types signals outdated server configuration to auditing tools, may trigger warnings in future browser releases, and in some cases causes failures with strict CSP configurations. The most commonly encountered superseded types are application/javascript and application/ecmascript (the IANA registry now lists text/javascript as the preferred JavaScript type per RFC 9239),1 text/xml (an alias for application/xml per RFC 7303), image/x-icon (a pre-standard type replaced by the IANA-registered image/vnd.microsoft.icon), and application/vnd.ms-fontobject (EOT fonts, effectively deprecated with IE end-of-life).

Why MIME type deprecations happen in IANA registrations

IANA maintains the official registry of MIME types. When a type is registered, it goes through a review process that establishes the type string, the format specification reference, and any security considerations. Over time, specifications evolve: better formats replace older ones, formal RFC processes establish correct type strings for previously informally registered types, and security research reveals problems with existing registrations. RFC 9239 for JavaScript and RFC 7303 for XML are examples of RFCs that formalise the correct types after years of ambiguity in deployed content.2

Deprecation does not mean the type stops working

The deprecated types remain in the IANA registry as historical records with notes pointing to their replacements. Browsers maintain compatibility with deprecated types indefinitely because breaking existing content would harm user experience. Consequently, deprecation in IANA does not mean the type stops working; it means the type is not the recommended choice for new configurations. Updating deprecated types in your server configuration is a low-effort change that signals current hygiene to security auditing tools and eliminates a class of warnings that can obscure more serious issues in your header configuration.

Real-world risk of serving deprecated types

Serving application/javascript instead of the IANA-preferred text/javascript (per RFC 9239 backwards-compatibility guidance) carries no practical risk in current browsers, since all modern browsers treat both as equivalent. The risk is future-oriented: browser vendors may increase CSP strictness, add deprecation warnings to developer tools, or eventually enforce the registered type as the only valid script MIME type. Serving image/x-icon rather than image/vnd.microsoft.icon is similarly low-risk but detectable in MIME auditing tools as a configuration issue.3 Furthermore, auditing tools like Mozilla HTTP Observatory and custom header-checking scripts flag deprecated MIME types as configuration issues that lower scores. Building on this, the practical motivation for updating deprecated types is primarily about passing audits and demonstrating current configuration hygiene, rather than fixing an active browser failure.

How to audit your server for deprecated types

Finding deprecated MIME types in a server configuration requires checking both the configuration files and the actual HTTP responses. Start with the configuration files: grep for deprecated type strings in mime.types, httpd.conf, .htaccess files, and Caddy configuration. Running grep -r "application/ecmascript" /etc/nginx/ finds any hardcoded deprecated type in Nginx configuration. Next, verify the actual HTTP responses with curl spot-checks. Run curl -sI https://your-domain.com/script.js and confirm the Content-Type matches the expected value.4 For systematic auditing across many file types, automate curl calls for a representative URL of each file type and compare the responses against an expected-type map. Furthermore, browser Network panel inspection during a site visit captures all Content-Type values in use during a real page load, revealing types served by third-party resources that configuration audits cannot reach.

Deprecated audio and video MIME types and their replacements

Audio and video MIME types accumulated legacy x- prefixed variants before standardisation. audio/x-mpeg predates the IANA registration of audio/mpeg and remains recognised by some older media players while being absent from modern browser documentation. audio/x-wav and audio/x-ogg similarly predate their standardised counterparts audio/wav and audio/ogg. Serving audio files with these x- prefixed types works across most current browsers, but switching to the registered types makes intent explicit and avoids confusion during server audits.

Video formats carried the same pattern. video/x-ogg predates video/ogg, and video/x-ms-wmv was a Microsoft-specific type before the broader adoption of container-agnostic identifiers. Neither x-prefixed video type appears in the IANA media type registry. For servers still sending these legacy video types, updating to video/ogg or video/webm for open-format content removes the ambiguity and aligns with HTTP header auditing tools that flag unregistered types.

Replacing deprecated image types in server configuration

image/x-png was a common MIME type before image/png received its IANA registration in 1996,5 and some legacy server configurations still map .png files to image/x-png even though browsers parse both identically without any rendering difference. The practical impact is that image/x-png produces lint warnings in HTTP header auditing tools and lowers your security score without affecting actual browser behaviour. For Apache, a single AddType image/png .png directive corrects this. For Nginx, adding image/png png; to the types block achieves the same result, and running nginx -t before reloading confirms the syntax is valid.

Integrating MIME type auditing into CI pipelines

Automating MIME type checks prevents configuration regressions from reaching production. A post-deployment smoke test can issue curl -sI requests to a representative set of file types and compare the Content-Type response headers against an expected list. Storing the expected list as a YAML or JSON fixture in the repository makes diffs visible in code review when expected types change intentionally.

GitHub Actions can run this smoke test in a job that triggers after the deployment step.6 A simple bash script iterates over an array of URLs, extracts the Content-Type header with grep -i "content-type:", and exits with status 1 if the value does not match the expected string. An exit status of 1 causes the GitHub Actions job to fail, blocking merges that would deploy a MIME-misconfigured server.

Auditing application/wasm and font MIME types in CI

WebAssembly and web font MIME types are the most commonly misconfigured formats in CI environments because they were added to default server type tables relatively recently. application/wasm is required for WebAssembly.instantiateStreaming() to function; if the server returns application/octet-stream instead, the streaming path silently falls back to the slower arraybuffer path in most browsers. font/woff2 must be returned for WOFF2 files; incorrect types may still allow fonts to render but will generate warnings in browser developer tools, signalling a configuration gap worth fixing before it affects security-conscious clients.

Adding these two types to the CI fixture is cheap insurance against a server upgrade that silently drops them from the merged type table, which is exactly the failure that reaches production between major version bumps. A CI check that fails the build on a wrong type turns a quiet regression into a blocking error caught before deploy, drawing its expected values from the deprecated MIME type replacement table. CapyToolkit's MIME reference lists the current IANA-registered types so your expected-value map stays aligned with the standard.

When to use this

Use this guide when auditing legacy server configuration for deprecated MIME types, preparing a server configuration for security assessment, or updating configuration to use modern type registrations.

Examples

Replace text/javascript with application/javascript in Nginx

Before
types {
    text/javascript  js;
}
After
types {
    application/javascript  js mjs;
}

If text/javascript appears in your mime.types or types {} block, replace it with the current registration.

Replace image/x-icon with image/vnd.microsoft.icon

Before
types {
    image/x-icon  ico;
}
After
types {
    image/vnd.microsoft.icon  ico;
}

Favicons served as image/x-icon should use the formally registered type instead.

Audit curl spot-check for deprecated types

Check actual response headers for known deprecated type strings.

Sources
  1. 1.

    Y. Shafranovich, "Updates to ECMAScript Media Types," RFC 9239, IETF, May 2021. https://www.rfc-editor.org/rfc/rfc9239.html

  2. 2.

    John M. Khlae and Martin J. Dürst, "XML Media Types," RFC 7303, IETF, September 2014. https://www.rfc-editor.org/rfc/rfc7303

  3. 3.

    Mozilla Developer Network, "HTTP Observatory," developer.mozilla.org, accessed June 2026. https://developer.mozilla.org/en-US/observatory/

  4. 4.

    "curl -sI," curl.se, accessed June 2026. https://curl.se/docs/manpage.html

  5. 5.

    "image/png," IANA, iana.org, accessed June 2026. https://www.iana.org/assignments/media-types/image/png

  6. 6.

    "GitHub Actions," GitHub, github.com, accessed June 2026. https://github.com/features/actions

FAQ