highlightjs/highlight.js
 Watch   
 Star   
 Fork   
14 days ago
highlight.js

v11.12.0 - Summer, hot and rainy.

Parser Engine:

  • fix(parser) count named capture groups when rewriting backreferences spokodev

New Grammars:

  • add FreeDesktop config file (.desktop / systemd) grammar gg582
  • added 3rd party Cedar grammar to SUPPORTED_LANGUAGES Dhruv Maniya
  • added 3rd party DAX and M (Power Query) grammars to SUPPORTED_LANGUAGES jiaopengzi
  • added 3rd party Djot grammar to SUPPORTED_LANGUAGES Mark Scherer
  • added 3rd party Igor Pro grammar to SUPPORTED_LANGUAGES Ryne Andal
  • added 3rd party Jaiva grammar to SUPPORTED_LANGUAGES Lehlogonolo Poole
  • added 3rd party Liquidsoap grammar to SUPPORTED_LANGUAGES Romain Beauxis
  • added 3rd party MoonBit grammar to SUPPORTED_LANGUAGES Kaida-Amethyst
  • added 3rd party Pkl grammar to SUPPORTED_LANGUAGES Dan Chao
  • added 3rd party RAScript grammar to SUPPORTED_LANGUAGES Joshua Raphael
  • added 3rd party Veryl grammar to SUPPORTED_LANGUAGES Naoya Hatta
  • added 3rd party Why3 grammar to SUPPORTED_LANGUAGES JGalego
  • added 3rd party Xojo grammar to SUPPORTED_LANGUAGES patricksalo
  • referenced existing 3rd party ES|QL grammar in SUPPORTED_LANGUAGES Styx0x6

Core Grammars:

  • fix(c) only match real atomic_* type names, not C11 atomic functions, issue #3837 Mark Xian
  • fix(c, cpp) bound the run of type tokens in front of a function name (ReDoS), issue #4362 Jayesh Bhade
  • fix(c, cpp) scope angle-bracket header string to #include, issue #3505 Pablo
  • fix(c, cpp) stop a raw string's closing delimiter from swallowing quotes, issue #3585 David Pavlovschii
  • enh(cmake) add block and endblock keywords Anonymous Maarten
  • fix(cmake) only highlight standalone numbers, not digits that begin an identifier (e.g. 3rdparty), issue #4170 Mark Xian
  • fix(cpp) require a word boundary before numeric literals so digits inside identifiers aren't highlighted as numbers, issue #4231 Mark Xian
  • fix(crystal) stop treating integer division // as a regex literal Zain Asif
  • enh(csharp) support digit separators in binary literals and numeric type suffixes, and stop highlighting the leading _ of an identifier, issue #4258 Sarath Francis
  • enh(css) add corner-shape properties Hama Tanveer
  • enh(css) support six-digit unicode-range values Konstantin Baltsat
  • enh(dart) add highlighting for class and function names guuido
  • enh(dns) highlight registered CAA property tags, issue #4475 Joey Huang
  • enh(dns) improve grammar: character strings, TXT, classes, escapes, addresses Checconio
  • enh(dos) add batch as an alias, issue #4395 Hashim Khan
  • enh(gherkin) update keyword list Hirse
  • enh(gherkin) variables can't contain whitespace Hirse
  • enh(gherkin) docstrings can use backticks Hirse
  • enh(go) recognize binary integer literals spokodev
  • enh(groovy) support underscores in numeric literals greymoth
  • fix(haskell) highlight where in GADT and closed type-family declarations, issue #3753 Konstantin Baltsat
  • enh(java) improve detection of types, including generic and array types Hannes Wallnoefer
  • enh(javascript) add self to built-in variables Dsaquel
  • enh(kotlin) add ktm and ktx aliases DarkMatter-999
  • fix(leaf) fix bug in Leaf keyword highlighting Francesco Paolo Severino
  • fix(lisp) preserve highlighting after quoted multiplication expressions arturict
  • enh(llvm) support block C-style comments utam-1
  • enh(lua) add Lua 5.5 global keyword Nibiri
  • fix(markdown) don't treat a *** or ___ thematic break as the start of bold text, issue #3719 Mayank Gupta
  • enh(nsis) enhance NSIS rules Jan T. Sott
  • enh(python) add missing builtins: aiter and anext (3.10), frozendict and sentinel (3.15) Hugo van Kemenade
  • enh(python) correctly highlight lazy import syntax from PEP 810 Peter Bierma
  • enh(python) support t-strings Nicolas Le Cam
  • fix(ruby) don't treat the scope resolution operator :: as a symbol, issue #4294 Hashim Khan
  • enh(rust) add safe keyword Frances Wingerter
  • enh(rust) include the raw borrow operator in keywords Shiva Kiran Koninty
  • enh(rust) parse f16 and f128 literals usamoi
  • fix(rust) allow function invocations whose names start with a keyword Xia Li-yao
  • fix(rust) recognize \\ and \" char-literal escapes so highlighting doesn't leak, issue #4351 Sarath Francis
  • enh(shell) match period (.) as part of shell prompt Ian Wienand
  • enh(sqf) update to Arma 3 v2.22 LouMontana
  • fix(xml) remove recursive sublanguage references to prevent ReDoS petejm

