HTML 格式化

HTML 在线格式化与压缩

粘贴 HTML 代码即可缩进美化或压缩。格式化只改动浏览器不显示的空白,所以页面效果前后一致;未闭合和多余的标签会作为警告列出来。HTML 不会离开你的浏览器。

输出
缩进
  • 格式化后的 HTML

    <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <title>营业时间</title> <style>p{margin:0}</style> </head> <body> <nav class="top"><a href="#home">首页</a> | <a href="#menu">菜单</a></nav> <main> <h1>营业<em>时间</em></h1> <p>除周一外<b>每天</b>营业。 <ul> <li>周二至周五:9:00–18:00 <li>周六、周日:10:00–16:00 </ul> <pre> 订座电话 010-62345678 欢迎来电</pre> <!-- 这里放地图 --> </main> <script>document.title += " ✓";</script> </body> </html>

结果没有发现问题
元素数19
嵌套层数5
警告数0
处理前大小(字节)498
处理后大小(字节)607
大小变化21.89%
行数23

只改动了浏览器不会显示的空白;标签、属性和文本都按原样保留。

全部在你的设备上计算 · 公式已用已知数值验证 · 了解我们如何验证

HTML 格式化工具怎么用

  1. 把 HTML 粘贴到输入框:完整的网页、模板、邮件,或从浏览器开发者工具里复制的片段。粘贴后立即格式化。
  2. 选格式化用 2 个空格、4 个空格或制表符缩进;选压缩去掉浏览器不显示的空白。勾选缩进 <script> 和 <style> 里的代码,可以把这些代码块整体移到所在标签的缩进位置。
  3. 点击结果旁的复制,或点下载保存为 .html 文件。
  4. 如果有警告,看一下:未闭合和多余的标签都会列出行号和列号。

为什么格式化 HTML 可能改变页面,本工具怎么避免

浏览器排版时有两类盒子。块级元素——div、p、标题、列表和列表项、表格及其行和单元格、section、header 等——总是另起一行,它们旁边的空白永远不会显示。行内内容——文字、a、b、em、span、img、button、input——像句子里的词一样连续排列,在这里任何连续的空格、制表符和换行都会显示成一个空格。

这一点对中文网页影响更大:英文单词之间本来就有空格,多一个不太显眼;中文字之间没有空格,一旦多出一个就很明显。<b>北京</b><i>烤鸭</i> 显示为“北京烤鸭”,如果格式化工具把两个标签拆到两行,换行就会变成空格,页面上出现“北京 烤鸭”。(CSS 规范允许浏览器去掉中文字符之间由换行产生的空格,但并不是所有浏览器都这样做。)很多美化工具正是这样把页面改坏的。

本工具遵循与浏览器相同的规则:只在块级元素旁边加换行;两段行内内容之间,从不增加或删除空白;原来就有带换行的空白时,才可能调整那一行的缩进。注释和不可见的元素(script、style、meta、link、template)各占一行,除非两边都紧贴着文字,例如 甲<!-- -->乙 必须保持“甲乙”。

会改动不会改动
块级元素旁边的换行和缩进标签名、属性、属性值、引号和顺序
文本里已有换行的缩进文字本身和字与字之间的空白
压缩:去掉块级元素旁的空白,其余连续空白缩成一个空格<pre>、<textarea>、<title> 的内容;未勾选选项时的 <script> 和 <style>
Windows 换行(CR LF)写成 LF,与浏览器的读取方式一致注释、&nbsp; 等实体,以及你省略的结束标签

HTML 允许省略部分结束标签——</li>、</p>、</td>、</tr>、</option>——格式化工具像浏览器一样知道这些元素在哪里结束,但不会替你补上标签。不换行空格(&nbsp;)和中文全角空格“ ”在 HTML 里都不算空白,永远不会被改动。

计算示例

