staticdata.dev
Menu
Datasets About Contact

MIME Types

A curated subset of the IANA media type registry covering the formats you actually encounter — JSON variants, common application types, every web image and video format, 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 142 records Updated 2026-04-25 stable Source:  IANA Media Types Registry

Quick fetch

Stable, immutable 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 25.0 KB

    /v1/mime-types.json

    Open

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

  • CSV 9.0 KB

    /v1/mime-types.csv

    Open
  • TypeScript 25.2 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 (legacy; prefer text/javascript)
applicationecmascriptapplication/ecmascriptECMAScript program
applicationwasmapplication/wasmWebAssembly binary

Showing 10 of 142. 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/*).

Where the IANA registry has both a deprecated and a current spelling for the same format (application/x-font-ttf vs. font/ttf), both entries are included so legacy lookups continue to work; the description notes which is current.

Versioning

URLs under /v1/ are immutable. The data they return will not change in a way that breaks consumers. Schema-incompatible updates ship under a new version path. See the mime-types changelog for this dataset's history.

Related datasets