GitPedia

Syntax highlight element

👓 Syntax Highlighting using the CSS Custom Highlight API

From andreruffert·Updated June 9, 2026·View on GitHub·

**syntax highlight element** is a 👓 Syntax Highlighting using the CSS Custom Highlight API The project is written primarily in JavaScript, distributed under the MIT License license, first published in 2025. Key topics include: custom-elements, javascript, syntax-highlight, syntax-highlighting, web-components.

Latest release: v1.2.0
August 8, 2025View Changelog →

<syntax-highlight> element

Syntax Highlighting using the CSS Custom Highlight API.

Test status
npm version
npm downloads
jsDelivr hits (npm)

The code is highlighted without having to wrap a bunch of <span> elements around each token, thanks to Prism's tokenizer and the CSS Custom Highlight API.

<div align="center"> <br> <br> <img src="media/cover.png" alt="Screenshot of the <syntax-highlight> element demo in the browser with DevTools open"> <br> <br> </div>

Examples

For examples checkout the CodePen <syntax-highlight> collection.

Install

Install via npm

shell
npm install syntax-highlight-element

Usage

JavaScript

Import as ES module

js
import 'syntax-highlight-element';

Or via CDN

html
<script type="module" src="https://cdn.jsdelivr.net/npm/syntax-highlight-element@1/+esm"></script>

HTML

html
<syntax-highlight language="js"> // ... </syntax-highlight>

CSS

Make sure to load a theme e.g. syntax-highlight-element/themes/prettylights.css.

Or via CDN

html
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/syntax-highlight-element@1/dist/themes/prettylights.min.css">

Currently there are only limited themes available/converted. You can always create your own theme. Contributions are also very welcome.

Attributes

  • language The code language. The default is plaintext. Default suported languages html|css|js.
  • content-selector A CSS selector to specify the content element. The default is the element itself.

Configuration

js
/** * @typedef Config * @type {object} * @property {string[]} languages - List of languages to support for syntax highlighting. * @property {string[]} tokenTypes - Token types used during lexing/parsing. * @property {{[key: string]: string[]}} languageTokens - Mapping of language names to their specific tokenization rules. * @property {function} setup - Runs before the custom element gets defined in the registry. * @property {function} tokenize - Tokenize text based on the specified language grammar */ window.she = window.she || {}; /** @type {Config} */ window.she.config = { languages: ['markup', 'css', 'javascript'], // Default tokenTypes: [], languageTokens: {}, setup: async () => {}, tokenize: (text, language) => [], };

Full list of all languages supported by the prism tokenizer.

Browser Support

<picture> <source media="(prefers-color-scheme: dark)" srcset="https://web-platform-dx.github.io/web-features/assets/img/baseline-newly-word-dark.svg"> <img src="https://web-platform-dx.github.io/web-features/assets/img/baseline-newly-word.svg" width="224" height="63" alt="Baseline newly availability wordmark"> </picture>

Credits

License

Distributed under the MIT license. See LICENSE for details.

© André Ruffert

Contributors

Showing top 2 contributors by commit count.

View all contributors on GitHub →

This article is auto-generated from andreruffert/syntax-highlight-element via the GitHub API.Last fetched: 6/23/2026