Shiki

A syntax highlighter that renders code with the exact TextMate grammars and themes VS Code uses.

Library
npm
v4.5.0
13,858 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
86 /100 Excellent
Development Activity 84
Maintenance 96
Community 64
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
89 /100 Excellent
Architecture 90
Code Quality 87
Innovation 91
Learning Curve 88

Shiki is a syntax highlighter that renders source code using the exact same TextMate grammars and themes that power VS Code, so highlighted output matches what developers already see in their editor. It ships as a modular pnpm monorepo — a core tokenizer package, pluggable WASM or pure-JavaScript regex engines, and independently versioned language/theme bundles — so it can run anywhere from Node.js and browsers to edge runtimes like Cloudflare Workers.

Rather than a single one-size-fits-all API, Shiki offers a layered set of entry points: async shorthand functions for zero-config use, a reusable highlighter singleton for synchronous rendering, and a fine-grained core bundle for teams that need to control exactly which languages and themes ship to the client. Official integrations for rehype, markdown-it, VitePress, Monaco, and TypeScript Twoslash make it a common default for documentation sites and static blogs.

What You Get

  • Editor-accurate highlighting via the same TextMate grammars and themes VS Code ships with
  • Two swappable regex engines — WASM Oniguruma for full grammar fidelity, or a pure-JS engine for WASM-restricted runtimes like Cloudflare Workers
  • Shorthand async functions (codeToHtml, codeToTokens, codeToHast) plus a synchronous, reusable highlighter instance for hot paths
  • Official integrations for rehype, markdown-it, VitePress, Monaco Editor, and TypeScript Twoslash
  • Fine-grained bundle control via @shikijs/core so only the languages and themes you use ship to the client

Common Use Cases

  • Syntax-highlighting code blocks in static site generators and MDX/Markdown-based documentation sites
  • Rendering highlighted code in blog and CMS platforms via the rehype/markdown-it plugins
  • Powering in-browser code editors and playgrounds through the Monaco Editor integration
  • Generating type-checked, hover-annotated TypeScript code samples with the Twoslash integration

Under The Hood

Architecture Shiki is organized as a pnpm workspace of roughly twenty packages under packages/, with @shikijs/types defining shared interfaces, @shikijs/core implementing the primitive tokenizer/highlighter logic (packages/core/src/constructors/highlighter.ts, packages/core/src/highlight/code-to-*.ts), and @shikijs/engine-oniguruma / @shikijs/engine-javascript providing pluggable regex engines. The top-level shiki package (packages/shiki/src/index.ts, bundle-full.ts) composes these primitives with pre-bundled language grammars (@shikijs/langs) and themes (@shikijs/themes) into convenience shorthand functions (codeToHtml, codeToTokens, codeToHast) and a stateful createHighlighter API, while createHighlighterCore in @shikijs/core lets consumers opt into a zero-bundle, fully manual language/theme-loading path. Integration packages (rehype, markdown-it, vitepress-twoslash, monaco, twoslash, transformers) sit on top as separate workspace packages depending on the shared primitive rather than shiki itself, keeping the dependency graph directional.

Tech Stack The codebase is 100% ESM, written in strict TypeScript (over 90% of the repo by bytes) and built per-package with tsdown; the monorepo uses pnpm workspaces with pnpm’s catalog feature to pin shared dependency versions across ~20 packages, taze for dependency bumps, bumpp for coordinated releases, and vitest (with @vitest/coverage-v8) for testing, plus a bench/ directory for performance benchmarking. Highlighting is powered by vscode-oniguruma (a WASM build of the Oniguruma regex engine VS Code’s TextMate grammars use) or, alternatively, a pure-JavaScript regex engine for runtimes that cannot instantiate WASM from raw bytes, such as Cloudflare Workers; language and theme data is sourced from the tm-grammars and tm-themes packages and shipped as async-loaded chunks.

