MIME-Typen — Media Types für Webserver richtig konfigurieren

Referenz zu MIME-Typen (Media Types) für Webserver: Dateiendung zu Content-Type, Charset, nosniff und Konfiguration in Apache und nginx.

Der MIME-Typ — auch Media Type genannt — sagt dem Browser, was er mit den Bytes einer Antwort anfangen soll. Anders als im Dateisystem entscheidet im Web nicht die Dateiendung, sondern der vom Server gesendete Content-Type-Header über das Verhalten. Ein falscher Typ bricht das Rendering: Web-Fonts laden nicht, JavaScript-Module werden blockiert, Stylesheets greifen nicht. Mit charset=utf-8 legst du die Zeichenkodierung für Text-Typen fest, und X-Content-Type-Options: nosniff verhindert, dass Browser den Typ erraten — ein wichtiger Schutz gegen MIME-Sniffing-Angriffe. Diese Referenz listet die gängigen Media Types nach Kategorie und zeigt, wie du sie in Apache und nginx korrekt zuordnest.

Text-Typen

text/html — HTML-Dokumente. Der primäre Content-Type für Webseiten. Standard-Charset ist US-ASCII; gib immer UTF-8 an.

Content-Type: text/html; charset=UTF-8

text/css — Cascading Style Sheets. Erforderlich, damit Browser anwenden.

<link rel="stylesheet" href="style.css"> server must send text/css

text/javascript — JavaScript-Code. Der offizielle IANA-Typ (ersetzt application/javascript und application/x-javascript).

Content-Type: text/javascript used for <script src> responses

text/plain — Reiner, unformatierter Text. Browser zeigen ihn unverändert an, ohne HTML zu rendern. Standard-Endung: .txt.

Content-Type: text/plain; charset=UTF-8 robots.txt, README files

text/csv — Comma-Separated Values für tabellarische Daten. RFC 4180. Löst im Browser oft einen Download-Dialog aus.

Content-Disposition: attachment; filename=export.csv
Content-Type: text/csv

text/xml — XML als Text-Typ, für Menschen lesbar. Für API-Antworten application/xml bevorzugen.

Used for RSS feeds and simple XML configurations.

text/markdown — Markdown-formatierter Text. RFC 7763. Wird von Browsern nicht nativ gerendert; mit application/octet-stream einen Download erzwingen.

Content-Type: text/markdown; variant=GFM

text/calendar — iCalendar-Format für Kalendereinträge (.ics-Dateien). RFC 5545. Löst die Verknüpfung mit Kalender-Apps aus.

Content-Type: text/calendar; charset=UTF-8 event.ics download

text/vcard — vCard-Format für Kontaktdaten (.vcf-Dateien). Löst auf Mobilgeräten Import-Dialoge für Kontakte aus.

Content-Type: text/vcard contact.vcf download

text/event-stream — Server-Sent-Events-Stream (SSE). Erforderlich für die EventSource-API. Hält die Verbindung für Push-Ereignisse offen.

Content-Type: text/event-stream
Cache-Control: no-cache

Application — Web, Daten & APIs

application/json — JSON-codierte Daten. Der Standard-Typ für Request- und Response-Bodies von REST-APIs. RFC 8259.

Content-Type: application/json
Accept: application/json

application/ld+json — JSON-LD (Linked Data). Wird für Schema.org-strukturierte Daten genutzt, die zur SEO in HTML-Seiten eingebettet werden.

<script type="application/ld+json">{"@context":"https://schema.org",...}</script>

application/xml — XML-codierte Daten für APIs und Datenaustausch. text/xml nur verwenden, wenn der Inhalt für Menschen lesbar ist.

Content-Type: application/xml SOAP, Atom feeds, config APIs

application/graphql — GraphQL-Query-String. Informell, aber weit verbreitet. Alternativ als application/json mit einem query-Feld senden.

Content-Type: application/graphql POST /graphql with raw query body

application/x-www-form-urlencoded — URL-codierte Formulardaten (key=value&key2=value2). Standard-Kodierung für HTML-Formulare ohne Datei-Uploads.

<form method="POST"> without enctype sends application/x-www-form-urlencoded

application/octet-stream — Beliebige Binärdaten / unbekannter Typ. Browser behandeln dies als Download. Der sichere Fallback für unbekannte Dateien.

Content-Type: application/octet-stream
Content-Disposition: attachment; filename=data.bin

application/pdf — Adobe Portable Document Format (.pdf). Browser zeigen PDFs meist inline mit ihrem eingebauten Viewer an.

Content-Type: application/pdf add Content-Disposition: attachment to force download