输入框里的示例是一个 498 字节、写在一行里的网页。按 2 个空格格式化后:

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="utf-8">
    <title>营业时间</title>
    <style>p{margin:0}</style>
  </head>
  <body>
    <nav class="top"><a href="#home">首页</a> | <a href="#menu">菜单</a></nav>
    <main>
      <h1>营业<em>时间</em></h1>
      <p>除周一外<b>每天</b>营业。
      <ul>
        <li>周二至周五:9:00–18:00
        <li>周六、周日:10:00–16:00
      </ul>
      <pre>  订座电话  010-62345678
  欢迎来电</pre>
      <!-- 这里放地图 -->
    </main>
    <script>document.title += " ✓";</script>
  </body>
</html>

导航链接和中间的“ | ”留在同一行,段落里的加粗文字也留在行内,“除周一外每天营业。”不会被拆开;列表项保持省略 </li> 的写法——按照 HTML 标准,<ul> 还会结束前面的段落。<pre> 块保留原来的空格。压缩后是 498 字节,因为原文本来就很紧凑。

警告

浏览器从不拒绝 HTML,它会自动修复,而修复的结果往往不是你想要的。格式化工具会列出它不得不修复的地方:

<div class="box">
  <p>简介
  <div>提示</div>
  </p>
  <span>未闭合
</div>
行列警告
221Stray </p>: a block such as <div> or <ul> inside a <p> closes the paragraph, so browsers add an empty <p></p> here
33<span> is not closed before </div>

限制与小技巧

HTML 不会离开你的设备

一切都在你的浏览器里完成。粘贴的内容不会被上传或记录,也不会被保存:刷新页面就会清空。

常见问题

格式化会改变页面的显示效果吗?

在元素使用默认 display 的情况下不会:工具只在浏览器不显示空白的地方增删空白,也从不改动 <pre>、<textarea>、脚本和样式。用 CSS 改变了元素 display 或 white-space 的情况是例外,上文有说明。

为什么没有把每个标签都放到单独一行?

<a>、<b>、<span> 这样的行内标签是文字的一部分。在它们之间原本没有空白的地方加换行,页面上就会多出一个可见的空格,在中文里尤其明显,所以除非原来就有空白,它们会保持在一起。

能修复写错的 HTML 吗?

它会报告问题——未闭合和多余的标签、重复的属性、非空元素上的斜杠——但标签完全按你写的保留,不会在背后增删任何东西。请在源码里按警告修改后重新格式化。

压缩后的 HTML 还是同一个页面吗?

是的。压缩只去掉块级元素旁的空白,并把其他连续空白缩成一个空格,浏览器的显示完全一样。注释和脚本、样式里的代码会保留;服务器开启 gzip 或 Brotli 压缩后,节省的流量比压缩 HTML 更多。

我的 HTML 会被上传吗?

不会。页面在你的浏览器里完成格式化,所以可以放心处理内部模板和需要登录才能看到的页面,加载后断网也能使用。

把这个计算器嵌入你的网站

可免费用于你的网站或博客。把下面的代码粘贴到想显示计算器的位置即可。

最后更新:2026年10月16日

菜单

分类

理财与贷款计算器15款计算器商业与购物计算器5款计算器健康与减重计算器6款计算器数学与学习计算器7款计算器日期与时间计算器5款计算器节日与重要日子倒计时8款计算器生活实用工具7款计算器程序员在线开发工具9款计算器

CalcWorthy

关于我们联系我们隐私政策使用条款

语言

语言
简体中文Simplified ChineseEnglishEnglishالعربيةArabicবাংলাBanglaDeutschGermanEspañolSpanishفارسیPersianFrançaisFrenchעבריתHebrewहिन्दीHindiBahasa IndonesiaIndonesianItalianoItalian日本語Japanese한국어KoreanBahasa MelayuMalayNederlandsDutchPolskiPolishPortuguêsPortugueseРусскийRussianไทยThaiTürkçeTurkishУкраїнськаUkrainianاردوUrduTiếng ViệtVietnamese