Skip to content

Comments

WebAssembly edits#4401

Merged
tunetheweb merged 33 commits intomainfrom
webassembly-pass
Feb 10, 2026
Merged

WebAssembly edits#4401
tunetheweb merged 33 commits intomainfrom
webassembly-pass

Conversation

@nrllh
Copy link
Collaborator

@nrllh nrllh commented Jan 29, 2026

I have edited the chapter. Could you folks please take a look at it and take further adjustments?

@nimeshgit : we still need the tool "almanac-wasm". Can you please provide it to us?

nrllh added 3 commits January 28, 2026 23:16
Enhanced clarity and corrected minor inaccuracies in the text. It is not finalized yet.
Updated date filters and added new metrics for WebAssembly requests.
@nrllh nrllh requested review from nimeshgit and tunetheweb January 29, 2026 20:17
@github-actions
Copy link
Contributor

Super-linter summary

Language Validation result
EDITORCONFIG Fail ❌
MARKDOWN Pass ✅

Super-linter detected linting errors

For more information, see the GitHub Actions workflow run

Powered by Super-linter

EDITORCONFIG
�[33;1msql/2025/webassembly/counts.sql:�[33;0m
�[31;1m	10: Trailing whitespace�[33;0m
�[31;1m	41: Trailing whitespace�[33;0m
�[33;1msrc/content/en/2025/webassembly.md:�[33;0m
�[31;1m	39: Trailing whitespace�[33;0m
�[31;1m	53: Trailing whitespace�[33;0m
�[31;1m	97: Trailing whitespace�[33;0m
�[31;1m	97: Wrong amount of left-padding spaces(want multiple of 2)�[33;0m
�[31;1m	119: Trailing whitespace�[33;0m
�[31;1m	189: Trailing whitespace�[33;0m
�[31;1m
8 errors found�[33;0m

@github-actions
Copy link
Contributor

Super-linter summary

Language Validation result
EDITORCONFIG Pass ✅
MARKDOWN Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

@github-actions
Copy link
Contributor

Super-linter summary

Language Validation result
EDITORCONFIG Pass ✅
MARKDOWN Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

@github-actions
Copy link
Contributor

Super-linter summary

Language Validation result
EDITORCONFIG Pass ✅
MARKDOWN Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

@github-actions
Copy link
Contributor

Super-linter summary

Language Validation result
EDITORCONFIG Pass ✅
MARKDOWN Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

}}

These WebAssembly modules differ considerably in size, with the smallest being just a few kilobytes, and the largest one is 228.102 MB in desktop's client and 166.415 MB for mobile client.
When examining uncompressed sizes, we observe that while the median module remains lightweight at approximately 30 KB on both platforms, the largest binaries at the 90th percentile are significantly heavier on desktop (897 KB) than on mobile (756 KB).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is Wasm not typically binary? What compression does it use? Gzip? Brotli? I thought those only really worked on text resources (maybe explaining the relatively low different between these two charts?) and they shouldn't be further compressed for sending on the wire?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Barry, The Wasm is fundamentally a binary instruction format, not typically a text format. the format sent over the wire is the compact binary format (wasm).

It has built in compression.

It is observed that applying Gzip or Brotli to an already highly optimized binary file yields minimal additional size savings (often less than 10%, sometimes even negligible), Because of the minimal benefit of compression, Barry the Wasm files are typically served with an identity encoding, meaning no further general purpose compression is applied

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it worth commenting on this?

At the moment we show raw (which I think should be renamed "compress" as per other conversation to make it more obvious) and uncompressed, but never really explain that it's not really expected for them to be compressed. And that that explains why the charts aren't that different. By presenting both, it's almost like the opposite and we think it is something to be looked at, almost like we expect there to be interesting insights here?

So I went back to the 2021 chapter that we seem to be basing this on and it has this to say:

"...one of the benefits of Wasm bytecode is that it’s highly compressible, and size over the wire is what matters for download speed and billing reasons. Let’s check sizes of raw response bodies as sent by servers instead:"

That's a good narrative for why they included both.

But the 2025 chapter doesn't seem to have a similar narrative and just says "here's the raw bytes, here's the compressed bytes" and I'm not sure what the readers's supposed to take away from that.

Additionally it contradicts what you say about compression (and what I believed too).

Again, as a reader I'm confused as to what to take away from this section?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Nurullah and Barry,
It seems to resolve this concern and to make it easy to understand,
It would be good to have the compression method chart along with its details.

What do you say, guys ?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure what you mean by that? I'm still very confused here..

Copy link
Member

@nimeshgit nimeshgit Feb 8, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lets talk on slack tomorrow afternoon about this.

nrllh and others added 2 commits January 29, 2026 15:31
Co-authored-by: Barry Pollard <barrypollard@google.com>
Removed redundant sentence from introduction
@github-actions
Copy link
Contributor

Super-linter summary

Language Validation result
EDITORCONFIG Pass ✅
MARKDOWN Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

@github-actions
Copy link
Contributor

Super-linter summary

Language Validation result
EDITORCONFIG Pass ✅
MARKDOWN Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

@github-actions
Copy link
Contributor

Super-linter summary

Language Validation result
EDITORCONFIG Pass ✅
MARKDOWN Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

Updated the data collection section to reflect the identification of WebAssembly modules on sites analyzed.
@github-actions
Copy link
Contributor

Super-linter summary

Language Validation result
EDITORCONFIG Pass ✅
MARKDOWN Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

@nimeshgit
Copy link
Member

nimeshgit commented Jan 30, 2026

I have edited the chapter. Could you folks please take a look at it and take further adjustments?

@nimeshgit : we still need the tool "almanac-wasm". Can you please provide it to us?

please, have the link almanac-wasm-stats
We are updating stack still that includes documentation and tests.

Later on We would be raising pull request and will merge the stack under HTTPArchive and enable in the pipeline with the help of Patrick and Barry.

@github-actions
Copy link
Contributor

Super-linter summary

Language Validation result
EDITORCONFIG Pass ✅
MARKDOWN Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

@tunetheweb tunetheweb added the editing Content excellence label Feb 8, 2026
Copy link
Member

@tunetheweb tunetheweb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm still very confused and not sure this PR make this text any less confusing. Can we address the comments I've raised @nrllh and @nimeshgit ?


WebAssembly module sizes vary drastically based on their specific use cases. We observed that the bottom 50% of modules are quite small, ranging between 2 KB and 14 KB. These are typically "micro-utilities" like Base64 encoders or checksum calculators, often written in AssemblyScript or Rust to handle performance-critical tasks where JavaScript lacks precision.

Conversely, at the 90th percentile, sizes increase significantly to 381 KB on desktop and 316 KB on mobile. These larger binaries usually represent full desktop-grade applications ported to the web—such as Adobe Photoshop or Google Earth—compiled from heavier languages like C++ or C# to handle complex 3D rendering and logic.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add something like this to the text?

}}

These WebAssembly modules differ considerably in size, with the smallest being just a few kilobytes, and the largest one is 228.102 MB in desktop's client and 166.415 MB for mobile client.
When examining uncompressed sizes, we observe that while the median module remains lightweight at approximately 30 KB on both platforms, the largest binaries at the 90th percentile are significantly heavier on desktop (897 KB) than on mobile (756 KB).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure what you mean by that? I'm still very confused here..

nrllh and others added 5 commits February 9, 2026 15:05
Removed mention of Microsoft's dominance in WebAssembly ecosystem.
As per the pull request (#4401), enhanced compression methods, data collection and analysis methods, revised statistics on WebAssembly module sizes and usage. Improved clarity on language usage and library dominance in WebAssembly + other minor edits as suggested.
revise language usage that counts duplicates in percentage
we have updated compression methods for both clients desktop and mobile + updated language usage chart with duplicate records counts percentage stats.
@github-actions
Copy link
Contributor

Images automagically compressed by Calibre's image-actions

Compression reduced images by 80.2%, saving 777.4 KB.

Filename Before After Improvement Visual comparison
src/static/images/2025/webassembly/language-usage.png 397.4 KB 70.0 KB 82.4% View diff
src/static/images/2025/webassembly/compression-methods-desktop-client.png 286.4 KB 52.9 KB 81.5% View diff
src/static/images/2025/webassembly/compression-methods-mobile-client.png 285.1 KB 68.6 KB 75.9% View diff

@nimeshgit
Copy link
Member

Barry, we have merged @nrllh updates plus your suggetions and compression methods for desktop and mobile clients along with couple of edits.

@nimeshgit nimeshgit requested a review from tunetheweb February 10, 2026 10:49
@github-actions
Copy link
Contributor

Images automagically compressed by Calibre's image-actions

Compression reduced images by 19%, saving 26.4 KB.

Filename Before After Improvement Visual comparison
src/static/images/2025/webassembly/compression-methods-mobile-client.png 68.6 KB 55.2 KB 19.5% View diff
src/static/images/2025/webassembly/language-usage.png 70.0 KB 57.0 KB 18.6% View diff

1 image did not require optimisation.

@github-actions
Copy link
Contributor

Images automagically compressed by Calibre's image-actions

Compression reduced images by 43%, saving 23.8 KB.

Filename Before After Improvement Visual comparison
src/static/images/2025/webassembly/compression-methods-mobile-client.png 55.2 KB 31.5 KB 43.0% View diff

2 images did not require optimisation.

@github-actions
Copy link
Contributor

Images automagically compressed by Calibre's image-actions

Compression reduced images by 25.9%, saving 16.5 KB.

Filename Before After Improvement Visual comparison
src/static/images/2025/webassembly/language-usage.png 31.3 KB 22.9 KB 26.8% View diff
src/static/images/2025/webassembly/compression-methods-desktop-client.png 16.3 KB 12.2 KB 25.1% View diff
src/static/images/2025/webassembly/compression-methods-mobile-client.png 16.1 KB 12.1 KB 25.1% View diff

Copy link
Member

@tunetheweb tunetheweb left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK let's merge this.

Thanks for improving the text!

@github-actions
Copy link
Contributor

Images automagically compressed by Calibre's image-actions

Compression reduced images by 26%, saving 5.8 KB.

Filename Before After Improvement Visual comparison
src/static/images/2025/webassembly/webassembly-by-rank.png 22.3 KB 16.5 KB 26.0% View diff

3 images did not require optimisation.

@tunetheweb tunetheweb merged commit 59ffa73 into main Feb 10, 2026
10 checks passed
@tunetheweb tunetheweb deleted the webassembly-pass branch February 10, 2026 15:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

editing Content excellence

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants