Socket
Book a DemoInstallSign in
Socket

unicode-to-plain-text

Package Overview
Dependencies
Maintainers
2
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

unicode-to-plain-text

Convert fancy Unicode text to plain ASCII with smart language preservation

latest
Source
npmnpm
Version
1.0.0
Version published
Maintainers
2
Created
Source

unicode-to-plain-text

Convert fancy Unicode text to plain ASCII with smart language preservation

Install

npm i unicode-to-plain-text

Usage

Basic usage:

import { toPlainText } from 'unicode-to-plain-text'

// Mathematical styles
toPlainText('𝐇𝐞𝐥𝐥𝐨 𝐖𝐨𝐫𝐥𝐝') // => 'Hello World'

// Enclosed characters
toPlainText('🅣🅔🅢🅣') // => 'TEST'

// Fullwidth forms
toPlainText('HELLO') // => 'HELLO'

Language preservation:

// Real languages are automatically preserved
toPlainText('Hello Γεια σας')  // => 'Hello Γεια σας' (Greek preserved)
toPlainText('Test Привет')     // => 'Test Привет' (Cyrillic preserved)

// But lookalike characters are converted
toPlainText('Α test')  // => 'A test' (Greek Alpha → Latin A)

Custom pipelines:

import {
  pipe,
  handleUpsideDown,
  mapCharacters,
  normalizeUnicode,
  removeDecorations,
  normalizeWhitespace,
  normalizeCasing
} from 'unicode-to-plain-text'

// Create a custom pipeline
const customTransform = pipe(
  handleUpsideDown,
  mapCharacters,
  normalizeUnicode,
  removeDecorations,
  normalizeWhitespace
)

const result = customTransform('𝐓𝐄𝐒𝐓')

API

toPlainText(text, options?)

Converts fancy Unicode text to plain ASCII

PropertyTypeDescription
textstringInput text with Unicode characters
optionsobjectOptional configuration object

Options

OptionTypeDefaultDescription
normalizeSpacesbooleantrueCollapse multiple spaces and trim whitespace
skipEmojibooleanfalsePreserve emoji characters (still removes other decorations like box drawing, arrows)

Examples

// Default behavior - emojis removed
toPlainText('Hello 🎉 World') // => 'Hello World'

// Preserve emojis
toPlainText('Hello 🎉 World', { skipEmoji: true }) // => 'Hello 🎉 World'

// Preserve spacing
toPlainText('Hello   World', { normalizeSpaces: false }) // => 'Hello   World'

// Combined options
toPlainText('𝐇𝐞𝐥𝐥𝐨  🎉  𝐖𝐨𝐫𝐥𝐝', { skipEmoji: true, normalizeSpaces: false })
// => 'Hello  🎉  World'

Returns a plain ASCII string with normalized whitespace and casing

Individual Functions

  • handleUpsideDown(text) - Reverses upside-down text
  • mapCharacters(text) - Maps Unicode to ASCII equivalents
  • normalizeUnicode(text) - Removes diacritics from Latin text
  • removeDecorations(text) - Removes emojis and decorations
  • normalizeWhitespace(text) - Normalizes and trims whitespace
  • normalizeCasing(text) - Normalizes inconsistent casing
  • pipe(...fns) - Composes functions into a pipeline

License

Apache-2.0

Keywords

unicode

FAQs

Package last updated on 05 Jan 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts