# Prism.js — Lightweight Extensible Syntax Highlighter > Prism.js is a small, fast syntax highlighting library used on documentation sites and blogs, supporting 300+ languages with a plugin-based architecture. ## Install Save in your project root: # Prism.js — Lightweight Extensible Syntax Highlighter ## Quick Use ```html
const x = 42;
```
## Introduction
Prism.js is a client-side syntax highlighting library designed to be small, fast, and extensible. It powers code blocks on MDN, Smashing Magazine, Drupal, and many static-site generators, rendering highlighted code without server-side processing.
## What Prism.js Does
- Highlights code blocks in 300+ programming languages
- Runs in the browser with no build step required
- Extends via plugins for line numbers, copy buttons, diff highlighting, and more
- Supports custom themes through CSS variables
- Works with any HTML page, CMS, or static site generator
## Architecture Overview
Prism.js tokenizes source code using language-specific grammars defined as regular expression objects. Each grammar maps token types (keyword, string, comment) to regex patterns. The tokenizer produces a flat token array, and the renderer wraps each token in a span with a CSS class. Plugins hook into the highlighting lifecycle via events like before-highlight and after-highlight.
## Self-Hosting & Configuration
- Install via npm: `npm install prismjs` or load from a CDN
- Include only the languages you need to minimize bundle size
- Add plugins by importing their JS and CSS files
- Use the Prism.js download page to build a custom bundle with selected languages and plugins
- Server-side rendering is possible via Node.js with `Prism.highlight(code, grammar, language)`
## Key Features
- Core library is under 2 KB minified and gzipped
- Language definitions are lazy-loadable to keep initial payload small
- Works without a build step for quick integration into any HTML page
- Plugin ecosystem covers line numbers, autolinker, toolbar, and diff highlighting
- Themes are pure CSS, making customization straightforward
## Comparison with Similar Tools
- **Highlight.js** — Automatic language detection but larger bundle; Prism requires explicit language classes
- **Shiki** — Uses VS Code TextMate grammars for exact VS Code colors; heavier but more accurate
- **CodeMirror** — Full code editor, not just a highlighter; much larger footprint
- **Torchlight** — Server-side highlighting API; requires external service
## FAQ
**Q: Does Prism.js auto-detect the language?**
A: No. You specify the language via the `class="language-xxx"` attribute. The Autoloader plugin can load grammars on demand.
**Q: Can I use Prism.js with React or Vue?**
A: Yes. Libraries like react-syntax-highlighter wrap Prism.js for use as a component.
**Q: How do I add a new language?**
A: Define a grammar object mapping token types to regex patterns and register it with `Prism.languages.mylang = grammar`.
**Q: Is Prism.js still maintained?**
A: The project receives community contributions. For newer projects, also consider Shiki if VS Code parity matters.
## Sources
- https://github.com/PrismJS/prism
- https://prismjs.com/
---
Source: https://tokrepo.com/en/workflows/asset-4ca01e24
Author: AI Open Source