MIME 타입 사전

파일 확장자에 해당하는 MIME 타입(Content-Type)을 검색합니다.

분류

항목을 클릭하면 MIME 타입이 복사됩니다. 텍스트 계열(text/*, application/json 등)은 한글이 깨지지 않도록 ; charset=utf-8 을 붙여 내려보내세요. 확장자만 믿지 말고 서버에서 실제 내용도 함께 검증해야 합니다.

MIME 타입 사전란?

웹 개발 중 파일 종류에 맞는 정확한 Content-Type(MIME 타입)이 생각나지 않아 막막했던 경험, 있으신가요? 서버가 브라우저에 파일 종류를 잘못 알리면 파일이 깨지거나, 다운로드되어 버리는 등 예상치 못한 오류가 발생합니다. 툴즈25시 MIME 타입 사전은 이런 문제를 해결하기 위해 만들어졌습니다. 파일 확장자나 MIME 타입은 물론, ‘엑셀’, ‘파워포인트’처럼 파일에 대한 설명만으로도 원하는 정보를 빠르게 찾을 수 있습니다. 웹, 문서, 이미지 등 자주 쓰는 수백 개의 MIME 타입을 정리했으며, 검색 결과에서 원하는 항목을 클릭하면 바로 복사됩니다. 특히 JSON, HTML 등 텍스트 기반 타입은 한글 깨짐을 방지하는 ‘; charset=utf-8’을 자동으로 추가해 주어 사소한 실수를 원천 차단합니다. 이제 헤더 정보를 찾느라 헤매지 마세요.

사용 방법

  1. 검색창에 ‘pdf’ 같은 파일 확장자, ‘application/json’ 같은 MIME 타입, 또는 ‘워드’, ‘엑셀’처럼 찾고 싶은 파일의 종류를 입력합니다.
  2. 입력과 동시에 실시간으로 검색 결과가 나타납니다. 자주 쓰는 타입이 위쪽에 먼저 표시됩니다.
  3. 결과를 더 좁히고 싶다면, 검색창 아래 ‘웹·코드’, ‘이미지’, ‘문서’ 등 분류 버튼을 눌러 필터링할 수 있습니다.
  4. 원하는 항목을 찾았다면 마우스로 클릭하세요. 해당 항목의 MIME 타입이 클립보드에 바로 복사됩니다.
  5. 텍스트 계열 타입(예: text/html, application/json)은 웹서버 전송 시 한글이 깨지지 않도록 ‘; charset=utf-8’이 자동으로 붙어서 복사됩니다.

MIME 타입 사전 사용 가이드

실제 작업에서 이 도구를 어떻게 쓰는지, 무엇을 조심해야 하는지 정리했습니다.

Content-Type이 틀리면 실제로 이런 일이 생깁니다

MIME 타입은 "이 파일이 무엇인지"를 브라우저에 알려주는 유일한 공식 통로입니다. 확장자는 참고 사항일 뿐이고, 브라우저는 서버가 보낸 Content-Type 헤더를 먼저 믿습니다. 그래서 이 값이 틀리면 파일은 멀쩡한데 동작만 이상해집니다.

증상흔한 원인고칠 방향
PDF·이미지가 화면에 안 뜨고 다운로드됨application/octet-streamapplication/pdf · image/png 등 정확한 타입
다운로드를 원했는데 브라우저에서 열림타입은 맞지만 지시가 없음Content-Disposition: attachment 를 함께 지정
CSS를 넣었는데 스타일이 적용 안 됨text/plaintext/css
자바스크립트 모듈이 로드 거부됨text/plain · octet-streamtext/javascript
웹폰트가 적용되지 않음octet-streamfont/woff2
내려받은 xlsx를 엑셀이 경고 후 엶vnd.ms-excel (옛 xls 타입)openxmlformats… .sheet (검색해서 복사)
브라우저는 타입이 미심쩍으면 내용을 훔쳐보고 추측하기도 합니다(MIME 스니핑). 이 추측이 보안 구멍이 되므로 응답에 X-Content-Type-Options: nosniff 를 붙여 막는 것이 표준 대응입니다. 다만 nosniff 를 켜는 순간 타입이 틀린 파일은 추측으로 구제되지 못하고 그대로 실패하니, 켜기 전에 타입부터 정확히 맞추세요.

charset=utf-8 을 언제 붙여야 하나

이 사전에서 text/html, application/json 처럼 텍스트 계열 항목에는 ; charset=utf-8 이 함께 표시되고, 항목을 클릭하면 그 접미사까지 붙은 상태로 복사됩니다. 이미지·압축 파일 같은 이진 파일에는 붙지 않습니다 — 글자 인코딩이라는 개념 자체가 없기 때문입니다.

charset을 빠뜨리면 브라우저가 인코딩을 추측합니다. 영문만 있는 페이지는 티가 안 나다가 한글이 들어가는 순간 깨집니다. 로컬에서는 멀쩡했는데 배포하고 나서 깨진다면 서버가 charset 없이 내려보내고 있을 가능성이 큽니다.

  • HTML: 응답 헤더의 charset이 문서 안의 meta charset 보다 우선합니다. 메타 태그를 고쳐도 안 고쳐지면 서버 헤더를 보세요.
  • JSON: application/json 은 규격상 UTF-8이 기본이라 charset이 없어도 대개 안전합니다. 명시해서 손해는 없습니다.
  • CSV: text/csv; charset=utf-8 로 내려보내도 엑셀은 그 헤더를 보지 않고 시스템 기본 인코딩(한국은 CP949)으로 열어 한글을 깹니다. 파일 맨 앞에 UTF-8 BOM(EF BB BF)을 넣어야 엑셀이 UTF-8로 인식합니다.
한글 파일명으로 다운로드시킬 때 깨지는 것은 Content-Type이 아니라 Content-Disposition 문제입니다. filename= 에 한글을 그대로 넣으면 깨지므로 filename*=UTF-8 형식을 함께 써야 합니다.

파일 업로드 검증에서 MIME만 믿으면 안 되는 이유

업로드 폼에서 브라우저가 붙여 보내는 Content-Type은 대부분 확장자만 보고 정한 값입니다. 즉 공격자가 마음대로 바꿀 수 있는 값입니다. exploit.php 를 image/png 라고 선언해 보내는 데는 개발자 도구도 필요 없고 curl 한 줄이면 됩니다. "MIME이 image/* 이면 통과"는 사실상 검증이 아닙니다.

  • 확장자 화이트리스트로 막으세요. 허용 목록 방식이어야 합니다 — 블랙리스트는 .phtml, .php5, 대문자 .PHP 같은 변종에 뚫립니다.
  • 파일 앞부분의 시그니처(매직 바이트)를 함께 확인하세요. PNG는 89 50 4E 47 로 시작합니다.
  • 저장할 파일명은 서버가 새로 만드세요. 사용자가 준 이름을 그대로 쓰면 경로 조작(../)과 확장자 위조가 같이 들어옵니다.
  • 업로드 디렉터리에서는 실행을 끄세요. 이 사전에 x-httpd-php 가 "이 타입으로 내보내면 안 됨"이라고 적힌 이유입니다.
  • SVG는 이미지처럼 보이지만 스크립트를 품을 수 있는 XML입니다. 사용자 업로드 SVG를 그대로 서빙하면 XSS가 됩니다. 별도 도메인에서 내려보내거나 새니타이징하세요.
MIME 검사는 사용자의 실수를 걸러주는 편의 기능이지 보안 장치가 아닙니다. 진짜 방어선은 확장자 화이트리스트 · 시그니처 검사 · 실행 차단 · 서빙 도메인 분리 네 가지입니다.

국내에서 특히 헷갈리는 타입들

한국 실무에서 자주 마주치는 포맷은 표준이 늦게 정리되었거나 국내 전용이라 표기가 통일되어 있지 않습니다. 이 사전은 현장에서 실제로 통용되는 값을 함께 적어두었습니다.

포맷이 사전의 값알아둘 점
HWPapplication/x-hwpapplication/haansofthwp 로 보내는 곳도 많습니다. 상대 시스템 기준에 맞추세요
HWPXapplication/vnd.hancom.hwpx개방형 표준. 실체가 ZIP이라 스니핑하면 zip으로 오인될 수 있습니다
ALZ · EGGx-alz-compressed · x-egg국내 전용이라 사실상 관례 표기입니다. 애매하면 octet-stream
xlsxopenxmlformats… .sheet길다고 vnd.ms-excel 로 대충 쓰면 옛 xls로 인식돼 경고가 뜹니다
민원·계약 서식을 HWP로 주고받는 공공 연계 업무에서는 상대 서버가 어떤 타입을 기대하는지 문서로 먼저 확인하는 편이 빠릅니다. 표준이 하나로 정해져 있지 않아 "맞는 값"보다 "상대가 받는 값"이 정답인 영역입니다.

검색 요령과 이 사전의 한계

검색창은 확장자(pdf), MIME(application/json), 설명 키워드(엑셀, 한글, 폰트) 중 아무거나 받습니다. 점을 붙여 .pdf 로 넣어도 되고, 위쪽 탭으로 확장자만 · MIME만 검색하도록 좁힐 수도 있습니다. 분류 칩으로 이미지·문서 같은 범주만 훑어볼 수도 있습니다.

이 사전은 웹 실무에서 쓰이는 값을 추린 것이지 IANA 공식 등록부 전체가 아닙니다. 여기 없는 특수 포맷은 IANA 미디어 타입 등록부를 직접 확인하고, 등록된 타입이 아예 없다면 application/octet-stream 이 정답입니다 — 무조건 다운로드로 처리됩니다.

bash
# 서버가 실제로 뭘 보내는지 확인 (헤더만)
curl -sI https://example.com/file.pdf | grep -i content-type

# 파일 내용으로 타입 추측 (확장자를 믿지 않음)
file --mime-type -b ./upload.png

자주 묻는 질문

MIME 타입이 왜 중요한가요?

웹 서버가 보내는 Content-Type 헤더를 보고 브라우저가 내용을 어떻게 처리할지 결정하기 때문입니다. 예를 들어 'text/html'은 화면에 렌더링하고, 'image/png'는 이미지로 표시하며, 'application/octet-stream'은 파일로 다운로드합니다. 잘못된 타입을 보내면 브라우저가 오작동하거나 보안 취약점이 발생할 수 있어 정확한 지정이 필수적입니다.

어떤 키워드로 검색할 수 있나요?

다양한 방식으로 검색할 수 있습니다. '.hwp' 같은 확장자, 'application/vnd.hancom.hwpx' 같은 MIME 타입 전체, 또는 '엑셀', '워드', '사진'처럼 파일에 대한 일반적인 설명으로도 검색이 가능합니다. 자주 쓰는 약어나 관련 용어도 포함하여 최대한 유연하게 찾을 수 있도록 만들었습니다.

복사할 때 ‘; charset=utf-8’은 왜 자동으로 붙나요?

HTML, CSS, JSON 등 텍스트 기반 파일에 한글 같은 다국어 문자가 포함될 때 인코딩 방식을 알려주지 않으면 글자가 깨질 수 있습니다. ‘charset=utf-8’은 UTF-8 방식으로 인코딩되었음을 명시하는 표준적인 방법입니다. 개발자가 이 부분을 놓치지 않도록, 텍스트 계열 타입 복사 시 편의를 위해 자동으로 추가해 드립니다.

찾는 확장자나 MIME 타입이 목록에 없습니다.

이 사전은 널리 쓰이는 표준 및 사실상의 표준 타입을 중심으로 계속 업데이트됩니다. 만약 목록에 없는 특정 파일이라면, 일반적으로 'application/octet-stream' 타입을 사용해 브라우저가 무조건 다운로드하도록 할 수 있습니다. 더 정확한 정보가 필요하다면 IANA 공식 미디어 타입 레지스트리를 참고할 수 있습니다.