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.
Quick fetch
Stable URL. CORS-enabled. No auth.
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
min: 102.1 KB · /v1/programming-languages.min.json
- CSV 41.5 KB
/v1/programming-languages.csv
- TypeScript 156.5 KB
/v1/programming-languages.ts
export const programmingLanguages
type ProgrammingLanguage = (typeof programmingLanguages)[number]
Schema
Each record in the dataset has the following shape.
| 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.
| name | type | color | languageId |
|---|---|---|---|
| 1C Enterprise | programming | #814CCC | 0 |
| 2-Dimensional Array | data | #38761D | 387204628 |
| 4D | programming | #004289 | 577529595 |
| ABAP | programming | #E8274B | 1 |
| ABAP CDS | programming | #555e25 | 452681853 |
| ABNF | data | 429 | |
| ActionScript | programming | #882B0F | 10 |
| Ada | programming | #02f88c | 11 |
| Adblock Filter List | data | #800000 | 884614762 |
| Adobe Font Metrics | data | #fa0f00 | 147198098 |
Fetch examples
Drop-in snippets in five languages.
curl -sSL https://staticdata.dev/v1/programming-languages.json | jq '.[0]' 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]); 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]) 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])
} 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
- ansi-colors
- ascii
- cron-presets
- css-at-rules
- css-functions
- css-named-colors
- css-properties
- css-pseudo-classes
- css-pseudo-elements
- css-units
- data-units
- exit-codes
- file-signatures
- hash-algorithms
- js-array-methods
- js-math-methods
- js-object-methods
- js-string-methods
- json-schema-keywords
- jwt-claims
- mathematical-constants
- measurement-units
- node-builtin-modules
- owasp-top-10
- periodic-table
- physical-constants
- posix-signals
- regex-flags
- regex-patterns
- roman-numerals
- si-base-units
- si-derived-units
- si-prefixes
- strftime-tokens
- tailwind-colors
- time-units
- unicode-blocks
- unicode-general-categories
- unicode-planes
- unix-file-permissions
- xterm-256-colors