&π; Escape a string for use in HTML or the inverse
JavaScript
556
32 commits
updated Jul 23, 2026
Escape a string for use in HTML or the inverse
npm install escape-goat
import {htmlEscape, htmlUnescape} from 'escape-goat';
htmlEscape('π¦ & π');
//=> 'π¦ & π'
htmlUnescape('π¦ & π');
//=> 'π¦ & π'
htmlEscape('Hello <em>World</em>');
//=> 'Hello <em>World</em>'
const url = 'https://sindresorhus.com?x="π¦"';
htmlEscape`<a href="${url}">Unicorn</a>`;
//=> '<a href="https://sindresorhus.com?x="π¦"">Unicorn</a>'
const escapedUrl = 'https://sindresorhus.com?x="π¦"';
htmlUnescape`URL from HTML: ${escapedUrl}`;
//=> 'URL from HTML: https://sindresorhus.com?x="π¦"'
Escapes the following characters in the given string argument: & < > " '
The function also works as a tagged template literal that escapes interpolated values.
Note: This method of escaping is only safe when inserting data into normal tags like body, div, p, b, td, etc. Inserting htmlEscape'd data into tags like script and style opens your app to XSS vulnerabilities.
Unescapes the following HTML entities in the given htmlString argument: & < > " '
The function also works as a tagged template literal that unescapes interpolated values.
Ensure you always quote your HTML attributes to prevent possible XSS.
I couldn't find one I liked that was tiny, well-tested, and had both escape and unescape methods.
Overall
Maintained
Code review
npm
Latest release
Releases this year
823 followers Β· starred May 2017
1,684 followers Β· starred May 2017
670 followers Β· starred Mar 2024
2,634 followers Β· starred Sep 2022
&π; Escape a string for use in HTML or the inverse
JavaScript
556
32 commits
updated Jul 23, 2026
Escape a string for use in HTML or the inverse
npm install escape-goat
import {htmlEscape, htmlUnescape} from 'escape-goat';
htmlEscape('π¦ & π');
//=> 'π¦ & π'
htmlUnescape('π¦ & π');
//=> 'π¦ & π'
htmlEscape('Hello <em>World</em>');
//=> 'Hello <em>World</em>'
const url = 'https://sindresorhus.com?x="π¦"';
htmlEscape`<a href="${url}">Unicorn</a>`;
//=> '<a href="https://sindresorhus.com?x="π¦"">Unicorn</a>'
const escapedUrl = 'https://sindresorhus.com?x="π¦"';
htmlUnescape`URL from HTML: ${escapedUrl}`;
//=> 'URL from HTML: https://sindresorhus.com?x="π¦"'
Escapes the following characters in the given string argument: & < > " '
The function also works as a tagged template literal that escapes interpolated values.
Note: This method of escaping is only safe when inserting data into normal tags like body, div, p, b, td, etc. Inserting htmlEscape'd data into tags like script and style opens your app to XSS vulnerabilities.
Unescapes the following HTML entities in the given htmlString argument: & < > " '
The function also works as a tagged template literal that unescapes interpolated values.
Ensure you always quote your HTML attributes to prevent possible XSS.
I couldn't find one I liked that was tiny, well-tested, and had both escape and unescape methods.
Overall
Maintained
Code review
npm
Latest release
Releases this year
823 followers Β· starred May 2017
1,684 followers Β· starred May 2017
670 followers Β· starred Mar 2024
2,634 followers Β· starred Sep 2022