entities NPM version Downloads Node.js CI

Encode & decode HTML & XML entities with ease & speed.

Features

How to…

…install entities

npm install entities

…use entities

import * as entities from "entities";

// Encoding
entities.escapeUTF8("& ü"); // "& ü"
entities.encodeXML("& ü"); // "& ü"
entities.encodeHTML("& ü"); // "& ü"

// Decoding
entities.decodeXML("asdf & ÿ ü '"); // "asdf & ÿ ü '"
entities.decodeHTML("asdf & ÿ ü '"); // "asdf & ÿ ü '"

Performance

Benchmarked in September 2025 with Node v24.6.0 on Apple M2 using tinybench. Higher ops/s is better; avg (μs) is the mean time per operation. See scripts/benchmark.ts to reproduce.

Decoding

Library Version ops/s avg (μs) ±% slower
entities 7.0.0 5,838,416 175.57 0.06
html-entities 2.6.0 2,919,637 347.77 0.33 50.0%
he 1.2.0 2,318,438 446.48 0.70 60.3%
parse-entities 4.0.2 852,855 1,199.51 0.36 85.4%

Encoding

Library Version ops/s avg (μs) ±% slower
entities 7.0.0 2,770,115 368.09 0.11
html-entities 2.6.0 1,491,963 679.96 0.58 46.2%
he 1.2.0 481,278 2,118.25 0.61 82.6%

Escaping

Library Version ops/s avg (μs) ±% slower
entities 7.0.0 4,616,468 223.84 0.17
he 1.2.0 3,659,301 280.76 0.58 20.7%
html-entities 2.6.0 3,555,301 296.63 0.84 23.0%

Note: Micro-benchmarks may vary across machines and Node versions.


FAQ

What methods should I actually use to encode my documents?

If your target supports UTF-8, the escapeUTF8 method is going to be your best choice. Otherwise, use either encodeHTML or encodeXML based on whether you're dealing with an HTML or an XML document.

You can have a look at the options for the encode and decode methods to see everything you can configure.

When should I use strict decoding?

When strict decoding, entities not terminated with a semicolon will be ignored. This is helpful for decoding entities in legacy environments.

Why should I use entities instead of alternative modules?

As of September 2025, entities is faster than other modules. Still, this is not a differentiated space and other modules can catch up.

More importantly, you might already have entities in your dependency graph (as a dependency of eg. cheerio, or htmlparser2), and including it directly might not even increase your bundle size. The same is true for other entity libraries, so have a look through your node_modules directory!

Does entities support tree shaking?

Yes! Note that for best results, you should not use the encode and decode functions, as they wrap around a number of other functions, all of which will remain in the bundle. Instead, use the functions that you need directly.


Acknowledgements

This library wouldn't be possible without the work of these individuals. Thanks to


License: BSD-2-Clause

Security contact information

To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure.

entities - Installation

To install entities via this registry, you'll need to install via the --registry parameter with your package manager.

n

NPM

npm install entities --registry https://js.registry.sudovanilla.org

Learn more about the --registry parameter.

Yarn

yarn config set registry https://js.registry.sudovanilla.org
yarn install entities

Learn more about the config option.

PNPM

pnpm install entities --registry https://js.registry.sudovanilla.org

Learn more about the --registry parameter.

Bun Logo

Bun

bun install entities --registry https://js.registry.sudovanilla.org

Learn more about the --registry parameter.

Learn more about setting this up in your bunfig.toml configuration.


For Deno, add the following to your .npmrc file in your directory:

registry="https://js.registry.sudovanilla.org"

Then run the deno install command.

entities - Download

Download Tarball (v8.0.0)

Integrity sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==
SHASUM c1df5fe3602429747fa233d0dd26f142f0ce4743
Tarball https://js.registry.sudovanilla.org/entities/-/entities-8.0.0.tgz