Documentation:

  • docs(php) explain the difference between php and php-template Zain Asif
  • document LLVM IR in SUPPORTED_LANGUAGES Jan Schultke
  • document the existing pwsh alias for PowerShell helpimnotdrowning
  • list languages with category "common" in SUPPORTED_LANGUAGES Marc Bernard
  • remind contributors to run npm i Proliecan
  • fix typos in README.CDN.md Zitrone

Themes:

Build / Tooling:

  • (build) allow third-party packages to override default languages Lysxia
  • (build) use Trusted Publishers in the publishing pipeline allejo
  • fix(types) allow RegExp in Mode.keywords KJyang-0114
  • refactor(tools) replace @colors/colors with ansis webdiscus
  • chore: dependency updates

CONTRIBUTORS

2026-06-23 14:37:57
highlight.js

v11.11.2 - This Summer's Hottest Release

Happy belated Summer Solstice to all who celebrate. This is a maintenance release that includes all of the merged PRs through July 2025 (last year).

[!NOTE]

As you may have noticed, highlight.js has been inactive since last summer, through no one's fault; maintaining open source projects is time-consuming. I'll be doing my best to keep the lights on around here, but I'll need the community's help. If you are interested in helping review pull requests, contributing, or even becoming a maintainer, speak up in https://github.com/highlightjs/highlight.js/issues/1678.

[!IMPORTANT]

Why is this version not published on npm or CDNs?

In December 2025, npm revoked all classic tokens for improved security. Since we haven't had a release since July 2025, I didn't notice that our release pipeline is currently broken because it uses a now-revoked token.

When will 11.11.2 be available on npm and/or CDNs?

This week. I need to update our Release pipeline to use npm's Trusted Publisher functionality.

I see two 11.11.2 releases on my GitHub feed, were you hacked?

A 11.11.2 tag was created prematurely on GitHub and caused a run failure during the release pipeline since all work to bump the release had not been completed. There was no version 11.11.2 that was accidentally published to npm or the CDNs; therefore, the Git tag has been recreated to point to f273f007f85e2096de41c42bf40b870dcb5a5a05.


Parser Engine:

  • fix illegal handling at end of input code Josh Goebel

New Grammars:

  • added 3rd party Aiken grammar to SUPPORTED_LANGUAGES Josh Marchand
  • added 3rd party VoltScript grammar to SUPPORTED_LANGUAGES Chester Moses
  • added 3rd party Gleam grammar to SUPPORTED_LANGUAGES Filip Hoffmann
  • added 3rd party Magik grammar to SUPPORTED_LANGUAGES Sebastiaan Speck
  • added 3rd party Prisma grammar to SUPPORTED_LANGUAGES SungHyun Kim
  • added 3rd party Bicep grammar to SUPPORTED_LANGUAGES Anthony Martin
  • added 3rd party L4 grammar to SUPPORTED_LANGUAGES Thomas Gorissen
  • added 3rd party Abc Notation grammar to SUPPORTED_LANGUAGES NriotHrreion