Code Quality The monorepo contains 73 test files exercised via vitest, covering the highlighter core, individual language grammars, theme loading, decorations, ANSI tokenization, and framework integrations (astro.test.ts, shorthands-markdown.test.ts, and others); typechecking runs through vue-tsc —noEmit across the workspace and linting is enforced with @antfu/eslint-config plus eslint-plugin-format, with simple-git-hooks wiring checks into the commit flow. Public APIs are precisely typed (HighlighterCore, HighlighterCoreOptions generics keyed on sync/async mode) and internal modules stay small and single-purpose — code-to-html.ts, for example, is 36 lines that compose codeToHast and hastToHtml — which keeps individual files easy to reason about despite the large aggregate surface area.

API Design The public API is layered for progressive disclosure: newcomers reach for the async codeToHtml(code, {lang, theme}) shorthand and get a working highlighter with zero setup, performance-sensitive consumers call createHighlighter({themes, langs}) once and reuse a long-lived singleton for synchronous highlighting, and advanced consumers drop to createHighlighterCore/createHighlighterCoreSync to hand-pick exactly which languages, themes, and regex engine ship in their bundle. Naming stays consistent across the codeTo* family (codeToHtml, codeToTokens, codeToHast, codeToTokensBase), the package.json export map documents fine-grained entry points (shiki/core, shiki/wasm, shiki/engine/javascript, shiki/bundle/web) directly, and the docs site pairs every guide example with runnable TwoSlash-annotated TypeScript so documentation and type signatures don’t drift apart.

Used by 101 apps in this directory

Rust
56%
Apache 2.0

Magnitude

AI Development · Developer Tools

6,607

An open source inference engine that profiles your hardware, recommends the best local models, and tunes them for the coding agent you already use.

View details
78
Repo Health
83
Technical
71
Dependency
Built with
Rust 56%
TypeScript 17%
Python 11%
Updated today
JavaScript
98%
Other

Markdrop

Note Taking

358

Visual drag-and-drop markdown editor with GitHub-specific blocks, cloud sync, and offline PWA support

View details
38
Repo Health
57
Technical
69
Dependency
Built with
JavaScript 98%
Updated 6 months ago
TypeScript
99%
Apache 2.0

Mastra Code

AI Code Assistants

28,674

"A coding agent that never compacts" — a terminal-based AI coding agent built on the Mastra framework, with Observational Memory instead of context compaction, multi-model support, and OAuth login for Claude Max or ChatGPT Plus.

View details
90
Repo Health
73
Technical
65
Dependency
Built with
TypeScript 99%
Updated today
Go
56%
Other

Multica

AI Assistants · AI Development

52,342

Turn coding agents into real teammates — assign issues, track progress, and compound reusable skills across a vendor-neutral, self-hosted platform.

View details
87
Repo Health
83
Technical
67
Dependency
Built with
Go 56%
TypeScript 38%
Updated today
Go
56%
Other

Multica

AI Assistants · AI Development

52,342

Turn coding agents into real teammates — assign issues, track progress, and compound reusable skills across a vendor-neutral, self-hosted platform.

View details
87
Repo Health
83
Technical
67
Dependency
Built with
Go 56%
TypeScript 38%
Updated today
Go
56%
Other

Multica

AI Assistants · AI Development

52,342

Turn coding agents into real teammates — assign issues, track progress, and compound reusable skills across a vendor-neutral, self-hosted platform.

View details
87
Repo Health
83
Technical
67
Dependency
Built with
Go 56%
TypeScript 38%
Updated today
Go
56%
Other

Multica

AI Assistants · AI Development

52,342

Turn coding agents into real teammates — assign issues, track progress, and compound reusable skills across a vendor-neutral, self-hosted platform.

View details
87
Repo Health
83
Technical
67
Dependency
Built with
Go 56%
TypeScript 38%
Updated today
TypeScript
98%
Other

Novu

Developer Tools

40,131

Open-source communication infrastructure that connects your products and AI agents to every channel your users live on — Inbox, Email, SMS, Push, Chat, and more.

View details
93
Repo Health
80
Technical
64
Dependency
Built with
TypeScript 98%
Updated today
TypeScript
99%
Apache 2.0

Onlook

AI Design Tools · Design Tools

26,887

An open-source, AI-first visual editor that lets designers and developers build, style, and deploy React apps directly in code — no handoff required.

View details
60
Repo Health
80
Technical
64
Dependency
Built with
TypeScript 99%
Updated 1 months ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers