staticdata.dev
Menu
Datasets About Contact

Programming Languages

The 833 languages GitHub recognizes via Linguist (v9.7.0, as of October 2026) — the library that powers language detection, the repository language bar, and syntax highlighting on GitHub. Each entry gives the canonical name, its type (programming, markup, data, or prose), associated file extensions, common aliases, and the highlight color GitHub uses.

v1.0.0 MIT 833 records Updated 2026-10-05 stable Source:  GitHub Linguist — languages.yml

Quick fetch

Stable URL. CORS-enabled. No auth.

bash
curl https://staticdata.dev/v1/programming-languages.json

Or use as a typed import: import { programmingLanguages } from "https://staticdata.dev/v1/programming-languages.ts"

Formats

  • JSON 156.3 KB

    /v1/programming-languages.json

    Open

    min: 102.1 KB · /v1/programming-languages.min.json

  • CSV 41.5 KB

    /v1/programming-languages.csv

    Open
  • TypeScript 156.5 KB

    /v1/programming-languages.ts

    export const programmingLanguages

    type ProgrammingLanguage = (typeof programmingLanguages)[number]

    Open

Schema

Each record in the dataset has the following shape.

Schema
Field Type Description Example
name string Canonical language name TypeScript
type string programming, markup, data, or prose programming
color string | null Hex highlight color, or null #3178c6
extensions string[] Associated file extensions (primary first) [".ts",".cts",".mts"]
aliases string[] Alternative names ["ts"]
languageId number Linguist's internal numeric id 378

Preview

First 10 records.

Data preview
nametypecolorlanguageId
1C Enterpriseprogramming#814CCC0
2-Dimensional Arraydata#38761D387204628
4Dprogramming#004289577529595
ABAPprogramming#E8274B1
ABAP CDSprogramming#555e25452681853
ABNFdata429
ActionScriptprogramming#882B0F10
Adaprogramming#02f88c11
Adblock Filter Listdata#800000884614762
Adobe Font Metricsdata#fa0f00147198098

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

Fetch examples

Drop-in snippets in five languages.

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

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

with urllib.request.urlopen("https://staticdata.dev/v1/programming-languages.min.json") as r:
    programmingLanguages = json.load(r)

print(programmingLanguages[0])
Go
package main

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

func main() {
	resp, err := http.Get("https://staticdata.dev/v1/programming-languages.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/programming-languages.min.json").call()?.into_string()?;
    let data: Vec<Value> = serde_json::from_str(&body)?;
    println!("{:?}", data.first());
    Ok(())
}

Sources and methodology

The data is generated from languages.yml in GitHub’s Linguist project, the de facto reference for how source files are classified across the ecosystem. Entries are sorted by name. The list reflects Linguist v9.7.0 as of October 2026; Linguist adds and renames languages regularly. For backwards compatibility two entries keep their earlier Linguist names: SaltStack (now Salt upstream) and Vim Script (now Vim script).

type follows Linguist’s own taxonomy: programming for languages, markup for markup languages, data for data/config formats, and prose for human-readable text formats. color is the hue Linguist assigns for the repository language bar and is null for languages without one. extensions preserves Linguist’s ordering, with each language’s primary extension listed first. Linguist also tracks filenames (e.g. Makefile, Dockerfile) and other detection heuristics that are out of scope here; this dataset captures the extension and alias mappings, which are what most tooling needs. Linguist itself is MIT-licensed.

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 programming-languages changelog for this dataset's history.

Related datasets

More Code datasets