Core Grammars:

  • fix(cpp) exclude keywords from function calls Eisenwave
  • enh(csp) add missing directives / keywords from MDN (7 more) Max Liashuk
  • enh(ada) add new parallel keyword, allow [] for Ada 2022 Max Reznik
  • fix(javascript) correctly highlight 'for await' again [wolfgang42][]
  • fix(diff) fix unified diff hunk header regex to allow unpaired numbers Chris Wilson
  • enh(php) support single line and hash comments in attributes, constructor and functions Antoine Musso
  • fix(ex) adds support for ?' char literal and missing defguardp keyword Kevin Bloch
  • enh(json) add json5 support Kerry Shetline
  • fix(csharp) Support digit separators te-ing
  • fix(css) unicode-range parsing, issue #4253 Kerry Shetline

Documentation:

Themes:

  • Fix: cybertopia themes render correctly in shadow DOM hbgl
  • added "vs Dark " theme Twineee1

CONTRIBUTORS

2024-12-26 01:52:21
highlight.js

v11.11.1 - Merry Christmas!

Version 11.11.1

  • Fixes regressions with Rust grammar in 11.11.0 release.
2024-12-15 00:21:43
highlight.js

v11.11.0 - Happy Holidays

Version 11.11.0

CAVEATS / POTENTIALLY BREAKING CHANGES

  • Nothing.

