一张能看出五大洲轮廓的ASCII世界地图,只靠445字节压缩数据加几行JavaScript,就能在浏览器里原样还原。开发者Iwo Kadziela借助AI编程工具Codex做出了这个东西,Simon Willison把它转发到自己的链接博客,标题干脆写着"500字节做世界地图"。数字确实唬人,但真正值得琢磨的不是压缩率有多狠,而是这段代码为什么放在三年前根本写不出来。

445字节是怎么变成一张地图的

代码本身短得夸张:一段fetch('data:;base64,...'),接一个DecompressionStream('deflate-raw'),再把解压出来的文本塞进innerHTML。整个过程没有一行手写的解压逻辑——浏览器自己把活干了

传统做法是把地图字符压成deflate二进制,再用JS写的解压库(比如pako.js)在页面里还原。这次省掉的正是这个库,靠的是fetch()可以直接读data: URI、DecompressionStream可以直接解deflate-raw这两件事凑在一起。

445字节到一张地图 压缩数据 445字节deflate base64编码 嵌入data URI fetch+解压 DecompressionStream 渲染文本 innerHTML显示

为什么这招现在才行得通

DecompressionStream所在的Compression Streams API,是在2023年5月前后才在主流浏览器普及。在这之前,想在浏览器里解压数据,只能自己塞一个JS解压库进页面——而这个库本身的体积,往往就把省下来的字节吃掉了大半。

工欲善其事,必先利其器。这三年浏览器悄悄多了一件"器",把原本要靠程序员手写的解压逻辑变成了一行内置API调用。这也是为什么类似的极限压缩创意,这两年才开始密集冒头——不是程序员突然变聪明了,是平台先把工具递了过来。

省下的字节,没有账面上那么干净

  • 风险.base64编码会给原始压缩数据带来约33%的体积膨胀,data: URI方案本身就有这层隐性开销
省字节的隐性账 445B 压缩后原始数据 +33% base64编码膨胀

这个开销不是猜的,是base64编码固有的数学结果。地图本身够简单、够重复,压缩收益能覆盖这层膨胀,才有了"445字节"这个漂亮数字。换成一张更复杂、噪点更多的图案,同样的技巧未必划算——deflate-raw还比常见的gzip/deflate更新、兼容性覆盖更窄,真要用在正式项目里,得单独测一遍降级方案。


Codex在这个项目里具体做了什么,原文没细说,大概率是辅助写这套压缩管线和调试字节数,而不是想出"用浏览器原生API省字节"这个思路本身——这类判断,往往还是人先想清楚要省什么,AI再帮着把代码敲对。原文提到的那条Hacker News讨论串编号,检索时没能对上号,搜到的是两条完全不相关的地图类帖子。这个细节先按存疑处理,不当成坐实的旁证。

445字节的地图好看,但真正值得记的是:浏览器把解压这件事变成免费基础设施之后,类似的极限压缩创意大概率还会再冒出来——省字节从此更像是"会不会用",而不是"能不能造"。