MIME 유형 조회
파일 확장자에 해당하는 MIME 유형을 빠르게 조회, 검색 및 분류 필터 지원
문서(17)
application/pdf
application/msword
application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/vnd.ms-excel
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
application/vnd.ms-powerpoint
application/vnd.openxmlformats-officedocument.presentationml.presentation
text/plain
application/rtf
application/vnd.oasis.opendocument.text
application/vnd.oasis.opendocument.spreadsheet
application/vnd.oasis.opendocument.presentation
text/csv
application/json
application/xml
text/html
text/html
이미지(15)
image/jpeg
image/jpeg
image/png
image/gif
image/webp
image/svg+xml
image/x-icon
image/bmp
image/tiff
image/tiff
image/avif
image/heic
image/heif
image/vnd.adobe.photoshop
image/raw
오디오(10)
audio/mpeg
audio/wav
audio/ogg
audio/mp4
audio/flac
audio/aac
audio/x-ms-wma
audio/aiff
audio/midi
audio/midi
비디오(12)
video/mp4
video/webm
video/x-msvideo
video/quicktime
video/x-ms-wmv
video/x-flv
video/x-matroska
video/mp4
video/mpeg
video/mpeg
video/3gpp
video/mp2t
압축 파일(9)
application/zip
application/vnd.rar
application/x-7z-compressed
application/x-tar
application/gzip
application/x-bzip2
application/x-xz
application/x-iso9660-image
application/x-apple-diskimage
코드(31)
application/javascript
application/javascript
application/typescript
application/typescript
application/javascript
text/css
text/x-scss
text/x-sass
text/x-less
text/x-python
text/x-java
text/x-c
text/x-c++
text/x-c
text/x-c++
text/x-csharp
text/x-go
text/x-rust
text/x-ruby
text/x-php
text/x-swift
text/x-kotlin
application/sql
application/x-sh
application/x-sh
application/x-yaml
application/x-yaml
application/toml
text/x-ini
text/x-vue
text/x-svelte
글꼴(5)
font/woff
font/woff2
font/ttf
font/otf
application/vnd.ms-fontobject
기타(16)
application/vnd.microsoft.portable-executable
application/x-msi
application/vnd.android.package-archive
application/octet-stream
application/vnd.debian.binary-package
application/x-rpm
application/java-archive
application/java-archive
application/x-shockwave-flash
application/x-chrome-extension
application/x-xpinstall
application/x-bittorrent
text/calendar
text/vcard
application/epub+zip
application/x-mobipocket-ebook
MIME 유형이란?
MIME 유형 (다목적 인터넷 메일 확장)은 문서, 파일 또는 바이트 스트림의 성질과 형식을 표시하기 위한 표준입니다. 브라우저와 서버는 MIME 유형을 사용하여 파일을 어떻게 처리할지 결정합니다. 예를 들어 브라우저가 image/jpeg 유형을 수신하면 이미지를 표시합니다. 여러 사람이 함께 사용할 때는 입력, 전제, 기대 결과를 미리 맞춰 결과가 잘못 해석되지 않도록 해야 합니다.
사용 방법
빠른 참조
- 검색 상자를 사용하여 특정 확장자 또는 MIME 유형을 찾으세요
- 카테고리 태그를 클릭하여 파일 유형별로 필터링하세요
- 'Ext' 또는 'MIME' 버튼을 클릭하여 해당 내용을 복사하세요
- 카테고리를 탐색하여 빠르게 찾아보세요: 문서, 이미지, 오디오, 비디오, 압축 파일, 코드, 글꼴 등
참고 사항
- MIME 유형은 서버, 브라우저, 애플리케이션에서 사용하는 관례이며, 파일 확장자만으로 실제 콘텐츠를 보장하지 않습니다.
- 업로드 및 보안 검사 시 가능하면 선언된 MIME 유형과 파일 시그니처를 모두 검증하세요.
활용 사례
기술 원리
MIME 유형(Multipurpose Internet Mail Extensions)은 데이터 형식을 위한 표준 식별자로, 원래 이메일 첨부파일을 위해 RFC 2045/RFC 2046에서 정의되었으며 이후 HTTP(RFC 7231 §3.1.1.5)에서 웹 콘텐츠 협상을 위해 채택되었습니다. MIME 유형은 type/subtype 구조로 되어 있으며, type은 대분류(text, image, audio, video, application, multipart, font, model)를 선언하고 subtype은 정확한 형식을 지정합니다(예: text/html, image/png, application/json). 선택적 매개변수는 세미콜론 뒤에 옵니다(text/html; charset=utf-8). IANA(Internet Assigned Numbers Authority)는 iana.org/assignments/media-types에서 공식 MIME 유형 레지스트리를 관리합니다. 등록은 RFC 6838을 따르며, 사양 문서, 보안 고려사항, 상호운용성 노트가 필요한 검토 프로세스를 정의합니다. 미등록 유형은 x- 접두사를 사용할 수 있습니다(예: application/x-tar) — 실험적 또는 벤더별 형식의 관례이지만, RFC 6648은 적절한 등록을 대신 권장합니다. HTTP에서 Content-Type 헤더는 클라이언트에게 응답 본문을 어떻게 해석할지 알려줍니다. 서버가 Content-Type: image/svg+xml을 반환하면 브라우저의 SVG 렌더러가 작동하고, Content-Type: application/octet-stream을 반환하면 브라우저가 형식을 판단할 수 없어 다운로드 프롬프트가 표시됩니다. 브라우저는 MIME 유형 정보를 MIME 스니핑에도 사용합니다 — 서버가 Content-Type을 생략하거나 일반적인 유형을 보내면, 브라우저는 응답의 처음 몇 바이트(매직 바이트)를 검사하여 실제 형식을 추측할 수 있습니다. 이 동작은 X-Content-Type-Options: nosniff 헤더로 제어되며, 스니핑을 비활성화하고 서버가 올바른 유형을 선언하도록 요구합니다. 파일 업로드의 경우 Accept 헤더는 클라이언트가 응답에서 기대하는 MIME 유형을 서버에 알려주고, input 요소의 accept 속성은 파일 선택기를 특정 유형으로 제한합니다(예: accept="image/png, image/jpeg"). 서버 측에서는 업로드된 파일을 선언된 MIME 유형과 파일 시그니처(매직 바이트) 모두로 검증해야 합니다 — 어느 하나만으로는 신뢰할 수 없기 때문입니다. 파일 이름이 image/png이고 Content-Type이 image/png여도 실행 가능한 코드가 포함될 수 있습니다. 이 도구는 주어진 파일 확장자에 대한 표준 MIME 유형을 조회하는 참고 자료로, 8개 카테고리에 걸쳐 100개 이상의 일반 형식을 다룹니다.
- RFC 2046 구조: type/subtype — type은 대분류 콘텐츠 카테고리를, subtype은 정확한 형식을 나타냄; 선택적 매개변수는 세미콜론 뒤에 오며(text/html; charset=utf-8) 사양상 대소문자를 구분하지 않지만 관례적으로 소문자를 사용합니다.
- IANA 등록(RFC 6838): 새로운 미디어 유형은 사양 문서, 보안 고려사항 섹션, 상호운용성 노트가 필요 — 검토 프로세스는 유형이 레지스트리에 등록되기 전에 충분히 문서화되고 충돌이 방지되도록 보장합니다.
- HTTP Content-Type 헤더: 서버가 응답 본문의 MIME 유형을 선언; 브라우저는 이를 적절한 렌더러(HTML 파서, 이미지 디코더, PDF 뷰어) 선택이나 다운로드 트리거에 사용 — 잘못된 Content-Type은 '파일이 표시되지 않고 다운로드되는' 버그의 가장 흔한 원인입니다.
- MIME 스니핑 및 X-Content-Type-Options: Content-Type이 없거나 일반적이면 브라우저가 매직 바이트를 검사하여 형식을 추측할 수 있음 — X-Content-Type-Options: nosniff는 이 동작을 비활성화하고 정확한 Content-Type 일치를 요구하며, 이는 보안 모범 사례입니다.
- application/octet-stream: 범용 이진 폴백 유형 — 브라우저는 이를 불투명한 스트림으로 취급하고 다운로드를 트리거하므로, 서버가 형식을 결정할 수 없을 때 가장 안전한 기본값이지만 표시 가능한 콘텐츠의 브라우저 내 미리보기를 방지합니다.
- 파일 업로드 검증: input accept 속성은 클라이언트 측에서 파일 선택기를 필터링하지만, 서버 측 검증은 선언된 Content-Type과 파일의 매직 바이트를 모두 확인해야 합니다 — 확장자, MIME 유형, 파일 시그니처 간의 불일치는 악의적 업로드의 위험 신호입니다.
- 벤더별 및 실험적 유형: x- 접두사 관례(application/x-tar, video/x-matroska)는 공식 등록 프로세스보다 앞섬 — RFC 6648은 가능한 경우 적절한 IANA 등록 유형으로 마이그레이션할 것을 권장하지만, 많은 것이 여전히 널리 사용되고 있습니다.
예시
Nginx mime.types 설정
types {
text/html html htm;
image/jpeg jpg jpeg;
application/pdf pdf;
application/javascript js;
}
참고: 각 줄은 MIME 타입을 하나 이상의 파일 확장자에 매핑하며, Nginx는 해당 타입을 Content-Type 헤더에 담아 응답합니다
IANA: https://www.iana.org/assignments/media-types/ 에서 공식 레지스트리를 관리합니다HTTP Content-Type 응답 헤더
Content-Type: application/json; charset=utf-8
참고: charset은 선택 사항이지만 text/* 및 application/json 타입에서는 권장되며, 클라이언트가 본문을 올바르게 디코딩하는 데 사용됩니다
RFC: RFC 7231 섹션 3.1.1.5에서 Content-Type 헤더의 의미를 정의합니다
MDN: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Type브라우저 Blob 생성자
const blob = new Blob([data], { type: 'application/pdf' });
const url = URL.createObjectURL(blob);
참고: 이 type 값은 이후 blob을 다운로드하거나 업로드할 때 Content-Type이 됩니다. application/octet-stream을 피하려면 구체적인 서브타입을 지정하세요
MDN: https://developer.mozilla.org/en-US/docs/Web/API/Blob/Blob 에서 type 매개변수를 설명합니다카테고리별 주요 MIME 타입
텍스트: text/plain, text/html, text/css, text/javascript, text/markdown
이미지: image/jpeg, image/png, image/gif, image/webp, image/svg+xml
오디오: audio/mpeg, audio/wav, audio/ogg, audio/aac
비디오: video/mp4, video/webm, video/ogg
애플리케이션: application/json, application/pdf, application/xml, application/zip
IANA는 미디어 타입 레지스트리에서 최상위 타입 이름으로 이들을 분류합니다자주 묻는 질문
MIME 타입이란 무엇이고 왜 중요한가요?
MIME 타입(Multipurpose Internet Mail Extensions, 미디어 타입이라고도 함)은 text/html, image/png, application/json처럼 짧은 라벨로, 받는 쪽 소프트웨어가 바이트 스트림을 어떻게 해석할지 알려줍니다. 브라우저, 메일 클라이언트, 파일 업로더, API는 이 값을 보고 콘텐츠를 렌더링할지, 다운로드할지, 파싱할지, 거부할지를 결정합니다.
MIME 타입과 파일 확장자는 어떻게 다른가요?
확장자는 파일 이름의 일부일 뿐이며 단순한 명명 규약입니다. MIME 타입은 네트워크에서 Content-Type 헤더로 전달됩니다. 보통 둘은 일치하지만(.png ↔ image/png), 서버는 어떤 확장자에든 어떤 MIME 타입이든 붙여 보낼 수 있고, 브라우저는 확장자보다 헤더를 훨씬 더 신뢰합니다. 둘을 일치시키는 것은 좋은 습관이지만, 보안 판단을 확장자에 의존하는 것은 버그입니다.
application/octet-stream은 무엇을 의미하나요?
'임의의 바이너리 데이터'를 뜻하는 범용 MIME 타입입니다. 브라우저는 이 타입을 받으면 콘텐츠를 렌더링하지 않고 다운로드를 유도합니다. 서버는 형식을 식별하지 못할 때 이 값으로 폴백하는데, 이는 보통 MIME 매핑이 누락되었거나 잘못 설정되었음을 의미합니다. 가능하면 정확한 구체적인 타입으로 바꾸세요.
업로드된 파일을 검증할 때 Content-Type을 신뢰해도 되나요?
그것만으로는 안 됩니다. 누구든 실행 파일을 올리면서 image/png라고 주장할 수 있습니다. 항상 실제 바이트(magic number, PNG 헤더 89 50 4E 47, PDF 헤더 %PDF-, ZIP 헤더 PK)를 검사하고, 확장자도 확인하고, 서버 측 허용 목록을 강제하고, 파일 크기를 제한하세요. 브라우저가 추정한 MIME은 참고일 뿐 증거가 아닙니다.
다운로드 시 파일 이름이나 확장자가 잘못 저장되는 이유는 무엇인가요?
브라우저는 저장 이름을 Content-Disposition 헤더, URL 경로, MIME 타입 순으로 결정합니다. 서버가 PDF 다운로드에 text/html을 반환하면 브라우저가 .html로 저장할 수 있습니다. Content-Disposition: attachment; filename="name.pdf"와 함께 올바른 application/pdf MIME 타입을 설정해 두면 이런 문제를 피할 수 있습니다.
맞춤 형식이나 희귀 형식의 MIME 타입은 어떻게 찾나요?
먼저 IANA 미디어 타입 레지스트리(iana.org/assignments/media-types)를 확인하세요. 등록되지 않았거나 벤더 전용 형식은 application/vnd.* 또는 application/x-* 관례를 따릅니다(예: application/vnd.api+json, application/x-7z-compressed). 새 타입을 만들기 전에 가장 가까운 표준 타입을 먼저 사용하세요.
왜 .json과 .js의 MIME 타입이 다른가요?
JSON은 데이터이므로 application/json을 사용합니다. JavaScript는 실행 가능한 코드라 text/javascript 또는 application/javascript로 제공됩니다(RFC 9239에서 권장 타입을 text/javascript로 지정했습니다). 둘을 혼동하면 문제가 생깁니다. script 태그는 application/json을 실행하지 않고, text 변종만 허용하는 일부 서버는 application/javascript를 거부합니다.