application/yaml — YAML Ain't Markup Language. RFC 9512 (2024). Für OpenAPI-/Swagger-Specs und Konfigurationsdateien.

Content-Type: application/yaml OpenAPI spec endpoint

application/wasm — WebAssembly-Binärmodul. Erforderlich, damit Browser .wasm-Dateien effizient kompilieren (RFC).

Content-Type: application/wasm required for streaming compilation with WebAssembly.instantiateStreaming()

application/manifest+json — Web App Manifest (.webmanifest). Definiert PWA-Metadaten: Name, Icons, Theme-Farbe, Display-Modus.

<link rel="manifest" href="/app.webmanifest"> server must serve this type

application/rss+xml — RSS-Feed-Format für Syndication. Endung: .rss. Browser und Feed-Reader erkennen es automatisch.

<link rel="alternate" type="application/rss+xml" href="/feed.rss">

application/atom+xml — Atom-Syndication-Feed. RFC 4287. Stärker standardisiert als RSS, von vielen modernen Feed-Quellen genutzt.

<link rel="alternate" type="application/atom+xml" href="/feed.atom">

Application — Archive & komprimierte Dateien

application/zip — ZIP-Archivformat. Der häufigste Archivtyp im Web. Endung: .zip.

Content-Type: application/zip download.zip

application/gzip — gzip-komprimierte Daten (.gz). Unterscheidet sich von Content-Encoding: gzip — dies ist die Datei selbst.

Content-Type: application/gzip backup.tar.gz

application/x-bzip2 — bzip2-komprimiertes Archiv (.bz2). Bessere Kompression als gzip, verbreitet bei Linux-Distributionen.

Content-Type: application/x-bzip2 archive.tar.bz2

application/x-xz — XZ-komprimierte Daten (.xz). Hohe Kompressionsrate, für Linux-Kernel und Distro-Pakete genutzt.

Content-Type: application/x-xz package.tar.xz

application/x-7z-compressed — 7-Zip-Archivformat (.7z). Sehr hohe Kompression, verbreitet unter Windows.

Content-Type: application/x-7z-compressed archive.7z

application/x-rar-compressed — RAR-Archivformat (.rar). Proprietäres Format, verbreitet bei großen Software-Distributionen.

Content-Type: application/x-rar-compressed archive.rar

application/x-tar — TAR-Archiv (unkomprimiert, .tar). Meist mit gzip (.tar.gz) oder bzip2 (.tar.bz2) kombiniert.

Content-Type: application/x-tar files.tar

application/java-archive — Java-Archiv (.jar). Eine ZIP-Datei mit Java-Class-Dateien und Ressourcen.

Content-Type: application/java-archive app.jar

Application — Office- & Dokumentformate

application/vnd.openxmlformats-officedocument.wordprocessingml.document — Microsoft-Word-Dokument (.docx). OOXML-Format, verwendet von Word 2007 und neuer.

Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet — Microsoft-Excel-Tabelle (.xlsx). OOXML-Format, verwendet von Excel 2007 und neuer.

Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

application/vnd.openxmlformats-officedocument.presentationml.presentation — Microsoft-PowerPoint-Präsentation (.pptx). OOXML-Format, verwendet von PowerPoint 2007 und neuer.

Content-Type: application/vnd.openxmlformats-officedocument.presentationml.presentation

application/vnd.ms-excel — Älteres Microsoft-Excel-Format (.xls). Binärformat aus Excel 97–2003.

Content-Type: application/vnd.ms-excel legacy.xls

application/vnd.oasis.opendocument.text — OpenDocument-Text-Format (.odt). Verwendet von LibreOffice Writer.

Content-Type: application/vnd.oasis.opendocument.text document.odt

application/vnd.oasis.opendocument.spreadsheet — OpenDocument-Tabellen-Format (.ods). Verwendet von LibreOffice Calc.

Content-Type: application/vnd.oasis.opendocument.spreadsheet sheet.ods

application/epub+zip — EPUB-E-Book-Format (.epub). Eine ZIP-Datei mit HTML, CSS, Bildern und Metadaten.

Content-Type: application/epub+zip book.epub

application/rtf — Rich Text Format (.rtf). Plattformübergreifendes Dokumentformat, von den meisten Textverarbeitungen unterstützt.

Content-Type: application/rtf document.rtf

Bild-Typen — klassische Rasterformate

image/jpeg — JPEG/JPG — verlustbehaftete Kompression für Fotos (.jpg, .jpeg). Weit unterstützt, keine Transparenz. Ideal für Fotos.

<img src="photo.jpg"> server sends image/jpeg; quality vs. file size tradeoff

