A lightweight, dependency-free HTML5 rich text editor designed to handle arbitrary HTML with powerful cross-browser normalization.
Squire is an HTML5 rich text editor that provides robust cross-browser normalization in a flexible, lightweight package. It was originally designed for email composition, requiring it to handle arbitrary HTML from third-party emails without breaking formatting, making HTML the source of truth. Unlike many modern editors, it avoids a structured internal data model to preserve complex HTML, excelling particularly with multiple levels of blockquotes.
Developers building web-based email clients or applications that need to handle and edit arbitrary HTML content, such as email forwarding, quoting, or rich text composition with complex formatting. It is also suitable for projects requiring a lightweight, dependency-free editor component that can be integrated with custom UI toolbars.
Developers choose Squire for its ability to preserve arbitrary HTML without sanitization limitations, its lightweight size (16KB minified and gzipped with no dependencies), and its specialized handling of nested blockquotes. It provides a core editing engine without built-in UI, allowing seamless integration with custom application interfaces and avoiding the bloat of dual UI toolkits.
The rich text editor for arbitrary HTML.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
At only 16KB minified and gzipped with no dependencies, Squire significantly reduces bundle size and load times, as emphasized in the README.
Designed for email forwarding, it handles any HTML input without breaking formatting, making it ideal for third-party content where HTML is the source of truth.
Specializes in managing multiple nested blockquote levels, a key requirement for email composition apps like Fastmail, as noted in the project description.
Intervenes only where browser behavior deviates, ensuring consistent editing across all reasonably recent browsers without relying on heavy polyfills or execCommand.
Provides only the core editing engine, requiring developers to build and integrate custom toolbars and interface elements from scratch, increasing development overhead.
Relies on external sanitization like DOMPurify or a custom sanitizeToDOMFragment function, adding setup complexity and potential risks if not properly implemented.
As a low-level component, it demands deeper knowledge of DOM manipulation and more custom code to create a full-featured editor compared to all-in-one solutions.