Core Grammars:

  • fix(rust) - adds emoji support in single quote strings [joshgoebel][]
  • fix(apache) - support line continuation via \ Josh Goebel
  • fix(makefile) - allow strings inside $() expressions aneesh98
  • enh(arcade) updated to ArcGIS Arcade version 1.29 Kristian Ekenes
  • enh(css) add all properties listed on MDN (96 additions including anchor-name, aspect-ratio, backdrop-filter, container, margin-trim, place-content, scroll-timeline, ...) BaliBalo
  • enh(excel) add built-in functions for Excel 365 release to 2024 Danny Winrow
  • enh(erlang) OTP 27 triple-quoted strings nixxquality
  • enh(erlang) OTP 27 doc attribute nixxquality
  • enh(erlang) OTP 27 Sigil type nixxquality
  • enh(erlang) OTP25/27 maybe statement nixxquality
  • enh(dart) Support digit-separators in number literals [Sam Rawlins][]
  • enh(csharp) add Contextual keywords file, args, dynamic, record, required and scoped Alvin Joy
  • enh(lua) add 'pluto' as an alias Sainan
  • enh(bash) add reserved keywords time and coproc Álvaro Mondéjar
  • enh(nix) update keywords [h7x4][]
  • enh(nix) support paths [h7x4][]
  • enh(nix) support lookup paths [h7x4][]
  • enh(nix) support operators [h7x4][]
  • enh(nix) support REPL keywords [h7x4][]
  • enh(nix) support markdown comments [h7x4][]
  • enh(nix) support basic function params [h7x4][]
  • enh(nix) better parsing of attrsets [h7x4][]
  • fix(c) - Fixed hex numbers with decimals Dxuian
  • fix(typescript) - Fixedoptional property not highlighted correctly Dxuian
  • fix(ruby) - fix |= operator false positives (as block arguments) Aboobacker MK
  • enh(gcode) rewrote language for modern gcode support Barthélémy Bonhomme
  • fix(sql) - Fixed sql primary key and foreign key spacing issue Dxuian
  • fix(cpp) added flat_set and flat_map as a part of cpp 23 version Lavan
  • fix(yaml) - Fixed special chars in yaml Dxuian
  • fix(basic) - Fixed closing quotation marks not required for a PRINT statement Somya
  • fix(nix) remove add builtin [h7x4][]
  • fix(nix) mark or as builtin instead of literal [h7x4][]
  • fix(nix) handle ''' string escapes [h7x4][]
  • fix(nix) handle backslash string escapes [h7x4][]
  • fix(nix) don't mix escapes for " and '' strings [h7x4][]
  • fix(swift) - Fixed syntax highlighting for class func/var declarations guuido
  • fix(yaml) - Fixed wrong escaping behavior in single quoted strings guuido
  • enh(nim) - Add concept and defer to list of Nim keywords Jake Leahy

New Grammars:

  • added 3rd party TTCN-3 grammar to SUPPORTED_LANGUAGES Osmocom
  • added 3rd party Odin grammar to SUPPORTED_LANGUAGES clsource
  • added 3rd party Liquid grammar to SUPPORTED_LANGUAGES Laurel King

Developer Tools:

  • Nothing yet.

Themes:

Improvements:

  • Resolve the memory leak problem when creating multiple Highlight.js instances Imken

CONTRIBUTORS

2024-07-07 05:09:29
highlight.js

11.10.0 - Welcome to the 2024 Mega-smorgisbord update.

Sorry for the wait, this one is a doozie, thanks to all the contributors who made it possible!


CAVEATS / POTENTIALLY BREAKING CHANGES

[!IMPORTANT] This version drops support for Node 16.x, which is no longer supported by Node.js.


Core Grammars:

  • enh(typescript) add support for satisfies operator Kisaragi Hiu
  • enc(c) added more C23 keywords Melkor-1
  • enh(json) added jsonc as an alias BackupMiles
  • enh(gml) updated to latest language version (GML v2024.2) gnysek
  • enh(c) added more C23 keywords and preprcoessor directives Eisenwave
  • enh(js/ts) support namespaced tagged template strings Aral Balkan
  • enh(perl) fix false-positive variable match at end of string Josh Goebel
  • fix(cpp) not all kinds of number literals are highlighted correctly Lê Duy Quang
  • fix(css) fix overly greedy pseudo class matching Bradley Mackey
  • enh(arcade) updated to ArcGIS Arcade version 1.24 Kristian Ekenes
  • fix(typescript): params types Mohamed Ali
  • fix(rust) fix escaped double quotes in string Mohamed Ali
  • fix(rust) fix for r# raw identifier not being highlighted correctly. JaeBaek Lee
  • enh(rust) Adding union to be recognized as a keyword in Rust. JaeBaek Lee
  • fix(yaml) fix for yaml with keys having brackets highlighted incorrectly Aneesh Kulkarni
  • fix(csharp) add raw string highlighting for C# 11. Tara
  • fix(bash) fix # within token being detected as the start of a comment Felix Uhl
  • fix(python) fix or conflicts with string highlighting Mohamed Ali
  • enh(python) adds a scope to the self variable [Lee Falin][]
  • enh(delphi) allow digits to be omitted for hex and binary literals Jonah Jeleniewski
  • enh(delphi) add support for digit separators Jonah Jeleniewski
  • enh(delphi) add support for character strings with non-decimal numerics Jonah Jeleniewski
  • fix(javascript) incorrect function name highlighting CY Fung
  • fix(1c) fix escaped symbols "+-;():=,[]" literals Vitaly Barilko
  • fix(swift) correctly highlight generics and conformances in type definitions Bradley Mackey
  • enh(swift) add package keyword Bradley Mackey
  • fix(swift) ensure keyword attributes highlight correctly Bradley Mackey
  • fix(types) fix interface LanguageDetail > keywords Patrick Chiu
  • enh(java) add goto to be recognized as a keyword in Java Alvin Joy
  • enh(bash) add keyword sudo Alvin Joy
  • fix(haxe) captures new keyword without capturing it within variables/class names Cameron Taylor
  • fix(go) fix go number literals to accept _ separators, add hex p exponents Lisa Ugray
  • enh(markdown) add entity support David Schach TaraLei
  • enh(css) add justify-items and justify-self attributes Vasily Polovnyov
  • enh(css) add accent-color, appearance, color-scheme, rotate, scale and translate attributes Carl Räfting
  • fix(fortran) fixes parsing of keywords delimited by dots Julien Bloino
  • enh(css) add select, option, optgroup, picture and source to list of known tags Vasily Polovnyov
  • enh(css) add inset, inset-*, border-start-*-radius and border-end-*-radius attributes Vasily Polovnyov
  • enh(css) add text-decoration-skip-ink, text-decoration-thickness and text-underline-offset attributes Vasily Polovnyov

New Grammars:

  • added 3rd party CODEOWNERS grammar to SUPPORTED_LANGUAGES nataliia-radina
  • added 3rd party Luau grammar to SUPPORTED_LANGUAGES Robloxian Demo
  • added 3rd party ReScript grammar to SUPPORTED_LANGUAGES Paul Tsnobiladzé
  • added 3rd party Zig grammar to SUPPORTED_LANGUAGES [Hyou BunKen][]
  • added 3rd party WGSL grammar to SUPPORTED_LANGUAGES Arman Uguray
  • added 3rd party Unison grammar to SUPPORTED_LANGUAGES Rúnar Bjarnason
  • added 3rd party Phix grammar to SUPPORTED_LANGUAGES PeteLomax
  • added 3rd party Mirth grammar to SUPPORTED_LANGUAGES Sierra
  • added 3rd party JSONata grammar to SUPPORTED_LANGUAGES Vlad Dimov

Developer Tool:

Themes:

  • Added 1c-light theme a like in the IDE 1C:Enterprise 8 (for 1c) Vitaly Barilko
2023-10-09 11:52:02
highlight.js

11.9.0 - Fall is in the air!

Version 11.9.0

CAVEATS / POTENTIALLY BREAKING CHANGES

  • Drops support for Node 14.x, which is no longer supported by Node.js.
  • In the node build styles/*.css files now ship un-minified with minified counterparts as: styles/*.min.css mvorisek (this makes things consistent with our cdn builds)

Parser:

  • (enh) prevent re-highlighting of an element [joshgoebel][]
  • (chore) Remove discontinued badges from README Bradley Mackey
  • (chore) Fix build size report Bradley Mackey

New Grammars:

  • added 3rd party Iptables grammar to SUPPORTED_LANGUAGES Checconio
  • added 3rd party x86asmatt grammar to SUPPORTED_LANGUAGES gondow
  • added 3rd party riscv64 grammar to SUPPORTED_LANGUAGES aana-h2
  • added 3rd party Ballerina grammar to SUPPORTED_LANGUAGES Yasith Deelaka

Core Grammars:

  • fix(rust) added negative-lookahead for callable keywords if while for [Omar Hussein][]
  • enh(armasm) added x0-x30 and w0-w30 ARMv8 registers Nicholas Thompson
  • enh(haxe) added final, is, macro keywords and $ identifiers Robert Borghese
  • enh(haxe) support numeric separators and suffixes Robert Borghese
  • fix(haxe) fixed metadata arguments and support non-colon syntax Robert Borghese
  • fix(haxe) differentiate abstract declaration from keyword Robert Borghese
  • fix(bash) do not delimit a string by an escaped apostrophe [hancar][]
  • enh(swift) support macro keyword Bradley Mackey
  • enh(swift) support parameter pack keywords Bradley Mackey
  • enh(swift) regex literal support Bradley Mackey
  • enh(swift) @unchecked and @Sendable support Bradley Mackey
  • enh(scala) add using directives support //> using foo bar [Jamie Thompson][]
  • fix(scala) fixed comments in constructor arguments not being properly highlighted Isaac Nonato
  • enh(swift) ownership modifiers support Bradley Mackey
  • enh(nsis) Add !assert compiler flag [idleberg][]
  • fix(haskell) do not treat double dashes inside infix operators as comments [Zlondrej][]
  • enh(rust) added eprintln! macro qoheniac
  • enh(leaf) update syntax to 4.0 Samuel Bishop
  • fix(reasonml) simplify syntax and align it with ocaml jchavarri
  • fix(swift) warn_unqualified_access is an attribute Bradley Mackey
  • enh(swift) macro attributes are highlighted as keywords Bradley Mackey
  • enh(stan) updated for version 2.33 (#3859) Brian Ward
  • fix(css) added '_' css variable detection Md Saad Akhtar
  • enh(groovy) add record and var as keywords Guillaume Laforge

Developer Tool:

2023-04-29 21:35:03
highlight.js

11.8.0 "Spring has arrived" Edition

Changelog

Parser engine:

  • added a function to default export to generate a fresh highlighter instance to be used by extensions WisamMechano
  • added BETA __emitTokens key to grammars to allow then to direct their own parsing, only using Highlight.js for the HTML rendering Josh Goebel
  • (enh) add removePlugin api faga295
  • (fix) typo in language name of JavaScript Cyrus Kao

New Grammars:

  • added 3rd party Lang grammar to SUPPORTED_LANGUAGES AdamRaichu
  • added 3rd party C3 grammar to SUPPORTED_LANGUAGES aliaegik

Core Grammars:

  • enh(sql) support _ in variable names [joshgoebel][]
  • enh(mathematica) update keywords list to 13.2.1 arnoudbuzing
  • enh(protobuf) add proto alias for Protobuf [dimitropoulos][]
  • enh(sqf) latest changes in Arma 3 v2.11 Leopard20
  • enh(js/ts) Added support for GraphQL tagged template strings Ali Ukani
  • enh(javascript) add sessionStorage to list of built-in variables Jeroen van Vianen
  • enh(http) Add supporxt for HTTP/3 Rijenkii
  • added 3rd party Motoko grammar to SUPPORTED_LANGUAGES rvanasa
  • added 3rd party Candid grammar to SUPPORTED_LANGUAGES rvanasa
  • fix(haskell) Added support for characters CrystalSplitter
  • enh(dart) Add base, interface, sealed, and when keywords Sam Rawlins
  • enh(php) detect newer more flexible NOWdoc syntax (#3679) Timur Kamaev
  • enh(python) improve autodetection of code with type hinting any function's return type (making the -> operator legal) Keyacom
  • enh(bash) add select and until as keywords
2022-11-24 06:07:54
highlight.js

11.7.0 - "Gobble Gobble" Thanksgiving Edition

Version 11.7.0

New Grammars:

  • added 3rd party LookML grammar to SUPPORTED_LANGUAGES Josh Temple
  • added 3rd party FunC grammar to SUPPORTED_LANGUAGES [Nikita Sobolev][]
  • Added 3rd party Flix grammar to SUPPORTED_LANGUAGES The Flix Organisation
  • Added 3rd party RVT grammar to SUPPORTED_LANGUAGES Sopitive

Grammars:

  • enh(scheme) add scm alias for Scheme matyklug18
  • fix(typescript) patterns like <T = are not JSX Josh Goebel
  • fix(bash) recognize the (( keyword Nick Chambers
  • enh(Ruby) misc improvements (kws, class names, etc) Josh Goebel
  • fix(js) do not flag import() as a function, rather a keyword nathnolt
  • fix(bash) recognize the (( keyword Nick Chambers
  • fix(nix) support escaped dollar signs in strings h7x4
  • enh(cmake) support bracket comments Hirse
  • enh(java) add yield keyword to java MBoegers
  • enh(java) add permits keyword to java MBoegers
  • fix(javascript/typescript) correct identifier matching when using numbers Lachlan Heywood

Improvements:

2022-07-13 23:09:49
highlight.js

11.6.0 - "Pink Lemonade on a hot day" Edition

Version 11.6.0

Supported Node.js versions:

  • (chore) Drops support for Node 12.x, which is no longer supported by Node.js.

Default build changes:

  • add wasm to default :common build (#3526) [Josh Goebel][]
  • add graphql to default :common build (#3526) [Josh Goebel][]

Grammars:

  • fix(json) changed null/booleans from keyword to literal shikhar13012001
  • enh(gml) reorganized and added additional keywords Bluecoreg
  • enh(csharp) Added support for the new scoped keyword in C# (#3571) [David Pine][]
  • enh(scala) add transparent keyword Matt Bovel
  • fix(rust) highlight types immediately preceeding :: (#3540) [Josh Goebel][]
  • Added 3rd party Apex grammar to SUPPORTED_LANGUAGES (#3546) David Schach
  • fix(rust) recognize include_bytes! macro (#3541) Serial-ATA
  • fix(java) do not intepret == as a variable declaration Mousetail
  • enh(swift) add SE-0335 existential any keyword (#3515) Bradley Mackey
  • enh(swift) add support for distributed keyword Marcus Ortiz
  • enh(xml) recognize Unicode letters instead of only ASCII letters in XML element and attribute names (#3256)Martin Honnen
  • Added 3rd party Toit grammar to SUPPORTED_LANGUAGES Serzhan Nasredin
  • Use substring() instead of deprecated substr() Tobias Buschor
  • Added 3rd party Oak grammar to SUPPORTED_LANGUAGES Tim Smith
  • enh(python) add match and case keywords Avrumy Lunger
2022-04-11 09:15:29
highlight.js

Version 11.5.1

Just a tiny release to hopefully fix the issues some are having with CSS not seen as having side effects with web pack, etc...


Packaging:

  • (chore) explicitly set sideEffect for css and scss files, fixes #3504