image/png — PNG — verlustfreie Kompression mit voller Alpha-Transparenz (.png). Ideal für Grafiken, Logos, Screenshots.

<img src="logo.png"> server sends image/png; larger than JPEG for photos

image/gif — GIF — 256 Farben, verlustfrei, unterstützt Animation (.gif). Für Animationen weitgehend durch WebP ersetzt.

<img src="animation.gif"> still widely used for short looping animations

image/bmp — BMP — Windows-Bitmap, unkomprimiertes Rasterformat (.bmp). Sehr große Dateien, keine Web-Nutzung.

Rarely used on the web. Used internally by Windows for icons and wallpapers.

image/tiff — TIFF — hochwertiges, verlustfreies Format für Druck und Archivierung (.tif, .tiff). Von Browsern nicht nativ unterstützt.

Used in print workflows, medical imaging, and professional photography.

image/x-icon — ICO — Windows-Icon-Format (.ico). Für Browser-Favicons genutzt. Unterstützt mehrere Größen in einer Datei.

<link rel="icon" type="image/x-icon" href="/favicon.ico">

image/svg+xml — SVG — Scalable Vector Graphics (.svg). XML-basiert, auflösungsunabhängig, voll skriptbar. Ideal für Icons und Logos.

<img src="icon.svg"> or inline <svg>. CSS animations and JS interaction possible.

Bild-Typen — moderne Formate

image/webp — WebP — Google-Format mit verlustbehafteten und verlustfreien Modi, Transparenz und Animationsunterstützung (.webp). 25–34 % kleiner als JPEG/PNG. Von allen modernen Browsern unterstützt.

<picture><source type="image/webp" srcset="img.webp"><img src="img.jpg"></picture>

image/avif — AVIF — AV1 Image File Format (.avif). Exzellente Kompression (besser als WebP), HDR, großer Farbraum, Alpha. Unterstützt in Chrome 85+, Firefox 93+, Safari 16+.

<picture><source type="image/avif" srcset="img.avif"><source type="image/webp" srcset="img.webp"><img src="img.jpg"></picture>

image/jxl — JPEG XL — Next-Gen-Format mit verlustfreier JPEG-Rekompression, HDR, großem Farbraum, Animation (.jxl). Überlegenes Qualität-Größe-Verhältnis. Safari 17.4+ (macOS/iOS). Chrome/Firefox nur hinter Flags oder eingestellt.

Accept: image/jxl, image/avif, image/webp, image/jpeg server-side content negotiation

image/heic — HEIC — High Efficiency Image Container (.heic). Apples Standard-Kameraformat (iPhone ab iOS 11). Basiert auf HEVC/H.265. Begrenzte Browser-Unterstützung; meist serverseitig konvertiert.

iPhone uploads: convert HEIC JPEG/WebP/AVIF before serving on the web.

image/heif — HEIF — High Efficiency Image Format (.heif). Der Container-Standard, auf dem HEIC basiert. Gleiche Einschränkungen wie HEIC für die Web-Nutzung.

Content-Type: image/heif HEIC uses the same MIME type family; use heic for Apple files.

image/apng — APNG — Animated PNG (.apng, .png). Unterstützt Vollfarb-Animation mit Alpha, anders als GIF. Von allen modernen Browsern unterstützt.

<img src="animation.apng"> full 24-bit color with transparency, unlike GIF's 256 colors

image/jp2 — JPEG 2000 (.jp2) — Wavelet-basierte Kompression, verlustfreier Modus, Transparenz. Nur in Safari (macOS/iOS) nativ unterstützt. Für den allgemeinen Web-Einsatz nicht empfohlen.

Safari on macOS accepts image/jp2. Other browsers need JS decode libraries.

Audio-Typen

audio/mpeg — MP3-Audio (.mp3). Das am universellsten unterstützte Audioformat. Nutzt MPEG-1/2-Audio-Layer-III-Kompression.

<audio controls><source src="track.mp3" type="audio/mpeg"></audio>

audio/ogg — Ogg-Vorbis- oder Opus-Audio in einem Ogg-Container (.ogg, .oga). Offen, patentfrei. Gute Firefox-/Chrome-Unterstützung.

<source src="audio.ogg" type="audio/ogg; codecs=vorbis">

audio/opus — Opus-Audio-Codec (.opus). Offenes Format, optimiert für Sprache und Musik, geringe Latenz. Exzellent für WebRTC und Streaming.

<source src="speech.opus" type="audio/opus"> best codec for real-time audio (WebRTC)

audio/wav — WAV — unkomprimiertes PCM-Audio (.wav). Sehr große Dateien, keine Kompression. Für verlustfreie Archivierung und als Audioquelle in der Web-Audio-API.

<source src="sample.wav" type="audio/wav"> high quality but large file size

audio/webm — WebM-Container mit Vorbis- oder Opus-Audio (.weba, .webm). Offenes Format, von Google unterstützt.

<source src="audio.webm" type="audio/webm; codecs=opus">

audio/aac — AAC — Advanced Audio Coding (.aac, .m4a). Nachfolger von MP3 mit besserer Qualität bei gleicher Bitrate. Nativ auf iOS/Safari.

<source src="track.aac" type="audio/aac"> commonly used on Apple devices

audio/flac — FLAC — Free Lossless Audio Codec (.flac). Perfekte Audio-Wiedergabe, ~50 % der WAV-Größe. In modernen Browsern unterstützt.

<source src="hifi.flac" type="audio/flac"> lossless streaming for audiophiles

audio/mp4 — MP4-Container mit reinem Audio-Inhalt (.m4a, .m4b). Enthält typischerweise AAC- oder ALAC-Audio.

Content-Type: audio/mp4 Apple audiobooks (.m4b), iTunes purchases (.m4a)

Video-Typen

video/mp4 — MPEG-4 Part 14 (.mp4, .m4v). Das am weitesten unterstützte Videoformat im Web. Enthält meist H.264/AVC-Video und AAC-Audio.

<video controls><source src="video.mp4" type="video/mp4"></video>

video/webm — WebM — Googles offenes Videoformat (.webm). Container für VP8-/VP9-/AV1-Video mit Vorbis-/Opus-Audio. Exzellente Kompression.

<source src="video.webm" type="video/webm; codecs=vp9,opus"> smaller than H.264 MP4

video/ogg — Ogg-Container mit Theora-Video (.ogv). Offen, patentfrei. In modernen Browsern überwiegend durch WebM ersetzt.

<source src="video.ogv" type="video/ogg; codecs=theora,vorbis">

video/mpeg — MPEG-1- oder MPEG-2-Video (.mpeg, .mpg). Legacy-Format aus den 1990ern. Begrenzte Browser-Unterstützung.

Content-Type: video/mpeg DVD and broadcast video; use MP4 for web delivery

video/quicktime — Apple-QuickTime-Video (.mov). Enthält typischerweise H.264 oder ProRes. Gute Unterstützung in Safari; für browserübergreifenden Einsatz MP4 nutzen.

Content-Type: video/quicktime iMovie/Final Cut exports; transcode to MP4 for web

video/x-msvideo — AVI — Audio Video Interleave (.avi). Legacy-Microsoft-Format. Keine native Browser-Unterstützung; muss konvertiert werden.

Content-Type: video/x-msvideo convert to MP4 or WebM before web delivery

video/x-matroska — Matroska / MKV-Container (.mkv). Beliebt für hochwertiges Video mit mehreren Audio-/Untertitel-Spuren. Begrenzte Browser-Unterstützung.

Content-Type: video/x-matroska use for downloads; transcode to MP4/WebM for streaming

video/mp4; codecs=av01 — AV1-Video hat keinen eigenen Datei-MIME-Typ; es wird im MP4- (video/mp4) oder WebM-Container (video/webm) mit codecs=av01… ausgeliefert. Offen, lizenzfrei, ~50 % bessere Kompression als H.264. Chrome 70+, Firefox 67+, Safari 17+.

<source src="video.webm" type="video/webm; codecs=av01.0.05M.08"> best compression ratio

Font-Typen

font/woff2 — Web Open Font Format 2 (.woff2). Das empfohlene moderne Web-Font-Format. Brotli-Kompression, ~30 % kleiner als WOFF. Von allen modernen Browsern unterstützt.

@font-face { src: url('font.woff2') format('woff2'); } — use this as primary format

font/woff — Web Open Font Format 1 (.woff). Fallback für ältere Browser (IE9+). zlib-Kompression. Größer als WOFF2.

@font-face { src: url('font.woff2') format('woff2'), url('font.woff') format('woff'); }

font/ttf — TrueType Font (.ttf). Unkomprimierte Outline-Schrift. Als Fallback und nativ unter Android/iOS genutzt.

@font-face { src: url('font.ttf') format('truetype'); } — fallback for very old browsers

font/otf — OpenType Font (.otf). Unterstützt erweiterte Typografie (Ligaturen, Kapitälchen, Alternativen). Unkomprimiert wie TTF.

@font-face { src: url('font.otf') format('opentype'); } — preferred for advanced typography

font/collection — Font Collection (.ttc, .otc). Eine einzelne Datei mit mehreren Schriftschnitten (z. B. CJK-Sammlungen).

Content-Type: font/collection NotoSansCJK.ttc containing Regular, Bold, Italic

Multipart & Formulardaten

multipart/form-data — Für HTML-Formular-Uploads mit Dateien. Erforderlich für . Enthält einen Boundary-Delimiter.

<form enctype="multipart/form-data"> Content-Type: multipart/form-data; boundary=----XYZ

multipart/mixed — Mehrere Body-Teile unterschiedlichen Typs. In E-Mails (Anhänge) und manchen Batch-API-Antworten genutzt.

MIME email with text/plain body + application/pdf attachment multipart/mixed

multipart/alternative — Mehrere alternative Darstellungen desselben Inhalts. In E-Mails für text/plain- und text/html-Versionen genutzt.

Email multipart/alternative: text/plain for old clients, text/html for modern clients

multipart/byteranges — Server-Antwort mit mehreren Byte-Ranges (für HTTP-206-Multi-Range-Antworten).

GET /file.pdf with Range: bytes=0-100,200-300 206 multipart/byteranges response

Tipps & HTTP-Header-Nutzung

Content-Type: type/subtype; charset=UTF-8 — Vom Server gesendet, um dem Client mitzuteilen, was der Response-Body ist. Der charset-Parameter ist für Text-Typen entscheidend.

Content-Type: application/json no charset needed (JSON is always UTF-8 per RFC 8259)

Accept: image/avif,image/webp,image/jpeg,*/* — Vom Client gesendet, um zu deklarieren, welche Typen er akzeptiert. Für Content-Negotiation nutzen, um das beste Format auszuliefern.

Chrome sends: Accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8

Content-Disposition: attachment; filename="file.pdf" — Erzwingt unabhängig vom Content-Type einen Download-Dialog. filename* für UTF-8-Dateinamen nutzen (RFC 5987).

Content-Disposition: attachment; filename*=UTF-8''Daten%C3%BCbersicht.csv

X-Content-Type-Options: nosniff — Verhindert MIME-Sniffing durch Browser (das Erraten des Typs). Setze diesen Header immer, um XSS durch Type-Confusion zu vermeiden.

Without nosniff, a browser may execute an HTML file served as text/plain as HTML.

type/* wildcard in Accept header — Wildcards nutzen, um beliebige Subtypen zu akzeptieren. image/* akzeptiert alle Bilder, / akzeptiert alles (mit niedrigster Priorität).

Accept: application/json, text/*, */*;q=0.1 prefer JSON, then any text, then anything

q-factor (quality value) in Accept — Numerische Priorität von 0 bis 1 (Standard 1.0). Teilt dem Server mit, welches Format bevorzugt wird, wenn mehrere Typen aufgelistet sind.

Accept: text/html, application/json;q=0.9, */*;q=0.8 prefer HTML, then JSON

Apache: AddType / TypesConfig — MIME-Typen in Apache per .htaccess oder httpd.conf konfigurieren. AddType für einzelne Ergänzungen nutzen.

AddType image/avif .avif
AddType image/webp .webp
AddType font/woff2 .woff2

Nginx: types { } block in mime.types — Nginx liest /etc/nginx/mime.types. Fehlende Typen im server- oder http-Block per types { }-Override ergänzen.

types { image/avif avif; image/webp webp; font/woff2 woff2; application/wasm wasm; }

PHP: header('Content-Type: ...') — Den Response-Content-Type in PHP vor jeder Ausgabe setzen. Überschreibt den Standard des Servers.

header('Content-Type: application/json; charset=UTF-8');
echo json_encode($data);

Fazit

Der richtige MIME-Typ ist kein Detail, sondern entscheidet darüber, ob Browser deine Inhalte korrekt darstellen oder blockieren. Setze für Text-Typen immer charset=utf-8, liefere moderne Formate wie image/avif und font/woff2 mit den passenden Typen aus und aktiviere X-Content-Type-Options: nosniff, um MIME-Sniffing zu unterbinden. Pflege fehlende Zuordnungen zentral in der mime.types deines Webservers, statt sie über verstreute AddType-Zeilen zu verteilen.

  • IANA Media Types – offizielles Register aller registrierten Media Types (englisch)
  • MDN: MIME-Typen – Überblick und die wichtigsten Typen für die Web-Entwicklung

Verwandte Kommandos

  • apache – Webserver konfigurieren, MIME-Typen per AddType und mime.types
  • caddy – moderner Webserver mit automatischem HTTPS
  • certbot – TLS-Zertifikate von Let's Encrypt verwalten