html-to-text

Advanced HTML to plain text converter with word wrapping, tables, and customizable selectors

Library
npm
v10.0.1
1,762 stars
MIT License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
53 /100 Fair
Development Activity 32
Maintenance 8
Community 72
Maturity 60
Momentum 40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
85 /100 Excellent
Architecture 85
Code Quality 82
Innovation 88
Learning Curve 75

html-to-text is a battle-tested Node.js library that parses HTML documents and renders them as clean, readable plain text. It handles the messy realities of real-world markup — inline and block-level tags, tables with colspans and rowspans, links with their hrefs, Unicode content, and word wrapping — so you never have to strip tags with brittle regular expressions again.

Beyond simple tag stripping, it exposes a stylesheet-like selector system that lets you decide exactly how each element is formatted, skipped, or transformed. With over 11 million weekly downloads, it is the de-facto standard for generating plain-text email bodies, previews, search indexes, and text snapshots from HTML.

What You Get

  • A simple convert / htmlToText function plus a compile factory for reusing options across many documents at high throughput
  • A stylesheet-like selector system to format, skip, or customize the rendering of any HTML element
  • Built-in formatters for links, images, tables, ordered and unordered lists, headings, blockquotes, and horizontal rules
  • Configurable word wrapping, long-word splitting, whitespace handling, and entity decoding
  • Dual CommonJS and ES module builds with bundled TypeScript typedefs

Common Use Cases

  • Generating plain-text alternatives for HTML emails so messages render in text-only clients
  • Producing readable previews, excerpts, or notification snippets from stored HTML content
  • Feeding clean text into full-text search indexes or analytics pipelines
  • Creating deterministic text snapshots of rendered HTML for testing

Under The Hood

Architecture

The project is a pnpm-style monorepo whose published html-to-text package sits on top of a shared base package. A call to convert first composes user options with the defaults via options-composer, then parses the HTML string with htmlparser2 into a DOM. Element formatting decisions come from the selectors array, which selderee/parseley compile into an efficient decision tree so each DOM node is matched against selectors in near-constant time rather than being tested one-by-one. Matched nodes are dispatched to formatters (in text-formatters.js, table-printer.js, and the base package’s generic formatters) that push content into a BlockTextBuilder; that builder — together with InlineTextBuilder and whitespace-processor — handles block spacing, inline concatenation, whitespace collapsing, and word wrapping to assemble the final string.

Tech Stack

Written in modern JavaScript (ES2022, ESM-first) targeting Node.js >= 20.19. Runtime dependencies are minimal and focused: htmlparser2 for HTML parsing, dom-serializer for serialization, selderee with @selderee/plugin-htmlparser2 for selector compilation, and deepmerge-ts for options merging. The package ships dual CJS/ESM bundles produced by Rollup; tests run on AVA with c8 for coverage, and linting is handled by ESLint.

Code Quality

The codebase is small, modular, and well-tested. The html-to-text package alone carries roughly two dozen AVA test files spread across general behavior, individual tag handling, and full-document snapshot fixtures. Source files are concise (the core is around 200 lines), documented with JSDoc typedefs, and cleanly separate parsing, selector matching, and text building into distinct modules. Options are validated and merged predictably, and the extensive CHANGELOG documents deprecations across major versions.

API Design The public surface is deliberately tiny — convert, its htmlToText alias, and compile — which makes the common case trivial while the selector and custom-formatter systems provide deep escape hatches for advanced needs. The 22 KB README documents every option, selector, and predefined formatter with runnable examples, and the compile pattern gives a clear, well-signposted path to high performance when processing batches. Naming is consistent and the migration notes between major versions are thorough.

Used by 23 apps in this directory

TypeScript
98%
Other

LobeHub

AI Assistants · Automation · Productivity

83,455

Your Chief Agent Operator — build, schedule, and collaborate with an entire AI team in one self-hostable workspace.

View details
92
Repo Health
81
Technical
65
Dependency
Built with
TypeScript 98%
Updated 6 days ago
TypeScript
71%
Other

LogChimp

Marketing · Product Management

1,132

Collect customer feedback, prioritize features with upvotes, and build transparent product roadmaps — fully self-hosted and open source.

View details
83
Repo Health
77
Technical
72
Dependency
Built with
TypeScript 71%
Vue 27%
Updated 1 weeks ago
TypeScript
98%
MPL 2.0

Logto

Authentication

14,769

Open-source auth infrastructure for SaaS and AI apps with OIDC, SAML, and RBAC

View details
92
Repo Health
83
Technical
63
Dependency
Built with
TypeScript 98%
Updated 1 weeks ago
TypeScript
49%
Apache 2.0

LTX-Desktop

AI Design Tools · Video Editors

2,141

An open-source Electron app that runs LTX-2 text-to-video, image-to-video, and video editing models locally on your GPU, or via a cloud API when your hardware can't keep up.

View details
76
Repo Health
82
Technical
73
Dependency
Built with
TypeScript 49%
Python 46%
Updated 1 weeks ago
TypeScript
92%
Other

n8n

Automation · No Code Platforms

208,437

Code when you need it, UI when you don't — the workflow automation platform built for technical teams who refuse to choose.

View details
95
Repo Health
87
Technical
62
Dependency
Built with
TypeScript 92%
Updated 1 weeks ago
JavaScript
88%
GPL 3.0

NodeBB

Community

15,242

Modern Node.js forum software with real-time WebSockets, multi-database support, and a plugin ecosystem — the community platform built for the open web and the Fediverse.

View details
97
Repo Health
78
Technical
70
Dependency
Built with
JavaScript 88%
Go Template 11%
Updated 6 days ago
TypeScript
85%
GPL 3.0

Notesnook

File Storage · Note Taking · Security

14,822

End-to-end encrypted, open-source note-taking where your data stays yours — even from the server.

View details
91
Repo Health
84
Technical
60
Dependency
Built with
TypeScript 85%
JavaScript 12%
Updated 6 days ago
TypeScript
98%
Other

Novu

Developer Tools

40,195

Open-source communication infrastructure that connects your products and AI agents to every channel your users live on — Inbox, Email, SMS, Push, Chat, and more.

View details
93
Repo Health
80
Technical
64
Dependency
Built with
TypeScript 98%
Updated 6 days ago
TypeScript
26%
AGPL 3.0

Omnivore

Bookmarks Archiving · Knowledge Management · Note Taking

16,356

Self-hosted read-it-later platform with highlights, newsletters, PDFs, and seamless Obsidian and Logseq integration.

View details
90
Repo Health
74
Technical
65
Dependency
Built with
TypeScript 26%
JavaScript 24%
HTML 20%
Updated 1 weeks ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers