WordPress 7.1 and Minn
The code that ships to a site, measured the same way on both sides: PHP, JavaScript and CSS, minified duplicates skipped, bundled libraries on their own row. Measured 2026-10-23 from the WordPress 7.1 release zip and Minn 0.1.0 with Minn Admin 0.47.0. Minn is not released yet: 0.1.0 ships when the whole WordPress PHP API is accounted for and proven, and this page is measured again at that cut.
WordPress 7.1
1,803,799
lines in 2,130 files, 73.5 MB
1,508,971 lines of its own code, 294,828 in bundled libraries (12.2 MB)
Minn 0.1.0 + Minn Admin 0.47.0
396,269
lines in 1,319 files, 16.5 MB
396,243 lines of its own code, 26 in bundled libraries (270 KB)
WordPress 7.1 ships 4.6 times the lines of Minn 0.1.0 with Minn Admin 0.47.0, 3.8 times counting only each side's own code, and 4.5 times the bytes.
This is a size comparison, not a feature comparison. WordPress software carries the block editor packages, TinyMCE, the Customizer, the media library and every admin screen. Minn carries one interface (Minn Admin), renders block themes, and runs plugins through a facade that maps their calls onto the engine. Smaller is the point; the whole API is accounted for, and the logic in the facade keeps moving into the engine on the way to 1.0. What Minn does not do yet is on the status list.
What each part of WordPress becomes
Each part of the release zip, what Minn does instead, and the lines on each side.
| Part | WordPress | Minn |
|---|---|---|
| Runtime The engine and the facade. Every function, class, and method plugin code calls is mapped onto the engine or marked a dead end: 100% accounted for, 100% proven against WordPress so far. | 515,157 | 202,993 |
| Core blocks Rendered by the engine (counted in its lines), with the block view scripts and stylesheet beside it. The newest blocks are still owed. | 46,759 | 3,134 |
| Admin screens Minn Admin, one interface. The admin API answers as dead ends (1,798 stubs), so plugin code that calls it does not fatal. | 248,374 | 189,924 |
| Block editor packages Not carried. The block and site editors are dead ends (189 stubs): editing happens in Minn Admin. | 693,725 | 0 |
| Bundled libraries jQuery, for plugins that expect it. The HTTP, feed, and mail libraries plugins call (Requests, SimplePie, PHPMailer) are answered by the facade. | 294,828 | 26 |
| Root files Boot, the command line, and the layout tooling expects, with the root files at their paths. | 4,956 | 192 |
| Total | 1,803,799 | 396,269 |
The Customizer (465 symbols) and XML-RPC (197) sit inside the runtime and admin rows. Minn answers both as dead ends too. Where Minn stands has the whole count.
By language
| Language | WordPress lines | Minn lines | Ratio | WordPress files | Minn files |
|---|---|---|---|---|---|
| PHP | 616,725 | 325,433 | 1.9× | 1,315 | 1,281 |
| JavaScript | 999,399 | 63,420 | 15.8× | 336 | 32 |
| CSS | 187,675 | 7,416 | 25.3× | 479 | 6 |
| Total | 1,803,799 | 396,269 | 4.6× | 2,130 | 1,319 |
WordPress 7.1
The admin screens, the runtime and the root files of the release zip. Source: wordpress-7.1.zip.
| Part | Files | PHP | JS | CSS | Lines | Size |
|---|---|---|---|---|---|---|
| Bundled libraries jQuery, TinyMCE, CodeMirror, MediaElement, Plupload, Backbone, Underscore, React and lodash (js/dist/vendor), PHPMailer, Requests, SimplePie, sodium_compat, getID3, IXR, Text_Diff, php-compat | 441 | 104,101 | 187,796 | 2,931 | 294,828 | 12.2 MB |
| Block editor packages wp-includes/js/dist: the built @wordpress/* packages | 128 | 162 | 693,563 | 0 | 693,725 | 37.2 MB |
| Core blocks wp-includes/blocks | 406 | 23,929 | 0 | 22,830 | 46,759 | 1.3 MB |
| Admin screens wp-admin | 368 | 131,314 | 47,937 | 69,123 | 248,374 | 6.9 MB |
| Runtime wp-includes: functions, classes, REST, the rest of the JS and CSS | 773 | 352,263 | 70,103 | 92,791 | 515,157 | 15.7 MB |
| Root files index.php, wp-load.php, wp-settings.php, wp-login.php, xmlrpc.php, ... | 14 | 4,956 | 0 | 0 | 4,956 | 160 KB |
| Total | 2,130 | 616,725 | 999,399 | 187,675 | 1,803,799 | 73.5 MB |
Minn 0.1.0
The engine deploy unit (public/minn) and the Minn Admin plugin as it ships. Source: austinginder/minn-engine public/minn and the minn-admin plugin.
| Part | Files | PHP | JS | CSS | Lines | Size |
|---|---|---|---|---|---|---|
| Bundled libraries jQuery and jQuery Migrate (assets/vendor), for plugins that expect them | 5 | 0 | 26 | 0 | 26 | 270 KB |
| The engine src/Minn: request handling, content, REST, auth, blocks, theme, media, the runtime | 804 | 115,569 | 0 | 0 | 115,569 | 4.8 MB |
| The WordPress facade wp-api: the functions and classes plugin code calls, mapped onto the engine | 288 | 87,424 | 0 | 0 | 87,424 | 3.2 MB |
| Front-end runtime assets: the interactivity runtime, block view scripts, the block stylesheet | 29 | 0 | 2,336 | 798 | 3,134 | 134 KB |
| Boot, CLI, layout bootstrap.php, cli.php, bin/, layout/ | 12 | 192 | 0 | 0 | 192 | 7 KB |
| Minn Admin: adapters and REST includes: the WordPress adapters and the minn-admin/v1 routes | 175 | 121,799 | 0 | 0 | 121,799 | 4.8 MB |
| Minn Admin: the app assets: the admin SPA, its stylesheet | 4 | 0 | 61,058 | 6,618 | 67,676 | 3.2 MB |
| Minn Admin: plugin file and docs minn-admin.php, docs | 2 | 449 | 0 | 0 | 449 | 24 KB |
| Total | 1,319 | 325,433 | 63,420 | 7,416 | 396,269 | 16.5 MB |
How it was counted
- PHP, JavaScript and CSS files.
- Lines are newline counts, blank lines and comments included.
- A minified file is skipped when the unminified copy sits beside it, and counted when it is the only copy. A minified-only library counts few lines and honest bytes, which is why both appear.
- Bundled third-party libraries are measured and shown on their own row.
- Left out of WordPress: wp-content (the bundled themes and plugins are not the runtime).
- Left out of Minn: the engine's data files and Minn Admin's tests, translation sources and release tooling (what its release zip leaves out).
- Refreshed with
php tests/tools/code-size.php, which downloads the WordPress release from wordpress.org and measures the Minn trees in place, at the engine commit it names. The numbers on this page are the report as JSON; the coverage figures are compat.json.