Trumbowyg: the 10kB gzip WYSIWYG editor that rides on contenteditable
A lightweight and amazing WYSIWYG JavaScript editor under 10kB
At a glance
- What is it?
- Trumbowyg is Alexandre Demode's MIT-licensed lightweight WYSIWYG editor, weighing 30kB minified or 10kB gzipped, built on jQuery with 45 plus supported languages and 25 plus demos. Its plugin system extends the core, the gulp toolchain builds it, and v2.31.0 is the current release with the develop branch carrying active work.
- Who is it for?
- Use Trumbowyg when a page needs rich text editing without shipping a framework-sized editor, and jQuery is already present, since the peer dependency starts at jQuery 1.8 and the whole library stays at 10kB gzip. Choose a framework-native editor for React or Vue applications that should not bridge through jQuery.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 10 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
Lightweight as the thesis, measured in bundlephobia
Trumbowyg is a simple and lightweight WYSIWYG editor, and the README quantifies the claim precisely, only 30kB minified or 10kB gzip for faster page loading, with a Bundlephobia badge beside the npm links keeping the number honest as the code evolves. In a category where editors routinely ship hundreds of kilobytes, the size is the product decision everything else serves, a minimal core, SVG icons compressed through the build, and features pushed into optional plugins. The editor's keywords describe its mechanism plainly, wysiwyg, editor, rich text, contenteditable, meaning the editing surface is the browser's own contenteditable, with Trumbowyg adding the toolbar, the command handling and the cleanup around it.
jQuery underneath, from 1.8 upward
The peer dependency is jquery at 1.8 or later, and the devDependencies carry jquery 4.0.0-beta.2 for testing against the coming major, a signal the project tracks jQuery's future rather than freezing in its past. The npm package's main entry is dist/trumbowyg.js, the built artifact rather than the source in src, and distribution runs through npm, cdnjs and the historical bower.json that still sits at the repository root. The gulp toolchain builds that dist, with terser minifying, svgmin and svgstore compressing and combining the icon set into sprites, sass compiling the stylesheets, and autoprefixer and clean-css finishing the CSS, so the small bundle is the product of an explicit pipeline rather than an accident.
The error everyone searches for
Among the searches around the project, trumbowyg is not a function describes the classic failure mode of any jQuery plugin, calling $(selector).trumbowyg() before the plugin script has loaded, or after jQuery has been re-included and replaced the prototype the plugin attached to. The fix is ordering and singularity, load jQuery first, load the plugin after, and include each once, and the CDN links on cdnjs make the correct order copyable. The same symptom appears when the built dist file is not actually served, since the source in src is not the runnable artifact, which is why the package main points at dist and the documentation's getting started shows the built file being included.
Forty-five languages, twenty-five demos
The documentation links quantify the editor's reach, 45 plus supported languages and 25 plus demos, with the languages page and demo gallery both living on the project site. Translation is named as the first contribution path, you can contribute to Trumbowyg with translations in languages you know, before any code contribution is mentioned, reflecting how a small core accumulates reach through localization rather than features. The demos cover the plugin behaviors users search for by name, uploads, colors, tables, events, each an isolated page demonstrating one capability, and the all options page documents the configuration surface that the core exposes.
Plugins as the extension contract
The plugin system is documented in two links, all existing plugins and create your own plugin, the pair that makes extensibility a designed contract rather than an accident. The plugins directory sits at the repository root beside src, each plugin a separate build artifact following the core's conventions, so an application loads the core plus only the plugins it needs, keeping the base bundle at its advertised size. The plugin API builds on the editor's command and event model, and the gulp build compiles them alongside the core with the same minification and SVG handling, meaning a plugin ships with the same size discipline as the editor itself.
The v2 line, and funding its maintenance
The release history shows a mature v2 line, v2.29.0 and v2.30.0 in January 2025 and v2.31.0 on 2025-03-02, with the develop branch as the default and the last push on 2026-09-21, so maintenance continues between tags. The README's support section is unusually direct about the economics, the amount of effort needed to maintain and develop new features is not sustainable without proper financial backing, with Patreon and PayPal links, a gold sponsor in Premirus Corporation, and a BACKERS.md file recording supporters. Alexandre Demode is the author, credited with contact and announcement channels, and the MIT license covers the whole, the standard structure of a one-maintainer open source project asking to be funded by its users. For contributors, the clone-and-run flow is four commands:
cd Trumbowyg # go into the project's root directory
npm install # install development dependencies
npm run dev # watch mode
npm run build # to build the projectContributing through gulp
The contribution flow is documented in four commands, fork and clone the repository, then cd Trumbowyg, npm install to install development dependencies, npm run dev for watch mode, and npm run build to build the project, with npm's lint and lint:editorconfig scripts enforcing style through jshint and an editorconfig checker. The dev toolchain is pinned through volta at node 22.13.1, and the gulpfile drives livereload during development, so a translator or plugin author sees their changes in a browser immediately. The editorconfig-checker in the lint chain is a small tell, whitespace discipline enforced mechanically across the files that translators most often touch, keeping merge conflicts in language files to content rather than formatting.
Editorial conclusion
Use Trumbowyg when a page needs rich text editing without shipping a framework-sized editor, and jQuery is already present, since the peer dependency starts at jQuery 1.8 and the whole library stays at 10kB gzip. Choose a framework-native editor for React or Vue applications that should not bridge through jQuery. Before adopting, browse the 25 plus demos to confirm the editing behaviors you need, check the plugin list since the core stays minimal by design, and verify your jQuery version, because the trumbowyg is not a function error usually means the plugin loaded before jQuery or not at all.
Frequently asked questions
Is the WYSIWYG editor free?
Yes, Trumbowyg is an MIT-licensed open source project, completely free to use, with its source on GitHub, packages on npm and cdnjs, and optional financial support through Patreon and PayPal for those who want to fund its development.
Why does trumbowyg report it is not a function?
This error means the plugin is not attached to jQuery at call time, usually because jQuery loads after the Trumbowyg script, jQuery is included twice replacing the prototype, or the built dist/trumbowyg.js file is not actually served. Load jQuery first, load the plugin after, include each once, and verify the dist artifact is the file being loaded.
What makes Trumbowyg lightweight?
The core ships at 30kB minified or 10kB gzipped, built on the browser's own contenteditable with jQuery for DOM work, a minimal command set in the core, SVG icons compressed into sprites by the build, and additional behaviors split into optional plugins loaded only when needed.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/alex-d-trumbowyg)