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-8text/css — Cascading Style Sheets. Erforderlich, damit Browser anwenden.
<link rel="stylesheet" href="style.css"> — server must send text/csstext/javascript — JavaScript-Code. Der offizielle IANA-Typ (ersetzt application/javascript und application/x-javascript).
Content-Type: text/javascript — used for <script src> responsestext/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 filestext/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/csvtext/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=GFMtext/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 downloadtext/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 downloadtext/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-cacheApplication — 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/jsonapplication/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 APIsapplication/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 bodyapplication/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-urlencodedapplication/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.binapplication/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 downloadapplication/yaml — YAML Ain't Markup Language. RFC 9512 (2024). Für OpenAPI-/Swagger-Specs und Konfigurationsdateien.
Content-Type: application/yaml — OpenAPI spec endpointapplication/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 typeapplication/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.zipapplication/gzip — gzip-komprimierte Daten (.gz). Unterscheidet sich von Content-Encoding: gzip — dies ist die Datei selbst.
Content-Type: application/gzip — backup.tar.gzapplication/x-bzip2 — bzip2-komprimiertes Archiv (.bz2). Bessere Kompression als gzip, verbreitet bei Linux-Distributionen.
Content-Type: application/x-bzip2 — archive.tar.bz2application/x-xz — XZ-komprimierte Daten (.xz). Hohe Kompressionsrate, für Linux-Kernel und Distro-Pakete genutzt.
Content-Type: application/x-xz — package.tar.xzapplication/x-7z-compressed — 7-Zip-Archivformat (.7z). Sehr hohe Kompression, verbreitet unter Windows.
Content-Type: application/x-7z-compressed — archive.7zapplication/x-rar-compressed — RAR-Archivformat (.rar). Proprietäres Format, verbreitet bei großen Software-Distributionen.
Content-Type: application/x-rar-compressed — archive.rarapplication/x-tar — TAR-Archiv (unkomprimiert, .tar). Meist mit gzip (.tar.gz) oder bzip2 (.tar.bz2) kombiniert.
Content-Type: application/x-tar — files.tarapplication/java-archive — Java-Archiv (.jar). Eine ZIP-Datei mit Java-Class-Dateien und Ressourcen.
Content-Type: application/java-archive — app.jarApplication — 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.documentapplication/vnd.openxmlformats-officedocument.spreadsheetml.sheet — Microsoft-Excel-Tabelle (.xlsx). OOXML-Format, verwendet von Excel 2007 und neuer.
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheetapplication/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.presentationapplication/vnd.ms-excel — Älteres Microsoft-Excel-Format (.xls). Binärformat aus Excel 97–2003.
Content-Type: application/vnd.ms-excel — legacy.xlsapplication/vnd.oasis.opendocument.text — OpenDocument-Text-Format (.odt). Verwendet von LibreOffice Writer.
Content-Type: application/vnd.oasis.opendocument.text — document.odtapplication/vnd.oasis.opendocument.spreadsheet — OpenDocument-Tabellen-Format (.ods). Verwendet von LibreOffice Calc.
Content-Type: application/vnd.oasis.opendocument.spreadsheet — sheet.odsapplication/epub+zip — EPUB-E-Book-Format (.epub). Eine ZIP-Datei mit HTML, CSS, Bildern und Metadaten.
Content-Type: application/epub+zip — book.epubapplication/rtf — Rich Text Format (.rtf). Plattformübergreifendes Dokumentformat, von den meisten Textverarbeitungen unterstützt.
Content-Type: application/rtf — document.rtfBild-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 tradeoffimage/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 photosimage/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 animationsimage/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 negotiationimage/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 colorsimage/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 sizeaudio/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 devicesaudio/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 audiophilesaudio/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 MP4video/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 deliveryvideo/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 webvideo/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 deliveryvideo/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 streamingvideo/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 ratioFont-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 formatfont/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 browsersfont/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 typographyfont/collection — Font Collection (.ttc, .otc). Eine einzelne Datei mit mehreren Schriftschnitten (z. B. CJK-Sammlungen).
Content-Type: font/collection — NotoSansCJK.ttc containing Regular, Bold, ItalicMultipart & 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=----XYZmultipart/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/mixedmultipart/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 clientsmultipart/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 responseTipps & 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.8Content-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.csvX-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 anythingq-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 JSONApache: 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 .woff2Nginx: 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.
Weiterführende Links
- IANA Media Types – offizielles Register aller registrierten Media Types (englisch)
- MDN: MIME-Typen – Überblick und die wichtigsten Typen für die Web-Entwicklung