https://github.com/eljijuna/code-languages
Typed, zero-dependency metadata for programming languages: names, versions, extensions, logos, i18n, detection helpers, and lazy-loadable API for developer tools, docs, IDEs, and code analysis workflows.
https://github.com/eljijuna/code-languages
api code-lang code-language code-language-detector typescript
Last synced: 12 days ago
JSON representation
Typed, zero-dependency metadata for programming languages: names, versions, extensions, logos, i18n, detection helpers, and lazy-loadable API for developer tools, docs, IDEs, and code analysis workflows.
- Host: GitHub
- URL: https://github.com/eljijuna/code-languages
- Owner: ElJijuna
- License: mit
- Created: 2026-05-09T23:54:27.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-06-28T01:55:35.000Z (14 days ago)
- Last Synced: 2026-06-28T03:15:41.284Z (14 days ago)
- Topics: api, code-lang, code-language, code-language-detector, typescript
- Language: TypeScript
- Homepage: https://eljijuna.github.io/code-languages/
- Size: 4 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Roadmap: ROADMAP.md
Awesome Lists containing this project
README
# code-languages
[](https://www.npmjs.com/package/code-languages)
[](https://github.com/ElJijuna/code-languages/actions/workflows/pull-request.yml)
[](https://github.com/ElJijuna/code-languages/actions/workflows/docs.yml)
[](LICENSE)
[](https://www.typescriptlang.org)
[](package.json)
Structured metadata for programming languages, packaged as a typed, tree-shakeable TypeScript library.
`code-languages` is useful when you need a small source of truth for language names, slugs, file extensions, release metadata, websites, paradigms, logos, and reference colors in developer tools, docs sites, learning platforms, or editor-like interfaces.
## Features
- TypeScript-first data model
- Zero runtime dependencies
- ESM and CommonJS builds
- Subpath imports for per-language usage
- Tree-shakeable exports
- Localized content in English, Spanish, Italian, French, German, and Portuguese
- Works in Node.js and modern bundlers
## Installation
```bash
npm install code-languages
```
## Usage
Import only the language metadata you need:
```ts
import { typescript } from "code-languages/typescript";
import { localizeLanguage } from "code-languages/i18n";
const localized = localizeLanguage(typescript, "en");
console.log(localized.name);
console.log(localized.description);
console.log(typescript.extensions);
console.log(typescript.paradigms);
```
Import multiple languages:
```ts
import { abap } from "code-languages/abap";
import { actionscript } from "code-languages/actionscript";
console.log(abap.version);
console.log(actionscript.extensions);
```
Import from the package root when bundle size is not a concern:
```ts
import {
abap,
actionscript,
} from "code-languages";
console.log(localizeLanguage(abap).description);
console.log(localizeLanguage(actionscript, "es").description);
```
## API
Every language object satisfies the `Language` interface:
```ts
export type BaseLocale = "en" | "es" | "it" | "fr" | "de" | "pt";
export type Locale = BaseLocale | `${BaseLocale}-${string}` | string;
export interface LanguageContent {
name: string;
description: string;
longDescription: string;
}
export interface Language {
slug: string;
publishedDate: string;
extensions: string[];
author: string;
website: string;
paradigms: string[];
tooling?: {
runtimes?: string[];
packageManagers?: string[];
ecosystems?: string[];
};
version: string;
logo: string;
color: `#${string}`;
i18n: {
en: LanguageContent;
es?: LanguageContent;
it?: LanguageContent;
fr?: LanguageContent;
de?: LanguageContent;
pt?: LanguageContent;
};
}
```
Use the fluent API when you want one entry point for localization, dynamic loading,
and filename detection:
```ts
import { api } from "code-languages/api";
const astro = api.language("astro").locale("es-PE").get();
const vue = await api.language("vue").locale("en-US").load();
const detected = api.detect("src/App.vue").locale("es").get();
const ambiguous = await api.detectAll("include/config.h").locale("en").load();
console.log(astro?.resolvedLocale); // "es"
console.log(vue?.slug); // "vue"
console.log(detected?.name); // "Vue"
console.log(ambiguous.map((language) => language.slug)); // ["c", "cpp"]
```
`api.language(...)` normalizes lookup values to the package slug format, so inputs
such as `"Visual Basic"` and `"Jupyter Notebook!"` resolve to `visual-basic` and
`jupyter-notebook`.
`get()` reads from the bundled in-memory catalog. `load()` uses explicit dynamic
imports so bundlers can lazy-load individual language modules when the consumer
build supports code splitting.
Use `api.runtime(value)` to query languages that run on a specific platform or runtime environment:
```ts
import { api } from "code-languages/api";
// Get runtime metadata
const info = api.runtime('node').info();
// {
// slug: 'node',
// name: 'Node.js',
// color: '#339933',
// logo: 'https://cdn.simpleicons.org/nodedotjs',
// website: 'https://nodejs.org',
// aliases: ['node', 'nodejs', 'node.js'],
// packageManagers: ['npm', 'pnpm', 'Yarn', 'Bun'],
// }
// Get languages that target this runtime
const langs = api.runtime('node').langs().get();
const langsEs = api.runtime('.net').langs().locale('es').get();
await api.runtime('jvm').langs().load();
// Returns undefined / [] for unknown values
api.runtime('unknown-xyz').info(); // undefined
api.runtime('unknown-xyz').langs().get(); // []
```
Supported runtime aliases include: `node` / `nodejs` / `node.js`, `bun`, `deno`, `browser`,
`.net` / `dotnet`, `jvm` / `java`, `android`, `ios`, `python`, `ruby`, `rust`, `go` / `golang`,
`wasm`, `sql`, and many more. Searches `tooling.runtimes` and `tooling.ecosystems` on each language.
Use `api.packageManager(value)` to query languages that use a specific package manager:
```ts
import { api } from "code-languages/api";
// Get package manager metadata
const info = api.packageManager('npm').info();
// {
// slug: 'npm',
// name: 'npm',
// color: '#CB3837',
// logo: 'https://cdn.simpleicons.org/npm',
// website: 'https://npmjs.com',
// aliases: ['npm'],
// }
// Get languages that use this package manager
const langs = api.packageManager('cargo').langs().get();
const langsEs = api.packageManager('pip').langs().locale('es').get();
// Get runtime platforms that include this package manager
const runtimes = api.packageManager('npm').runtimes();
// [{ name: 'Node.js', ... }, { name: 'Bun', ... }, { name: 'Deno', ... }]
// Returns undefined / [] for unknown values
api.packageManager('unknown-xyz').info(); // undefined
api.packageManager('unknown-xyz').langs().get(); // []
api.packageManager('unknown-xyz').runtimes(); // []
```
Supported package manager aliases include: `npm`, `pnpm`, `yarn`, `pip`, `poetry`, `uv`,
`cargo`, `maven`, `gradle`, `nuget`, `composer`, `hex`, `spm`, `rubygems`, `go-mod`,
`luarocks`, `opam`, `cpan`, and more. Searches `tooling.packageManagers` on each language.
Use `localizeLanguage` to read localized display content with English fallback:
```ts
import { json } from "code-languages/json";
import { localizeLanguage } from "code-languages/i18n";
const language = localizeLanguage(json, "es-PE");
console.log(language.name);
console.log(language.longDescription);
console.log(language.resolvedLocale); // "es"
```
`localizeLanguage` resolves locales in this order:
1. Exact locale, for example `es`.
2. Base language from a regional locale, for example `es-PE` -> `es`.
3. English fallback, for example `ja-JP` -> `en`.
English, Spanish, Italian, French, German, and Portuguese are supported base locales.
The current Italian, French, German, and Portuguese translations were initially
generated with `translategemma:4b`; translation reviews and corrections are welcome.
Use `detectLanguage` or `detectLanguages` to infer languages from filenames:
```ts
import { detectLanguage, detectLanguages } from "code-languages/detect";
console.log(detectLanguage("src/index.ts")?.slug); // "typescript"
console.log(detectLanguage("Dockerfile")?.slug); // "dockerfile"
console.log(detectLanguages("include/config.h").map((language) => language.slug)); // ["c", "cpp"]
```
Use `detectLanguageSlug` or `detectLanguageSlugs` when you only need the slug
and want to avoid importing the full language catalog:
```ts
import { detectLanguageSlug, detectLanguageSlugs } from "code-languages/detect-slugs";
console.log(detectLanguageSlug("src/index.ts")); // "typescript"
console.log(detectLanguageSlugs("include/config.h")); // ["c", "cpp"]
```
Use `detectProjectLanguages` to summarize a project file list by detected language:
```ts
import { detectProjectLanguages } from "code-languages/detect-slugs";
const files = ["src/index.ts", "src/app.ts", "README.md", "styles/main.css", "LICENSE"];
console.log(detectProjectLanguages(files));
// [
// { slug: "typescript", files: 2 },
// { slug: "css", files: 1 },
// { slug: "markdown", files: 1 }
// ]
```
## Supported Languages
The catalog currently includes 264 language entries. Each row can be imported directly
from its package subpath.
| Logo | Language | Slug | Extensions | Version | Import |
|---|---|---|---|---|---|
|
| ABAP | `abap` | `.abap` | `ABAP Platform 2025 FPS01` | `code-languages/abap` |
|
| ActionScript | `actionscript` | `.as` | `3.0` | `code-languages/actionscript` |
|
| Ada | `ada` | `.adb`, `.ads`, `.ada` | `Ada 2022` | `code-languages/ada` |
|
| Agda | `agda` | `.agda`, `.lagda`, `.lagda.md`, `.lagda.rst`, `.lagda.tex` | `2.8.0` | `code-languages/agda` |
|
| ALGOL | `algol` | `.alg`, `.algol` | `ALGOL 68` | `code-languages/algol` |
|
| AMPL | `ampl` | `.mod`, `.dat`, `.run` | `stable` | `code-languages/ampl` |
|
| Ante | `ante` | `.ante` | `experimental` | `code-languages/ante` |
|
| ANTLR Grammar | `antlr` | `.g4` | `4.13.2` | `code-languages/antlr` |
|
| Apex | `apex` | `.cls`, `.trigger` | `API 66.0` | `code-languages/apex` |
|
| APL | `apl` | `.apl`, `.dyalog` | `ISO/IEC 13751:2001` | `code-languages/apl` |
|
| AppleScript | `applescript` | `.applescript`, `.scpt`, `.scptd` | `2.8` | `code-languages/applescript` |
|
| Arduino Sketch | `arduino` | `.ino`, `.pde` | `Arduino API 1.0` | `code-languages/arduino` |
|
| AQL | `aql` | `.aql` | `ArangoDB AQL` | `code-languages/aql` |
|
| AsciiDoc | `asciidoc` | `.adoc`, `.asciidoc`, `.asc` | `pre-spec` | `code-languages/asciidoc` |
|
| ASP/ASPX | `asp` | `.asp`, `.aspx`, `.ascx`, `.ashx`, `.asmx`, `.master` | `4.8.1` | `code-languages/asp` |
|
| Assembly | `assembly` | `.asm`, `.s`, `.S`, `.inc` | `Architecture-specific` | `code-languages/assembly` |
|
| Astro | `astro` | `.astro` | `7.0.3` | `code-languages/astro` |
|
| Austral | `austral` | `.aum`, `.aui` | `0.1.0` | `code-languages/austral` |
|
| AutoHotkey | `autohotkey` | `.ahk`, `.ah2` | `2.0` | `code-languages/autohotkey` |
|
| Avro IDL | `avro-idl` | `.avdl` | `1.12.1` | `code-languages/avro-idl` |
|
| awk | `awk` | `.awk` | `GNU Awk 5.4.0` | `code-languages/awk` |
|
| Ballerina | `ballerina` | `.bal` | `2201.12.0` | `code-languages/ballerina` |
|
| Bash | `bash` | `.sh`, `.bash`, `.bashrc`, `.bash_profile`, `.bash_login`, `.profile` | `5.3` | `code-languages/bash` |
|
| Batch | `batch` | `.bat`, `.cmd` | `Windows Command Processor` | `code-languages/batch` |
|
| Bazel | `bazel` | `BUILD.bazel`, `WORKSPACE`, `WORKSPACE.bazel`, `MODULE.bazel` | `9.1.1` | `code-languages/bazel` |
|
| BCPL | `bcpl` | `.bcpl` | `Cintsys BCPL` | `code-languages/bcpl` |
|
| BibTeX | `bibtex` | `.bib`, `.bibtex` | `stable` | `code-languages/bibtex` |
|
| Bicep | `bicep` | `.bicep`, `.bicepparam` | `0.44.1` | `code-languages/bicep` |
|
| Blade | `blade` | `.blade.php` | `Laravel 12.x` | `code-languages/blade` |
|
| Bosque | `bosque` | `.bsq` | `experimental` | `code-languages/bosque` |
|
| BQN | `bqn` | `.bqn` | `BQN specification` | `code-languages/bqn` |
|
| Brainfuck | `brainfuck` | `.bf`, `.b` | `stable` | `code-languages/brainfuck` |
|
| C | `c` | `.c`, `.h` | `C23` | `code-languages/c` |
|
| Cairo | `cairo` | `.cairo` | `2.11.4` | `code-languages/cairo` |
|
| Cap'n Proto | `capnproto` | `.capnp` | `stable` | `code-languages/capnproto` |
|
| Carbon | `carbon` | `.carbon` | `0.0.0 nightly` | `code-languages/carbon` |
|
| Common Expression Language | `cel` | `.cel` | `0.25.2` | `code-languages/cel` |
|
| Chapel | `chapel` | `.chpl` | `2.9.0` | `code-languages/chapel` |
|
| Circom | `circom` | `.circom` | `2.2.3` | `code-languages/circom` |
|
| Clojure | `clojure` | `.clj`, `.cljs`, `.cljc`, `.edn`, `.bb` | `1.12.5` | `code-languages/clojure` |
|
| CMake | `cmake` | `CMakeLists.txt`, `.cmake` | `4.3.4` | `code-languages/cmake` |
|
| COBOL | `cobol` | `.cob`, `.cbl`, `.cobol`, `.cpy` | `ISO/IEC 1989:2023` | `code-languages/cobol` |
|
| CoffeeScript | `coffeescript` | `.coffee`, `.litcoffee`, `.cson` | `2.7.0` | `code-languages/coffeescript` |
|
| ColdFusion | `coldfusion` | `.cfm`, `.cfml`, `.cfc` | `ColdFusion 2025` | `code-languages/coldfusion` |
|
| Coq / Rocq | `coq` | `.v` | `9.2.0` | `code-languages/coq` |
|
| C++ | `cpp` | `.cpp`, `.cc`, `.cxx`, `.h`, `.hpp`, `.hh`, `.hxx` | `C++23` | `code-languages/cpp` |
|
| Crystal | `crystal` | `.cr` | `1.20.2` | `code-languages/crystal` |
|
| CQL | `cql` | `.cql` | `CQL 3` | `code-languages/cql` |
|
| C# | `csharp` | `.cs`, `.csx` | `14` | `code-languages/csharp` |
|
| CSS | `css` | `.css` | `Living Standard` | `code-languages/css` |
|
| CUDA | `cuda` | `.cu`, `.cuh` | `13.3.0` | `code-languages/cuda` |
|
| CUE | `cue` | `.cue` | `0.16.1` | `code-languages/cue` |
|
| Curry | `curry` | `.curry`, `.lcurry` | `Curry 0.9.0` | `code-languages/curry` |
|
| Cypher | `cypher` | `.cypher`, `.cyp` | `25` | `code-languages/cypher` |
|
| Cython | `cython` | `.pyx`, `.pxd`, `.pxi` | `3.2.6` | `code-languages/cython` |
|
| D | `d` | `.d`, `.di` | `2.112.0` | `code-languages/d` |
|
| Dafny | `dafny` | `.dfy` | `4.11.0` | `code-languages/dafny` |
|
| Dart | `dart` | `.dart` | `3.12.2` | `code-languages/dart` |
|
| Dhall | `dhall` | `.dhall` | `23.1.0` | `code-languages/dhall` |
|
| DITA | `dita` | `.dita`, `.ditamap`, `.ditaval` | `1.3` | `code-languages/dita` |
|
| Dockerfile | `dockerfile` | `Dockerfile`, `.dockerfile` | `1.10` | `code-languages/dockerfile` |
|
| DOT | `dot` | `.dot`, `.gv` | `stable` | `code-languages/dot` |
|
| Earthly | `earthly` | `Earthfile` | `0.8.16` | `code-languages/earthly` |
|
| EditorConfig | `editorconfig` | `.editorconfig` | `stable` | `code-languages/editorconfig` |
|
| Eiffel | `eiffel` | `.e` | `24.05` | `code-languages/eiffel` |
|
| EJS | `ejs` | `.ejs` | `3.1.10` | `code-languages/ejs` |
|
| Elixir | `elixir` | `.ex`, `.exs`, `.eex`, `.leex`, `.heex` | `1.20.2` | `code-languages/elixir` |
|
| Elm | `elm` | `.elm` | `0.19.1` | `code-languages/elm` |
|
| ERB | `erb` | `.erb`, `.rhtml`, `.html.erb` | `Ruby stdlib` | `code-languages/erb` |
|
| Erlang | `erlang` | `.erl`, `.hrl`, `.app.src`, `.escript`, `.xrl`, `.yrl`, `rebar.config` | `OTP 29.0.2` | `code-languages/erlang` |
|
| Factor | `factor` | `.factor` | `0.101` | `code-languages/factor` |
|
| Fe | `fe` | `.fe` | `experimental` | `code-languages/fe` |
|
| Fennel | `fennel` | `.fnl` | `1.6.1` | `code-languages/fennel` |
|
| Fish | `fish` | `.fish` | `4.8.0` | `code-languages/fish` |
|
| FlatBuffers | `flatbuffers` | `.fbs` | `25.12.19` | `code-languages/flatbuffers` |
|
| Flux | `flux` | `.flux` | `0.200.0` | `code-languages/flux` |
|
| Forth | `forth` | `.fs`, `.fth`, `.forth`, `.4th` | `Forth 2012` | `code-languages/forth` |
|
| Fortran | `fortran` | `.f`, `.for`, `.ftn`, `.f90`, `.f95`, `.f03`, `.f08`, `.f18`, `.f23` | `Fortran 2023` | `code-languages/fortran` |
|
| FreeMarker | `freemarker` | `.ftl`, `.ftlh`, `.ftlx` | `2.3.34` | `code-languages/freemarker` |
|
| FQL | `fql` | `.fql` | `legacy` | `code-languages/fql` |
|
| F# | `fsharp` | `.fs`, `.fsi`, `.fsx`, `.fsscript` | `10` | `code-languages/fsharp` |
|
| F* | `fstar` | `.fst`, `.fsti` | `2026.04.17` | `code-languages/fstar` |
|
| G-code | `gcode` | `.gcode`, `.gco`, `.nc`, `.cnc`, `.tap` | `RS-274` | `code-languages/gcode` |
|
| GDScript | `gdscript` | `.gd` | `4.7` | `code-languages/gdscript` |
|
| Gettext | `gettext` | `.po`, `.pot` | `stable` | `code-languages/gettext` |
|
| Git | `git` | `.git`, `.gitignore`, `.gitattributes`, `.gitmodules`, `.gitkeep` | `2.54.0` | `code-languages/git` |
|
| AngelScript | `angelscript` | `.as`, `.angelscript` | `2.36.1` | `code-languages/angelscript` |
|
| Gleam | `gleam` | `.gleam` | `1.17.0` | `code-languages/gleam` |
|
| GML | `gml` | `.gml` | `2024.13.0` | `code-languages/gml` |
|
| GLSL | `glsl` | `.glsl`, `.vert`, `.frag`, `.geom`, `.tesc`, `.tese`, `.comp`, `.vs`, `.fs` | `4.60` | `code-languages/glsl` |
|
| Go | `go` | `.go` | `1.26.4` | `code-languages/go` |
|
| Gradle | `gradle` | `.gradle`, `.gradle.kts` | `9.6.1` | `code-languages/gradle` |
|
| Grain | `grain` | `.gr` | `grain-v0.7.2` | `code-languages/grain` |
|
| GraphQL | `graphql` | `.graphql`, `.gql`, `.graphqls` | `September 2025` | `code-languages/graphql` |
|
| Gremlin | `gremlin` | `.gremlin`, `.grem` | `stable` | `code-languages/gremlin` |
|
| Groovy | `groovy` | `.groovy`, `.gvy`, `.gy`, `.gsh` | `5.0.6` | `code-languages/groovy` |
|
| Hack | `hack` | `.hack`, `.hh`, `.hhi` | `HHVM 4.x` | `code-languages/hack` |
|
| Haml | `haml` | `.haml` | `7.2.0` | `code-languages/haml` |
|
| Handlebars | `handlebars` | `.hbs`, `.handlebars` | `4.7.9` | `code-languages/handlebars` |
|
| Hare | `hare` | `.ha` | `0.25.1` | `code-languages/hare` |
|
| Haskell | `haskell` | `.hs`, `.lhs`, `.hsc`, `.hs-boot`, `.hsig`, `.cabal` | `GHC 9.14.1` | `code-languages/haskell` |
|
| Haxe | `haxe` | `.hx`, `.hxml` | `4.3.7` | `code-languages/haxe` |
|
| HCL | `hcl` | `.hcl`, `.tf`, `.tfvars`, `.pkr.hcl`, `.nomad` | `2.24.0` | `code-languages/hcl` |
|
| HLSL | `hlsl` | `.hlsl`, `.fx`, `.fxh`, `.hlsli` | `Shader Model 6.9` | `code-languages/hlsl` |
|
| HOCON | `hocon` | `.hocon` | `1.4.3` | `code-languages/hocon` |
|
| HTML | `html` | `.html`, `.htm` | `Living Standard` | `code-languages/html` |
|
| Hy | `hy` | `.hy` | `1.0.0` | `code-languages/hy` |
|
| Idris | `idris` | `.idr`, `.lidr`, `.ipkg` | `0.8.0` | `code-languages/idris` |
|
| INI | `ini` | `.ini` | `Informal format` | `code-languages/ini` |
|
| Ink! | `ink` | `.ink` | `Ink! 6` | `code-languages/ink` |
|
| Ink | `ink-narrative` | `.ink` | `1.2.0` | `code-languages/ink-narrative` |
|
| Io | `io` | `.io` | `2017.09.06` | `code-languages/io` |
|
| Isabelle | `isabelle` | `.thy` | `Isabelle2025-2` | `code-languages/isabelle` |
|
| Janet | `janet` | `.janet`, `.jdn` | `1.41.2` | `code-languages/janet` |
|
| Java | `java` | `.java` | `26` | `code-languages/java` |
|
| JavaScript | `javascript` | `.js`, `.mjs`, `.cjs`, `.jsx` | `ECMAScript 2025` | `code-languages/javascript` |
|
| Jinja | `jinja` | `.jinja`, `.jinja2`, `.j2` | `3.1.6` | `code-languages/jinja` |
|
| JMESPath | `jmespath` | `.jmespath`, `.jp` | `stable` | `code-languages/jmespath` |
|
| JSON | `json` | `.json` | `RFC 8259` | `code-languages/json` |
|
| JSON5 | `json5` | `.json5` | `2.2.3` | `code-languages/json5` |
|
| JSONata | `jsonata` | `.jsonata` | `stable` | `code-languages/jsonata` |
|
| JSONC | `jsonc` | `.jsonc`, `.code-workspace` | `JSON with Comments` | `code-languages/jsonc` |
|
| Jsonnet | `jsonnet` | `.jsonnet`, `.libsonnet` | `0.22.0` | `code-languages/jsonnet` |
|
| Julia | `julia` | `.jl` | `1.12.6` | `code-languages/julia` |
|
| Jupyter Notebook | `jupyter-notebook` | `.ipynb` | `nbformat 4.5` | `code-languages/jupyter-notebook` |
|
| Just | `just` | `justfile`, `Justfile`, `.just` | `1.44.0` | `code-languages/just` |
|
| KCL | `kcl` | `.k`, `.kcl` | `0.11.2` | `code-languages/kcl` |
|
| KDL | `kdl` | `.kdl` | `2.0.0` | `code-languages/kdl` |
|
| Koka | `koka` | `.kk` | `3.2.2` | `code-languages/koka` |
|
| Kotlin | `kotlin` | `.kt`, `.kts` | `2.4.0` | `code-languages/kotlin` |
|
| KQL | `kql` | `.kql` | `stable` | `code-languages/kql` |
|
| Lean | `lean` | `.lean` | `4.31.0` | `code-languages/lean` |
|
| Less | `less` | `.less` | `4.6.7` | `code-languages/less` |
|
| Ligo | `ligo` | `.ligo`, `.mligo`, `.religo`, `.jsligo` | `1.x` | `code-languages/ligo` |
|
| Linker Script | `linkerscript` | `.ld`, `.lds`, `.x` | `stable` | `code-languages/linkerscript` |
|
| Liquid | `liquid` | `.liquid` | `10.27.1` | `code-languages/liquid` |
|
| Lisp | `lisp` | `.lisp`, `.lsp`, `.cl`, `.asd` | `ANSI INCITS 226-1994` | `code-languages/lisp` |
|
| LLVM IR | `llvm-ir` | `.ll`, `.bc` | `22.1.8` | `code-languages/llvm-ir` |
|
| Lobster | `lobster` | `.lobster` | `development snapshot` | `code-languages/lobster` |
|
| Logo | `logo` | `.logo`, `.lgo` | `UCBLogo 6.2` | `code-languages/logo` |
|
| Lua | `lua` | `.lua`, `.rockspec` | `5.5.0` | `code-languages/lua` |
|
| Luau | `luau` | `.luau` | `0.727` | `code-languages/luau` |
|
| Makefile | `makefile` | `Makefile`, `makefile`, `GNUmakefile`, `.mk`, `.mak` | `4.4.1` | `code-languages/makefile` |
|
| Mako | `mako` | `.mako`, `.mao` | `1.3.10` | `code-languages/mako` |
|
| Markdown | `markdown` | `.md`, `.markdown`, `.mdown`, `.mkd` | `CommonMark 4.0` | `code-languages/markdown` |
|
| Marlowe | `marlowe` | `.marlowe` | `Marlowe Runtime` | `code-languages/marlowe` |
|
| Wolfram Language | `mathematica` | `.wl`, `.wls`, `.nb` | `14.3` | `code-languages/mathematica` |
|
| MATLAB | `matlab` | `.m`, `.mlx` | `R2026a` | `code-languages/matlab` |
|
| Maxima | `maxima` | `.mac`, `.wxm` | `5.49.0` | `code-languages/maxima` |
|
| MDX | `mdx` | `.mdx` | `3.1.1` | `code-languages/mdx` |
|
| Mermaid | `mermaid` | `.mmd`, `.mermaid` | `11.16.0` | `code-languages/mermaid` |
|
| Meson | `meson` | `meson.build`, `meson_options.txt`, `meson.options`, `.wrap` | `1.11.1` | `code-languages/meson` |
|
| Mercury | `mercury` | `.m` | `22.01.8` | `code-languages/mercury` |
|
| Metal | `metal` | `.metal` | `Metal 4` | `code-languages/metal` |
|
| Modelica | `modelica` | `.mo` | `3.6.1` | `code-languages/modelica` |
|
| Mojo | `mojo` | `.mojo` | `0.26.1` | `code-languages/mojo` |
|
| Modula-2 | `modula-2` | `.mod`, `.def` | `ISO/IEC 10514-1:1996` | `code-languages/modula-2` |
|
| MoonBit | `moonbit` | `.mbt` | `0.9.2` | `code-languages/moonbit` |
|
| Move | `move` | `.move` | `2.0.0` | `code-languages/move` |
|
| Mustache | `mustache` | `.mustache`, `.mst` | `1.0` | `code-languages/mustache` |
|
| N1QL | `n1ql` | `.n1ql` | `stable` | `code-languages/n1ql` |
|
| Nextflow | `nextflow` | `.nf` | `24.10.4` | `code-languages/nextflow` |
|
| nginx | `nginx` | `nginx.conf`, `.nginx`, `.conf` | `1.30.3` | `code-languages/nginx` |
|
| Nickel | `nickel` | `.ncl` | `1.17.0` | `code-languages/nickel` |
|
| Nim | `nim` | `.nim`, `.nims`, `.nimble` | `2.2.10` | `code-languages/nim` |
|
| Nix | `nix` | `.nix` | `2.34.8` | `code-languages/nix` |
|
| Nunjucks | `nunjucks` | `.njk`, `.nunjucks` | `3.2.4` | `code-languages/nunjucks` |
|
| Nushell | `nushell` | `.nu` | `0.113.1` | `code-languages/nushell` |
|
| Objective-C | `objective-c` | `.m`, `.mm` | `2.0` | `code-languages/objective-c` |
|
| OCaml | `ocaml` | `.ml`, `.mli`, `.mll`, `.mly`, `.mlt`, `.eliom`, `.eliomi` | `5.6.0` | `code-languages/ocaml` |
|
| Octave | `octave` | `.m`, `.octave` | `9.3.0` | `code-languages/octave` |
|
| Oberon | `oberon` | `.ob`, `.mod` | `Oberon-2` | `code-languages/oberon` |
|
| Odin | `odin` | `.odin` | `dev-2026-02` | `code-languages/odin` |
|
| OpenAPI | `openapi` | `.openapi.json`, `.openapi.yaml`, `.openapi.yml` | `3.2.0` | `code-languages/openapi` |
|
| OpenCL C | `opencl` | `.cl`, `.clh` | `OpenCL C 3.0` | `code-languages/opencl` |
|
| Org-mode | `org` | `.org` | `9.8` | `code-languages/org` |
|
| Pascal | `pascal` | `.pas`, `.pp`, `.inc`, `.lpr`, `.dpr`, `.dfm` | `3.2.2` | `code-languages/pascal` |
|
| Perl | `perl` | `.pl`, `.pm`, `.pod`, `.t`, `.psgi` | `5.42.2` | `code-languages/perl` |
|
| PHP | `php` | `.php`, `.phtml`, `.php3`, `.php4`, `.php5`, `.phps` | `8.5.7` | `code-languages/php` |
|
| Pine Script | `pine-script` | `.pine` | `v6` | `code-languages/pine-script` |
|
| PL/I | `pl-i` | `.pli`, `.pl1` | `Enterprise PL/I 6.2` | `code-languages/pl-i` |
|
| Pkl | `pkl` | `.pkl` | `0.28.2` | `code-languages/pkl` |
|
| PlantUML | `plantuml` | `.puml`, `.plantuml`, `.iuml` | `1.2026.6` | `code-languages/plantuml` |
|
| PL/pgSQL | `plpgsql` | `.pgsql`, `.plpgsql` | `stable` | `code-languages/plpgsql` |
|
| Oracle PL/SQL | `plsql` | `.pls`, `.pks`, `.pkb`, `.plsql` | `Oracle Database 26ai` | `code-languages/plsql` |
|
| Plain Old Documentation | `pod` | `.pod` | `Perl 5.42.2` | `code-languages/pod` |
|
| Pony | `pony` | `.pony` | `0.61.1` | `code-languages/pony` |
|
| PowerShell | `powershell` | `.ps1`, `.psm1`, `.psd1`, `.ps1xml` | `7.6.3` | `code-languages/powershell` |
|
| Prolog | `prolog` | `.pl`, `.pro`, `.prolog`, `.P` | `SWI-Prolog 10.0` | `code-languages/prolog` |
|
| PromQL | `promql` | `.promql` | `Prometheus 3.x` | `code-languages/promql` |
|
| Protocol Buffers | `protobuf` | `.proto` | `35.1` | `code-languages/protobuf` |
|
| Pug | `pug` | `.pug`, `.jade` | `3.0.4` | `code-languages/pug` |
|
| Puppet | `puppet` | `.pp`, `.epp` | `Puppet 8` | `code-languages/puppet` |
|
| PureScript | `purescript` | `.purs` | `0.15.15` | `code-languages/purescript` |
|
| Python | `python` | `.py`, `.pyw` | `3.14.6` | `code-languages/python` |
|
| qmake | `qmake` | `.pri`, `.prf` | `stable` | `code-languages/qmake` |
|
| QML | `qml` | `.qml`, `.qmltypes`, `.qmlproject` | `Qt 6.11.1` | `code-languages/qml` |
|
| Q# | `qsharp` | `.qs` | `Q# 1.0` | `code-languages/qsharp` |
|
| R | `r` | `.r`, `.R`, `.rmd`, `.Rmd`, `.qmd`, `.Rprofile` | `4.6.1` | `code-languages/r` |
|
| Racket | `racket` | `.rkt`, `.rktd`, `.rktl`, `.scrbl` | `9.2` | `code-languages/racket` |
|
| Raku | `raku` | `.raku`, `.rakumod`, `.rakudoc`, `.rakutest`, `.p6`, `.pm6` | `6.d` | `code-languages/raku` |
|
| Razor | `razor` | `.cshtml`, `.razor` | `10.0.9` | `code-languages/razor` |
|
| Rebol | `rebol` | `.r`, `.reb`, `.rebol` | `Rebol 3` | `code-languages/rebol` |
|
| Red | `red` | `.red`, `.reds` | `0.6.6` | `code-languages/red` |
|
| ReasonML | `reasonml` | `.re`, `.rei` | `3.13.0` | `code-languages/reasonml` |
|
| Rego | `rego` | `.rego` | `OPA 1.18.0` | `code-languages/rego` |
|
| ReScript | `rescript` | `.res`, `.resi` | `12.0.0` | `code-languages/rescript` |
|
| reStructuredText | `restructuredtext` | `.rst`, `.rest` | `Docutils 0.22.2` | `code-languages/restructuredtext` |
|
| Roc | `roc` | `.roc` | `development snapshot` | `code-languages/roc` |
|
| Ruby | `ruby` | `.rb`, `.rbw`, `.rake`, `.gemspec`, `Gemfile`, `Rakefile`, `config.ru` | `4.0.5` | `code-languages/ruby` |
|
| Rust | `rust` | `.rs` | `1.96.0` | `code-languages/rust` |
|
| SAS | `sas` | `.sas` | `SAS 9.4` | `code-languages/sas` |
|
| Scala | `scala` | `.scala`, `.sc` | `3.8.4` | `code-languages/scala` |
|
| Scheme | `scheme` | `.scm`, `.ss`, `.sld`, `.sls` | `R7RS small` | `code-languages/scheme` |
|
| Sass | `scss` | `.scss`, `.sass` | `1.101.0` | `code-languages/scss` |
|
| Self | `self` | `.self` | `2024.1` | `code-languages/self` |
|
| Simula | `simula` | `.sim`, `.simula` | `Simula 67` | `code-languages/simula` |
|
| Smalltalk | `smalltalk` | `.st` | `ANSI INCITS 319-1998` | `code-languages/smalltalk` |
|
| Smarty | `smarty` | `.tpl`, `.smarty` | `5.5.1` | `code-languages/smarty` |
|
| Snakemake | `snakemake` | `.smk`, `Snakefile` | `8.25.0` | `code-languages/snakemake` |
|
| SNOBOL | `snobol` | `.sno`, `.snobol` | `SNOBOL4` | `code-languages/snobol` |
|
| Solidity | `solidity` | `.sol` | `0.8.35` | `code-languages/solidity` |
|
| SOQL | `soql` | `.soql` | `stable` | `code-languages/soql` |
|
| SPARQL | `sparql` | `.sparql`, `.rq` | `1.1` | `code-languages/sparql` |
|
| SPARK | `spark` | `.spark`, `.adb`, `.ads` | `SPARK Community 2021` | `code-languages/spark` |
|
| SPL | `spl` | `.spl` | `stable` | `code-languages/spl` |
|
| SPSS | `spss` | `.sps`, `.spss` | `29.0` | `code-languages/spss` |
|
| SQL | `sql` | `.sql` | `SQL:2023` | `code-languages/sql` |
|
| Squirrel | `squirrel` | `.nut` | `3.2` | `code-languages/squirrel` |
|
| Standard ML | `standard-ml` | `.sml`, `.sig`, `.fun` | `The Definition 1997` | `code-languages/standard-ml` |
|
| Starlark | `starlark` | `.bzl`, `.star`, `.sky` | `Bazel Starlark` | `code-languages/starlark` |
|
| Stata | `stata` | `.do`, `.ado`, `.mata` | `19` | `code-languages/stata` |
|
| Stylus | `stylus` | `.styl` | `0.64.0` | `code-languages/stylus` |
|
| Svelte | `svelte` | `.svelte` | `5.56.4` | `code-languages/svelte` |
|
| SVG | `svg` | `.svg`, `.svgz` | `SVG 2` | `code-languages/svg` |
|
| SVN | `svn` | `.svn`, `svnserve.conf` | `1.14.5` | `code-languages/svn` |
|
| Swift | `swift` | `.swift` | `6.3.2` | `code-languages/swift` |
|
| Tcl/Tk | `tcl` | `.tcl`, `.tm`, `.test` | `9.0.4` | `code-languages/tcl` |
|
| Tcsh | `tcsh` | `.tcsh`, `.csh`, `.tcshrc`, `.cshrc` | `6.24.16` | `code-languages/tcsh` |
|
| TeX | `tex` | `.tex`, `.sty`, `.cls`, `.dtx`, `.ins`, `.ltx` | `TeX Live 2026` | `code-languages/tex` |
|
| Textile | `textile` | `.textile` | `4.1.4` | `code-languages/textile` |
|
| Apache Thrift | `thrift` | `.thrift` | `0.22.0` | `code-languages/thrift` |
|
| TLA+ | `tla-plus` | `.tla` | `TLA+ 2` | `code-languages/tla-plus` |
|
| TOML | `toml` | `.toml` | `1.1.0` | `code-languages/toml` |
|
| Troff/Groff | `troff` | `.roff`, `.troff`, `.man`, `.me`, `.ms` | `GNU groff 1.24.1` | `code-languages/troff` |
|
| T-SQL | `tsql` | `.sql`, `.tsql` | `SQL Server 2025 (17.x)` | `code-languages/tsql` |
|
| Twee/Twine | `twee` | `.tw`, `.twee`, `.tw2` | `2.10.0` | `code-languages/twee` |
|
| Twig | `twig` | `.twig` | `3.27.1` | `code-languages/twig` |
|
| TypeScript | `typescript` | `.ts`, `.tsx`, `.mts`, `.cts` | `6.0` | `code-languages/typescript` |
|
| Typst | `typst` | `.typ` | `0.15.0` | `code-languages/typst` |
|
| Unison | `unison` | `.u`, `.uu` | `0.5.28` | `code-languages/unison` |
|
| V | `v` | `.v`, `.vsh` | `weekly.2025.49` | `code-languages/v` |
|
| Vala | `vala` | `.vala`, `.vapi` | `0.56.18` | `code-languages/vala` |
|
| Vale | `vale` | `.vale` | `experimental` | `code-languages/vale` |
|
| Apache Velocity | `velocity` | `.vm`, `.vtl` | `2.4.1` | `code-languages/velocity` |
|
| Verilog/SystemVerilog | `verilog` | `.v`, `.vh`, `.sv`, `.svh` | `IEEE 1800-2023` | `code-languages/verilog` |
|
| Verse | `verse` | `.verse` | `UEFN Verse` | `code-languages/verse` |
|
| VHDL | `vhdl` | `.vhd`, `.vhdl` | `IEEE 1076-2019` | `code-languages/vhdl` |
|
| Visual Basic | `visual-basic` | `.vb` | `17.13` | `code-languages/visual-basic` |
|
| Vue | `vue` | `.vue` | `3.5.39` | `code-languages/vue` |
|
| Vyper | `vyper` | `.vy` | `0.4.3` | `code-languages/vyper` |
|
| WebAssembly | `webassembly` | `.wasm`, `.wat` | `3.0` | `code-languages/webassembly` |
|
| WDL | `wdl` | `.wdl` | `1.2.0` | `code-languages/wdl` |
|
| WGSL | `wgsl` | `.wgsl` | `Candidate Recommendation Draft 2026-05-07` | `code-languages/wgsl` |
|
| Wren | `wren` | `.wren` | `0.4.0` | `code-languages/wren` |
|
| XAML | `xaml` | `.xaml`, `.baml` | `Platform-specific` | `code-languages/xaml` |
|
| XML | `xml` | `.xml`, `.xsd`, `.xsl`, `.xslt` | `XML 1.0 Fifth Edition` | `code-languages/xml` |
|
| XQuery | `xquery` | `.xq`, `.xql`, `.xqm`, `.xquery`, `.xqy` | `XQuery 3.1` | `code-languages/xquery` |
|
| XSLT | `xslt` | `.xsl`, `.xslt` | `XSLT 3.0` | `code-languages/xslt` |
|
| YAML | `yaml` | `.yaml`, `.yml` | `1.2.2` | `code-languages/yaml` |
|
| YARA | `yara` | `.yar`, `.yara` | `4.5.2` | `code-languages/yara` |
|
| Zeek | `zeek` | `.zeek`, `.bro` | `8.0.4` | `code-languages/zeek` |
|
| Zig | `zig` | `.zig`, `.zon` | `0.16.0` | `code-languages/zig` |
|
| Ziggy | `ziggy` | `.ziggy`, `.ziggy-schema` | `0.1.0` | `code-languages/ziggy` |
|
| zsh | `zsh` | `.zsh`, `.zshrc`, `.zshenv`, `.zprofile`, `.zlogin`, `.zlogout`, `.zsh-theme` | `5.9.1` | `code-languages/zsh` |
## Development
```bash
npm ci
npm run check
npm run build
```
Common scripts:
| Script | Purpose |
|---|---|
| `npm run format` | Format and auto-fix with Biome |
| `npm run format:check` | Check formatting with Biome (read-only) |
| `npm run lint` | Run ESLint |
| `npm run lint:fix` | Run ESLint with auto-fix |
| `npm run typecheck` | Run TypeScript without emitting files |
| `npm test` | Run Vitest |
| `npm run bench` | Run manual performance benchmarks |
| `npm run build` | Build ESM, CommonJS, and declaration files |
| `npm run check` | Run format:check, lint, typecheck, and tests |
| `npm run check:language-versions -- --language typescript` | Check release metadata for one language |
| `npm run website:prepare` | Build the static website data, unit test summary, and benchmark summary |
| `npm run website:serve` | Preview the static website locally |
## Website
The static website lives in [`docs`](docs) and is generated from the package build.
It includes a live filename detector, localized language lookup, the full language
catalog, unit test summary, and benchmark summary.
```bash
npm run website:prepare
npm run website:serve
```
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) for setup instructions, field rules, and the process for adding a new language.
## License
MIT