strip-ansi
Strips ANSI escape codes from strings — the small, fast utility Node.js later built directly into its own core API.
Repository Health
Technical Analysis
strip-ansi is a minimal, dependency-light JavaScript utility that removes ANSI escape codes — the invisible control sequences terminals use for color, cursor movement, and hyperlinks — from a string. Maintained by Sindre Sorhus as part of the chalk organization’s suite of terminal utilities, it pairs with ansi-regex to match the full range of ANSI sequences, including OSC hyperlinks and 8-bit CSI introducers.
The package ships ESM-only with bundled TypeScript types and no build step. It underpins the broader terminal-color ecosystem (chalk, has-ansi, and countless CLI tools), and its behavior was influential enough that Node.js adopted the same logic directly into its own core util.stripVTControlCharacters API.
What You Get
- A single default-exported
stripAnsi()function with zero configuration - Bundled TypeScript type declarations (
index.d.ts) with no separate@typespackage needed - A fast-path optimization that skips the regex entirely when no escape/CSI bytes are present
- Support for both 7-bit ESC and 8-bit CSI introducers, plus OSC hyperlink sequences
Common Use Cases
- Stripping color codes from captured CLI output before logging, diffing, or storing it
- Sanitizing terminal output for length calculations (e.g. computing visible string width)
- Cleaning subprocess stdout/stderr before writing to log files or test snapshots
- Feeding plain text to non-terminal consumers such as web UIs or CI output parsers
Under The Hood
Architecture
strip-ansi has no internal architecture to speak of by design: it’s a single-file module (index.js) exporting one function that validates its input, applies a fast-path bail-out when no escape-sequence bytes are present, and otherwise runs a single .replace() call against a precompiled regex sourced from the ansi-regex package. There are no layers, no internal abstractions, and nothing to break beyond that one function — which is appropriate for its scope: a single-purpose string transform, not an application.
Tech Stack
The package is plain JavaScript published as an ES module ("type": "module"), targeting Node.js 12+, with a single runtime dependency on ansi-regex for pattern matching. It ships hand-written TypeScript declarations (index.d.ts) rather than being authored in TypeScript, has no build step, and is tested with ava, type-checked with tsd, and linted with xo.
Code Quality
Test coverage in test.js runs a focused but comprehensive set of cases through ava — color codes, mixed reset/set sequences, terminal hyperlinks, OSC sequences terminated by BEL, and 8-bit CSI introducers — plus an explicit test that plain strings pass through untouched. Type correctness is enforced separately via tsd against index.test-d.ts. Error handling is explicit: non-string input throws a descriptive TypeError rather than failing silently. Linting is enforced via xo, and CI runs via GitHub Actions workflows in .github/.
API Design
The public API is about as low-friction as a package can get: one default export, one argument, one return value, no configuration object, no instantiation. The accompanying index.d.ts doc comment includes runnable usage examples inline, so editors surface real examples on hover. The tradeoff for this simplicity is that stripping behavior is fixed — there’s no way to opt out of stripping OSC hyperlinks specifically, for example — but for a package this narrowly scoped, that’s a reasonable design choice rather than a limitation.
Used by 31 apps in this directory
Teleport
Authentication · Security
Zero-trust infrastructure access platform that replaces credentials and VPNs with short-lived certificates, SSO, and identity-aware proxies for SSH, Kubernetes, databases, RDP, and AI agents.
Trigger.dev
AI Development · Automation · Developer Tools
Build and deploy fully-managed AI agents and background jobs in TypeScript — with no timeouts, durable retries, real-time observability, and elastic scaling built in.
typesense
Search
A blazing-fast, typo-tolerant open-source search engine that delivers instant search experiences with built-in vector, semantic, and geo-search — all from a single binary.
Webiny JS
Blogging · CMS · Ecommerce
Open-source, self-hosted CMS on AWS serverless — a TypeScript framework you extend with code, not a product you configure through a UI.