JSPM

fast-escape-html

1.0.0-beta.2
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 322
  • Score
    100M100P100Q87836F
  • License MIT

Fastest HTML escape on Node.js, even faster than the Rust-based one!

Package Exports

  • fast-escape-html

Readme

fast-escape-html

Fastest, zero-dependencies, plain JavaScript, 100% test coverage, HTML escaping library for JavaScript.

Even faster than the Rust-based @napi-rs/escape on Node.js (see realworld benchmark below)!

Installation

# Using npm, yarn, or pnpm
npm install fast-escape-html
yarn add fast-escape-html
pnpm add fast-escape-html

Usage

import { escapeHTML } from 'fast-escape-html';

Benchmark

The benchmark is run using mitata against realworld websites' HTML:

# Before running the benchmark, build the dist
# The benchmark cases are run against the built files instead of the source files
pnpm i && pnpm run build

# Run the benchmark
pnpm run bench
# On supported platforms (Linux, macOS), you can use "sudo" to enable hardware counter
sudo pnpm run bench

Results follow:

clk: ~3.01 GHz
cpu: Apple M2 Max
runtime: node 22.15.1 (arm64-darwin)

benchmark                   avg (min … max) p75 / p99    (min … top 1%)
------------------------------------------- -------------------------------
• skk.moe
------------------------------------------- -------------------------------
fast-escape-html             240.10 µs/iter 234.50 µs ██
                      (213.21 µs … 1.07 ms) 487.38 µs ██
                    (107.52 kb … 843.56 kb) 485.42 kb ██▇▄▃▂▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁

escape-html                  233.85 µs/iter 233.96 µs ▂█
                    (218.50 µs … 511.21 µs) 377.38 µs ██▄
                    ( 63.63 kb … 711.84 kb) 484.92 kb ███▆▃▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

@napi-rs/escape              252.24 µs/iter 250.92 µs ██
                      (231.75 µs … 1.56 ms) 609.38 µs ██
                    (207.75 kb … 207.77 kb) 207.77 kb ██▅▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

html-escaper                 388.08 µs/iter 381.96 µs ▅█
                      (353.79 µs … 1.42 ms) 874.79 µs ██
                    (540.52 kb … 576.24 kb) 574.08 kb ██▅▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

lodash.escape                389.20 µs/iter 386.38 µs ▃█
                      (357.13 µs … 1.18 ms) 895.54 µs ██
                    (540.52 kb … 598.29 kb) 574.13 kb ██▅▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

escape-goat                  526.43 µs/iter 505.25 µs  █
                      (459.50 µs … 2.85 ms)   1.17 ms ▆█
                    (  1.22 mb …   1.22 mb)   1.22 mb ██▆▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

• github.com (incognito)
------------------------------------------- -------------------------------
fast-escape-html             775.54 µs/iter 774.00 µs  █
                      (727.21 µs … 1.24 ms)   1.05 ms ██▇
                    (  1.19 mb …   1.19 mb)   1.19 mb ████▄▃▂▁▁▁▁▁▁▂▂▂▁▁▂▁▁

escape-html                  791.52 µs/iter 789.17 µs ▂█▄
                      (743.42 µs … 1.21 ms)   1.05 ms ███▄
                    (  1.19 mb …   1.19 mb)   1.19 mb ████▆▃▃▂▂▂▁▁▁▂▂▂▂▂▂▂▁

@napi-rs/escape              929.73 µs/iter 932.88 µs  █
                      (811.29 µs … 3.69 ms)   2.07 ms  ██
                    (697.81 kb … 697.81 kb) 697.81 kb ███▅▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

html-escaper                   1.15 ms/iter   1.15 ms  █▄
                        (1.06 ms … 1.95 ms)   1.62 ms ▂██
                    (  1.37 mb …   1.43 mb)   1.39 mb ████▅▃▃▂▁▂▂▁▁▂▂▂▂▁▁▁▁

lodash.escape                  1.14 ms/iter   1.13 ms  █▅
                        (1.06 ms … 1.72 ms)   1.62 ms  ██
                    (  1.37 mb …   1.43 mb)   1.39 mb ████▃▂▁▂▁▁▁▁▂▂▂▂▁▁▁▁▁

escape-goat                    1.40 ms/iter   1.35 ms  █
                        (1.19 ms … 3.66 ms)   2.58 ms  █
                    (  3.82 mb …   3.82 mb)   3.82 mb ███▂▂▁▂▂▂▃▂▂▂▁▁▁▁▁▁▁▁

• stackoverflow.com (incognito)
------------------------------------------- -------------------------------
fast-escape-html             676.05 µs/iter 667.96 µs  █
                      (628.54 µs … 1.03 ms) 981.58 µs ███
                    (  1.18 mb …   1.18 mb)   1.18 mb ███▇▃▂▁▁▁▁▁▁▁▁▁▁▂▂▂▂▂

escape-html                  699.23 µs/iter 694.79 µs ▃█▆
                      (643.38 µs … 1.11 ms)   1.04 ms ███▃
                    (  1.18 mb …   1.18 mb)   1.18 mb ████▅▂▁▁▁▁▁▁▁▁▁▂▂▃▂▂▁

@napi-rs/escape              797.89 µs/iter 793.25 µs  ▃█
                      (679.50 µs … 2.51 ms)   1.76 ms ▂██
                    (586.23 kb … 586.23 kb) 586.23 kb ███▆▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

html-escaper                   1.13 ms/iter   1.12 ms  █
                        (1.02 ms … 1.95 ms)   1.70 ms ██▆▂
                    (  1.23 mb …   1.32 mb)   1.28 mb ████▄▃▂▁▁▂▁▂▂▂▂▂▂▁▁▁▁

lodash.escape                  1.11 ms/iter   1.11 ms  █
                        (1.02 ms … 1.87 ms)   1.70 ms ██▇▂
                    (  1.26 mb …   1.32 mb)   1.28 mb ████▃▂▁▁▁▁▁▁▁▂▂▂▁▁▁▁▁

escape-goat                    1.28 ms/iter   1.23 ms ▃█
                        (1.10 ms … 3.69 ms)   2.28 ms ██
                    (  3.30 mb …   3.30 mb)   3.30 mb ███▃▂▁▁▁▁▁▂▃▂▂▂▁▁▁▁▁▁

• www.google.com (incognito)
------------------------------------------- -------------------------------
fast-escape-html             399.09 µs/iter 399.21 µs █▄
                    (379.87 µs … 688.54 µs) 608.25 µs ██▂
                    (513.24 kb … 513.29 kb) 513.27 kb ███▄▂▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

escape-html                  406.16 µs/iter 406.50 µs █▅
                    (386.50 µs … 679.58 µs) 607.38 µs ██▂
                    (513.24 kb … 513.29 kb) 513.27 kb ███▅▃▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

@napi-rs/escape              458.32 µs/iter 470.00 µs ▂█
                      (400.46 µs … 1.54 ms) 968.54 µs ██▇▃
                    (390.05 kb … 390.05 kb) 390.05 kb ████▄▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

html-escaper                 508.47 µs/iter 505.88 µs  █
                      (464.54 µs … 1.07 ms) 844.92 µs ▇█▄
                    (721.21 kb … 761.35 kb) 758.76 kb ███▅▃▂▁▁▁▁▂▂▁▂▁▁▁▁▁▁▁

lodash.escape                513.51 µs/iter 511.96 µs  █
                      (469.21 µs … 1.20 ms) 942.96 µs ▅█▃
                    (733.70 kb … 791.47 kb) 760.68 kb ███▄▂▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁

escape-goat                  667.42 µs/iter 645.13 µs  █
                      (568.54 µs … 2.35 ms)   1.41 ms ▃█
                    (  1.75 mb …   2.20 mb)   1.97 mb ███▃▂▁▁▂▂▂▂▂▂▁▁▁▁▁▁▁▁