Choosing an Angular rich text editor: the numbers first
The short answer
ngx-quill — accepting that each release supports exactly one Angular major. If you need CKEditor 5 or TinyMCE features, know that both engines are GPL-2.0-or-later unless you buy a commercial licence. If you want a small, self-contained editor with no GPL obligations, @ebdev/ngx-richtext covers Angular 18–22 in one 446 kB package. Read the peerDependencies before the feature lists — that is where the real cost of each option lives.
What was measured, and how
npm view against the registry and from reading the licence file inside each published tarball. No dev builds, no vendor documentation, no memory of what a package probably requires.
$ npm view ngx-quill version peerDependencies
version = '31.0.1'
peerDependencies = { '@angular/core': '^22.0.0', quill: '^2.0.0', rxjs: '^7.0.0' }
$ npm view @ckeditor/ckeditor5-angular version peerDependencies
version = '11.2.0'
peerDependencies = { '@angular/core': '>=19.2.19', ckeditor5: '>=47.0.0', ... }
$ npm view @tinymce/tinymce-angular version peerDependencies
version = '9.1.1'
peerDependencies = { '@angular/core': '>=16.0.0', tinymce: '^8.0.0 || ^7.0.0 || ^6.0.0 || ^5.5.0', ... }
$ npm view ngx-editor dist-tags
{ latest: '19.0.0-beta.1' }
$ npm view @ebdev/ngx-richtext version peerDependencies
version = '0.4.1'
peerDependencies = { '@angular/core': '^18.0.0 || ^19.0.0 || ^20.0.0 || ^21.0.0 || ^22.0.0', ... }| Package | Licence | Angular peers | Engine | Unpacked size |
|---|---|---|---|---|
@ebdev/ngx-richtext 0.4.1 | ||||
ngx-quill 31.0.1 | quill 2.0.3 | |||
@ckeditor/ckeditor5-angular 11.2.0 | ckeditor5 48.4.0 | |||
@tinymce/tinymce-angular 9.1.1 | tinymce 8.8.2 | |||
ngx-editor 19.0.0-beta.1 |
The licence terms, from the licence files
Licensed under, and subject to the restrictions of:
1. The terms of GNU General Public License Version 2 or later; or
2. The Tiny Technologies, Inc Software Terms & Conditions of Use ...Licensed under a dual-license model, this software is available under:
* the GNU General Public License Version 2 or later (see COPYING.GPL),
* or commercial license terms from CKSource Holding sp. z o.o.ngx-quill is the clean open-source option: MIT wrapper over a BSD-3-Clause engine, no dual licence, no obligations beyond attribution. ngx-editor is MIT as well. @ebdev/ngx-richtext is commercial with a free core: the free tier has no GPL obligations because there is no GPL — premium features unlock with a paid key, verified offline.
Angular version support is where upgrades hurt
package.json files is ngx-quill’s peer range: '@angular/core': '^22.0.0'. One Angular major, exactly. When Angular 23 ships, applications on ngx-quill wait for (and take) a new ngx-quill major to upgrade — the registry’s old-version dist-tag pointing at 21.0.2 shows the project maintaining a trailing line for exactly this reason. It is a deliberate, defensible policy; it is also a recurring migration you are signing up for.
>=16.0.0 with engine peers spanning four TinyMCE majors. CKEditor’s requires >=19.2.19. ngx-editor’s latest published release is a beta (19.0.0-beta.1) requiring Angular 19.2 or newer — worth knowing before putting it in front of a form your business depends on. ngx-richtext declares five majors explicitly, 18 through 22.
The five, one at a time
ngx-quill — the ecosystem default
node_modules. Pick it when ecosystem depth matters more than upgrade friction.
CKEditor 5 — the most capable, and priced like it
TinyMCE — the widest compatibility, same licence question
ngx-editor — MIT and ProseMirror, currently in beta
ngx-richtext — small and self-contained; ours
tslib and two audited crypto libraries used for offline licence verification. Toolbar, tables, images, RTL and theming are in the free core. The trade-offs, stated plainly: it is a 0.x package from a small vendor — the API can still move between minors; there is no plugin ecosystem to reach for; and while the [(value)] binding is free, binding through formControl / ngModel is a premium feature ($9.99 a year). If you need collaboration, Deltas or a plugin marketplace, one of the packages above serves you better.
What integration looks like
import { Component, model } from '@angular/core';
import { RteEditorComponent } from '@ebdev/ngx-richtext';
@Component({
selector: 'app-post-editor',
imports: [RteEditorComponent],
template: `
<ngx-rte [(value)]="html" placeholder="Write the post…" minHeight="280px" />
`,
})
export class PostEditorComponent {
readonly html = model('<p></p>');
}Questions
- Which Angular rich text editor is free for commercial use?
- ngx-quill (MIT, over BSD-3 Quill) with no strings attached; ngx-editor (MIT), currently published as a beta. CKEditor 5 and TinyMCE are free only under GPL-2.0-or-later obligations — otherwise commercial. ngx-richtext has a free core under a commercial licence, with premium features paid.
- Do the sizes in the table equal what ships to the browser?
- No. They are npm unpacked sizes — the node_modules footprint. Production bundle size depends on tree-shaking and lazy loading and was not benchmarked here; treat the column as install and audit weight, not page weight.
- Which editor supports the most Angular versions at once?
- By declared peers on 24 August 2026: @tinymce/tinymce-angular accepts Angular 16 onward, ngx-richtext declares 18–22 explicitly, CKEditor 5’s wrapper requires 19.2.19 or newer, ngx-editor’s beta requires 19.2, and ngx-quill 31 requires exactly Angular 22.