Articles

Notes on building and buying rich text editors

Technical write-ups and buying analysis from the team that builds RichTextEditor. Every cost figure is taken from the vendor’s own published pricing, and every technique is one we ship.

Buying9 min read

What rich text editors actually cost in 2026

Editor-load metering, per-seat AI credits, and collaboration add-ons stack in ways list prices hide. A worked three-year comparison using each vendor's own published pricing.

Read the article →
Engineering11 min read

How paginated page view works in a browser editor

Word shows you page boundaries. A contenteditable does not. Here is how to project a continuous DOM onto real paper geometry - and the measurement trap that silently overflows pages.

Read the article →
Engineering6 min read

Legal numbering (1, 1.1, 1.1.1) with CSS counters

Contracts and specifications need hierarchical clause numbering. Writing the numbers into the text guarantees they drift. CSS counters keep the markup clean and the numbering always correct.

Read the article →
Architecture9 min read

CRDT vs OT: how collaborative editors merge edits

Google Docs transforms operations. Yjs-based editors converge data structures. The choice barely shows in a demo and shows up all over your architecture - plus a five-step test for verifying any vendor's claim.

Read the article →
Security8 min read

Content-Security-Policy for rich text editors

Editors inject stylesheets, set inline style attributes, embed iframes, and sometimes fetch libraries mid-session. Here is how to work out the policy you actually need instead of reaching for unsafe-inline.

Read the article →
Operations7 min read

Does your rich text editor phone home? How to check

Metered editors need to count you. If your editor bills per load, something is reporting those loads. A ten-minute method to find out exactly what your editor sends, and where.

Read the article →
Engineering9 min read

Why your format painter silently does nothing

Wrapping the target in a span with the captured styles looks obviously correct, and it fails on the most common case a user will try. The reason is one line of the CSS cascade that almost nobody thinks about.

Read the article →
Engineering8 min read

Footnotes that renumber themselves

A footnote is two things in two places that must always agree. Keep one source of truth - the order of the markers in the document - and derive everything else from it, including the numbers you write into the saved HTML.

Read the article →
Engineering7 min read

A contents block is content. An outline panel is not.

They look like the same feature and they belong to different halves of your editor. Getting the line wrong produces either chrome that leaks into published HTML, or a contents page that vanishes on save.

Read the article →