代码格式化

文本

在线代码格式化:HTML/JS/CSS/SQL/JSON

写代码时真正需要格式化的场景,往往不是自己刚敲完的文件——编辑器早就自动排好了。真正麻烦的是别人给的东西:从浏览器「查看源代码」里复制出来的一整行 HTML、日志里被压成一行的 SQL、抓包工具吐出来的响应体、或者线上环境那份被压缩过的样式表。这些内容在编辑器里打开也是一团糟,需要先排版才能看懂。

这个页面把五类常见格式集中在一处:HTML、JS、CSS 走 js-beautify,SQL 走 sql-formatter,JSON 走浏览器原生解析。左边粘进去,点对应语言的按钮,右边就是缩进好的结果。输出区本身是可编辑的文本框,改完点「复制结果」即可带走;两栏顶部会显示行数和字符数,方便快速判断内容规模。

和大多数在线格式化网站不同的是,这里没有上传步骤。页面首次加载后,所有排版逻辑都在你的浏览器里跑,断网也能继续用,也不存在「粘贴的内网接口地址被记录下来」这类顾虑。页面上没有广告跳转,也不会给结果加任何水印或注释。

使用时有两点值得留意。第一,HTML、JS、CSS 的格式化是基于词法的排版而非完整语法解析,代码有语法错误时它不会报错,但可能把结构排歪,看到诡异结果先检查括号和标签是否闭合。第二,缩进固定为 4 空格,SQL 使用 sql-formatter 的通用方言,MySQL 或 PostgreSQL 的少数专有语法可能排得不够漂亮,此时以能读懂为准,别指望它能替代数据库客户端的格式化器。

输入内容会自动缓存在浏览器本地,方便你切走再回来继续。如果处理的是敏感片段,或者在公用电脑上操作,处理完记得点一下「清空」,缓存会随之删除。

功能一览

  • HTML 格式化:按标签层级重新缩进换行,适合处理压缩过的页面源码、邮件模板或抓包得到的响应体
  • JS 格式化:基于 js-beautify 恢复换行、缩进与语句间距,只调整空白,不改写语句
  • CSS 格式化:把压缩成一行的样式表拆开,每条声明独立成行,选择器与规则块层次清晰
  • SQL 格式化:关键字换行对齐,长查询里的 SELECT、JOIN、WHERE、GROUP BY 一眼能分清层级
  • JSON 格式化:先解析校验再按 4 空格缩进输出,语法不合法时直接把错误信息写到输出区
  • 分栏工作台:左侧输入右侧输出,两栏各自显示行数与字符数,结果可一键复制或回填成输入
  • 本地草稿:输入与结果自动存在浏览器里,刷新或下次打开仍在,点「清空」即彻底删除

常见问题

代码会被上传到服务器吗?
不会。HTML、JS、CSS 的排版由 js-beautify 完成,SQL 由 sql-formatter 完成,JSON 走浏览器内置的 JSON 解析,全部是随页面下载的 JavaScript 在你本机执行。页面加载完成后即使断网也能继续格式化,输入内容只会以草稿形式留在你自己浏览器的 localStorage 中,不会发往任何接口。
缩进能改成 2 空格或 Tab 吗?
本页固定输出 4 空格缩进,暂不提供缩进选项。如果你需要 2 空格、Tab 缩进或按键名排序的 JSON,请用站内的「JSON 工具」页,那里可以在缩进 2、缩进 4、Tab 三者间切换。HTML、JS、CSS、SQL 目前只能得到 4 空格结果,拿到后在自己的编辑器里统一替换缩进即可。
点了按钮提示「执行失败」,是什么原因?
具体报错会直接显示在右侧输出区。JSON 失败通常是语法不合法,最常见的是末尾多了逗号、字符串用了单引号、键名没加双引号;SQL 失败一般是语句里混进了非 SQL 内容。要注意 HTML、JS、CSS 走的是纯文本排版而不是语法解析,即使代码本身有错也不会报错,但排版结果可能不符合预期。
这里的 JSON 格式化和「JSON 工具」页有什么区别?
这里的 json 按钮只做一件事:解析后按 4 空格缩进重新输出,适合顺手看一眼结构。「JSON 工具」页更完整,包含最小化压缩、校验并定位出错行列、JSON 与转义字符串双向转换、中文与 Unicode 互转,还能在缩进 2、缩进 4、Tab 之间切换并按键名排序。需要多步加工时用后者更顺手。
能处理多大的文件?
没有硬性上限,取决于浏览器可用内存。几百 KB 的 HTML 或 JS 通常一秒内完成;超过几 MB 时点击后页面可能短暂无响应,因为排版是在主线程同步执行的。打包压缩后的 bundle 体积往往很大且已丢失原始结构,不建议整份粘贴进来,按模块拆分后再格式化更实际。
格式化会改变代码的行为吗?
基本不会。js-beautify 只调整空白、换行与缩进,不重命名变量、不做压缩或转译;sql-formatter 只调整关键字换行与排版,不改动查询语义。JSON 会经过一次解析再序列化,键的顺序保持原样,但重复键只保留最后一个,数字会按 JavaScript 的表示方式输出,极大整数可能损失精度。

文本分组的其它工具

  • JSONJSON 格式化、最小化、校验、字符串转义与 Unicode 处理
  • 文本处理大小写转换、命名风格、排序排重、信息提取
  • 文本对比左右对照逐行 diff,并高亮修改行内的字符级差异
  • MarkdownMarkdown 即时预览与 HTML 复制
  • 正则测试在线正则匹配、分组查看与替换测试