Version 0.61.0
2026-08-19 10:25:58 UTC
Changed
2Files are now encrypted with extra bytes added, so their stored size no longer gives their real size away.
Walrus is a public network, and the length of a file was readable from its stored object even though the name and the contents were not — an exact byte count is enough to check whether an account holds a copy of a particular file, to guess what kind of thing it is, and to watch one document grow edit by edit. Extra bytes are now added to each file before it is encrypted, so its stored size is one of about 32 values per doubling instead of the exact number, and downloads take those bytes back off. This costs storage: about 1% on average, up to 6% for one file, and a file close to the per-file credit ceiling can be pushed over it. It hides the size, it does not remove it — the number of pieces a large file is stored in still says roughly how big it is, and files uploaded before today keep the size they were stored at.
Sharing a file now encrypts its real size alongside its name, so the person receiving it can write the file back exactly.
A share used to carry only the encrypted name, so the recipient had no way to learn how long the file really is — the server's copy of that number is what the file occupies once encrypted, not what it is, and with the added bytes in place the two are further apart still. The sender now encrypts a small document holding the name and the file's real length. The server cannot read it: it opens only with the file key the share already carries. Shares made before this keep working, because the recipient reads the name as before and takes each stored piece at face value, which is correct for files uploaded before this change.
Fixed
1Fixed a failure where a file shared with you could not be downloaded if it was stored in more than one piece.
The received-files screen compared what it had decrypted against a size the server reports, and on 2026-08-18 that number changed meaning: it became what the file occupies once encrypted, which is larger by 88 bytes per stored piece. A file stored in one piece took a different code path and was unaffected, which is why this went unnoticed. The screen no longer uses the server's number at all — it uses what the sender encrypted, and falls back to what the stored pieces themselves declare.