← 返回首页

JavaScript 压缩工具

在线压缩、格式化和混淆 JavaScript 代码。纯浏览器端处理,不上传服务器。

输入代码
输入大小: 0 字符
输出结果
输出大小: 0 字符 | 压缩率: -

JavaScript压缩工具 是什么?

这是一个跑在浏览器里的 JavaScript 压缩工具,把 .js 文件里的注释、缩进、换行、多余空格全部删掉,还能把局部变量名换成 a、b、c 这种短名字,顺手做代码混淆。比如你写完一个 48KB 的 utils.js,里面注释和缩进占了 11KB,丢进来压缩后大概剩 19KB,gzip 后从 13KB 降到 5KB 左右,首屏加载能少等几十毫秒。上线前压一版、排查线上问题时把压缩代码格式化回可读状态、把不想让人一眼看懂的逻辑做轻度混淆,这三种情况用它最合适。所有解析和改写都在你自己的浏览器里跑,代码不会发到任何服务器。

使用步骤

  1. 打开工具页,把待处理的 JS 代码粘贴进左侧输入框,或者直接把 .js 文件拖进去,单文件建议不超过 2MB。
  2. 选择模式:要发布就点「压缩」,要读代码就点「格式化」,要藏逻辑就点「混淆」,三个按钮互斥切换。
  3. 压缩模式下勾选选项,比如去掉 console、去掉 debugger、保留 /*! 开头的版权注释,默认全开注释删除。
  4. 点「开始处理」,右侧会输出结果,顶部显示原始体积、压缩后体积和节省百分比,例如 48.2KB → 19.4KB,省 59.8%。
  5. 点「复制」把结果拿走,或点「下载」存成 utils.min.js;不满意就点「还原」回到原始输入重新调参。

对比:用它还是手工做?

对比维度本工具手工/替代做法
处理 48KB 文件耗时约 0.3-0.8 秒手工删注释缩进约 20-40 分钟
体积缩减典型 40%-65%手工通常只能省 10%-20%
变量名缩短支持,局部变量压到 1-2 字符手工改名易漏改、易出错
环境依赖浏览器打开即用,无需 Node需装 Node + terser/uglify-js
隐私代码不出本机,无网络请求在线网站可能上传源码到服务端

常见问题

压缩后代码还能跑吗

能,前提是源码本身没有依赖函数名、变量名的字符串反射。压缩只做词法层面的删除和重命名,不改语义。但如果你写了 eval("foo()") 或 obj["myVar"] 这种按名字取值的写法,重命名后就会找不到,此时关掉「混淆变量名」即可。建议压缩后跑一遍单元测试再上线。

能压多大文件

浏览器端解析受内存限制,实测 2MB 以内的单文件流畅,5MB 左右会卡 3-8 秒,超过 10MB 建议改用本地构建工具。压缩率方面,含大量注释和缩进的业务代码通常省 40%-65%,已经压过的第三方库再压只能省 3%-8%,意义不大。

混淆和压缩区别在哪

压缩只删空白和注释、缩短局部变量名,输出仍可读;混淆会进一步把函数名、对象属性名替换成 _0x1a2b 这类无意义标识,并可能打乱控制流。混淆后体积可能反而变大 5%-15%,且调试困难。安全等级上,混淆只是提高阅读成本,不是加密,别拿它保护密钥。

会保留版权注释吗

默认删除所有注释。如果你在源码里用 /*! ... */ 或 //! 开头写版权声明,勾选「保留感叹号注释」后这些会被原样留下,其余注释照删。这是遵循 UglifyJS 的惯例,jQuery、Lodash 等库的 license 头都这么写。

压缩后怎么调试

把压缩代码粘回工具,点「格式化」,缩进设为 2 空格,它会按语法树重新排版,变量名不会还原但结构清晰可读。配合浏览器 DevTools 的 Sources 面板加断点即可。注意格式化后的行号和压缩版对不上,定位线上报错时以 sourcemap 为准。

代码会上传到服务器吗

不会。整个解析、压缩、格式化流程由页面加载的 JS 引擎在你本机执行,没有 XHR 上传,断网也能用。你可以打开 DevTools 的 Network 面板,点「开始处理」后不会出现任何请求。关掉页面数据即消失,不留存。

适用于 ES2015+ 语法的常规脚本,含动态 import、装饰器等实验特性时可能解析失败,会给出报错行号。压缩不改变代码逻辑,但依赖字符串反射的代码需关闭变量重命名。体积数字按 UTF-8 字节统计,与 gzip 后大小不同。全部计算在浏览器本地完成,代码不上传、不存储,关闭页面即清除。

浙ICP备2026073450号