cssesc: CSS String and Identifier Escaping

3.0.0 · active · verified Tue Apr 21

cssesc is a JavaScript utility library designed for safely escaping arbitrary strings and identifiers for use within CSS. It specializes in producing the shortest possible valid ASCII-only escape sequences, making it efficient for various web development scenarios. Currently at stable version 3.0.0, it offers more granular control than the native `CSS.escape()` method or its polyfills. Key differentiators include the ability to specify if the output is intended for a CSS string literal or a CSS identifier, and control over quote preferences for string wrapping. Its release cadence is typically measured, reflecting its nature as a focused utility library with a stable API. It declares compatibility with Node.js versions 4 and higher, making it widely compatible, though modern usage typically occurs on much newer environments.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates basic CSS string and identifier escaping using `cssesc` with various options for quote types and wrapping, including handling of non-ASCII characters.

import cssesc from 'cssesc';

console.log('--- Escaping for CSS String Literal ---');
const unsafeString = 'Hello, world! I ♥ JavaScript and "quotes".';
const escapedString = cssesc(unsafeString);
console.log(`Original: "${unsafeString}"\nEscaped:  '${escapedString}'`);
// Expected: 'Hello, world! I \2665  JavaScript and \"quotes\".'

console.log('\n--- Escaping for CSS Identifier ---');
const unsafeIdentifier = '1a-b.c d';
const escapedIdentifier = cssesc(unsafeIdentifier, { isIdentifier: true });
console.log(`Original: "${unsafeIdentifier}"\nEscaped:  '${escapedIdentifier}'`);
// Expected: '\31 a-b\.c\ d'

console.log('\n--- Escaping with Double Quotes and Wrapping ---');
const anotherUnsafeString = 'My ID is #foo/bar and it has \'single\' quotes.';
const wrappedDoubleQuoteEscaped = cssesc(anotherUnsafeString, {
  quotes: 'double',
  wrap: true
});
console.log(`Original: "${anotherUnsafeString}"\nEscaped:  ${wrappedDoubleQuoteEscaped}`);
// Expected: "My ID is #foo/bar and it has 'single' quotes."

console.log('\n--- Escaping a non-ASCII character (emojis) ---');
const emojiString = 'User😊Name';
const escapedEmoji = cssesc(emojiString, { isIdentifier: true });
console.log(`Original: "${emojiString}"\nEscaped:  '${escapedEmoji}'`);
// Expected: 'User\1F60A Name'

view raw JSON →