staticdata.dev
Menu
Datasets About Contact

MIME Types

A curated list of 148 media types covering the formats you actually encounter — JSON variants, common application types, the common web image and video formats, audio, fonts, archives, and the most common Office and OpenDocument types — each with the file extensions associated with it and a one-line description of what the format is.

v1.0.0 MIT 148 records Updated 2026-10-05 stable Source:  IANA Media Types Registry

Quick fetch

Stable URL. CORS-enabled. No auth.

bash
curl https://staticdata.dev/v1/mime-types.json

Or use as a typed import: import { mimeTypes } from "https://staticdata.dev/v1/mime-types.ts"

Formats

  • JSON 26.4 KB

    /v1/mime-types.json

    Open

    min: 19.5 KB · /v1/mime-types.min.json

  • CSV 9.7 KB

    /v1/mime-types.csv

    Open
  • TypeScript 26.6 KB

    /v1/mime-types.ts

    export const mimeTypes

    type MimeType = (typeof mimeTypes)[number]

    Open

Schema

Each record in the dataset has the following shape.

Schema
Field Type Description Example
type string Top-level type application
subtype string Subtype json
fullName string Full type/subtype string application/json
extensions string[] File extensions associated with the type (without leading dot) ["json"]
description string Human-readable description JSON data

Preview

First 10 records.

Data preview
typesubtypefullNamedescription
applicationjsonapplication/jsonJSON data
applicationld+jsonapplication/ld+jsonJSON-LD (Linked Data) document
applicationmanifest+jsonapplication/manifest+jsonWeb App Manifest
applicationxmlapplication/xmlXML document
applicationxhtml+xmlapplication/xhtml+xmlXHTML document
applicationatom+xmlapplication/atom+xmlAtom syndication feed
applicationrss+xmlapplication/rss+xmlRSS syndication feed
applicationjavascriptapplication/javascriptJavaScript program (obsolete per RFC 9239; use text/javascript)
applicationecmascriptapplication/ecmascriptECMAScript program (obsolete per RFC 9239; use text/javascript)
applicationwasmapplication/wasmWebAssembly binary

Showing 10 of 148. View full data:  JSON · CSV

Fetch examples

Drop-in snippets in five languages.

curl
curl -sSL https://staticdata.dev/v1/mime-types.json | jq '.[0]'
JavaScript
import type { MimeType } from "https://staticdata.dev/v1/mime-types.ts";

const res = await fetch("https://staticdata.dev/v1/mime-types.min.json");
if (!res.ok) throw new Error(`Fetch failed: ${res.status}`);
const mimeTypes: MimeType[] = await res.json();
console.log(mimeTypes[0]);
Python
import urllib.request, json

with urllib.request.urlopen("https://staticdata.dev/v1/mime-types.min.json") as r:
    mimeTypes = json.load(r)

print(mimeTypes[0])
Go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
)

func main() {
	resp, err := http.Get("https://staticdata.dev/v1/mime-types.min.json")
	if err != nil { panic(err) }
	defer resp.Body.Close()

	var data []map[string]any
	if err := json.NewDecoder(resp.Body).Decode(&data); err != nil {
		panic(err)
	}
	fmt.Println(data[0])
}
Rust
use serde_json::Value;

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let body = ureq::get("https://staticdata.dev/v1/mime-types.min.json").call()?.into_string()?;
    let data: Vec<Value> = serde_json::from_str(&body)?;
    println!("{:?}", data.first());
    Ok(())
}

Sources and methodology

The IANA registry contains thousands of types, including a long tail of vendor-specific (vnd.*) entries that exist only because a single product registered them. This dataset focuses on the types you’d plausibly need in a content-type lookup or file-extension router.

The mapping between extensions and types is many-to-many: a single extension can be associated with multiple types (.ts is both TypeScript source and MPEG Transport Stream), and a single type can have multiple extensions (.jpg/.jpeg/.jpe). When implementing extension-to-type lookup, you must resolve ambiguity using context.

The extensions array can be empty for types that have no associated file extension (e.g., application/x-www-form-urlencoded, multipart/*).

Not every entry is in the IANA registry: widely used but unregistered types (x- types such as application/x-tar, plus de-facto types like audio/wav, video/webm and text/event-stream) are included because real servers send them. Where a legacy or unregistered spelling coexists with a registered one for the same format (application/x-font-ttf vs. font/ttf, application/x-rar-compressed vs. application/vnd.rar, video/x-matroska vs. video/matroska, application/javascript vs. text/javascript), both entries are included so legacy lookups continue to work; the description notes which is current. Registration status is as of October 2026.

Versioning

URLs under /v1/ are stable: field names and types will not change in a way that breaks consumers. Values can be corrected or records added when the upstream source changes; schema-incompatible updates ship under a new version path. See the mime-types changelog for this dataset's history.

Related datasets

More Web datasets