TapCub 正式上线:统计、分析、客服一个平台免费用

免费工具 HTML 校验:找出真正会把页面弄乱的错误

粘贴整页源码或一段片段,按行列出最常把布局、无障碍和 SEO 搞坏的问题:未闭合和交叉嵌套的标签、多余的结束标签、重复 id、缺 lang / title / alt。每条都说明浏览器面对这段错误标记实际会怎么做。这是快速初查,不能代替 W3C 的 Nu Html Checker。

  • 常见错误,按行列出
  • 整页和片段都行
  • 本地校验
校验

校验 HTML

粘贴整页源码,或者只粘你改动的那一段。片段会跳过文档级检查(doctype、lang、title、字符编码)。改一个字结果就更新。

最多 3 MB。<script> 和 <style> 里的内容不检查。

错误

6

标记损坏或不合规。

警告

2

浏览器能显示,但通常是写错了。

元素数

56

行数

58

文档检查

doctype、页面语言、标题、字符编码、viewport。

  • 错误第 2 行<html> 没有 lang 属性。WCAG 3.1.1(A 级)要求标明页面语言,读屏软件才能用正确的语言朗读。中文页面写 lang="zh-CN"。
  • 通过标题:「网店打开太慢?三步提速指南 | 示例小铺」。
  • 通过字符编码:UTF-8。

标记检查

按行号排列。先改前几条,一个未闭合标签常常会引出后面好几条。

  • 错误第 16 行<img> logo.svg 没有 alt 属性。装饰图写 alt="",否则写出图片内容。
  • 错误第 32 行多余的 </p>:第 32 行的 <div> 出现时,浏览器已经自动关掉了 <p>(<p> 里不能放 <div>)。这个 </p> 会变成一个多出来的空段落。
  • 错误第 39 行</b> 关闭 <b> 时,里面的 <i>(第 39 行)还没关。标签要按相反顺序关闭:<b><i>…</i></b>。
  • 警告第 40 行<iframe> https://player.bilibili.com/player.html?bvid=BV1x… 没有 title。WCAG 技术 H64 用 title 告诉读屏用户这个框里是什么。
  • 错误第 45 行</section> 关闭 <section> 时,里面的 <div>(第 43 行)还没关。标签要按相反顺序关闭:<b><i>…</i></b>。
  • 错误第 47 行id「scripts」重复了(第一次在第 36 行)。页面里的 id 必须唯一,label for、# 锚点和脚本都只会找到第一个。
  • 警告第 51 行<center> 在 HTML 里已经废弃。样式交给 CSS(<center> 可以用 text-align 或 margin auto)。
全部在你的浏览器里计算。这里输入的任何内容都不会上传,TapCub 也不会保存。

版本 v1.0更新于 更新记录

结果怎么看

哪些错误真的要紧

浏览器从不拒绝显示有错的 HTML,而是按 HTML 标准里的规则把它修好。问题在于修出来的结果是不是你想要的。下面这几类,通常不是。

未闭合、交叉嵌套

少一个 </div>,页脚可能被拉进侧栏;<b><i></b></i> 会让加粗、斜体一直延续下去。先改列表里的第一条,后面几条常常是它引起的。

多余的结束标签

最典型的是段落里放了 <div>:浏览器已经提前关掉了 <p>,后面的 </p> 就变成一个多出来的空段落,页面上多一块空白。富文本编辑器里很常见。

重复 id

<label for>、# 锚点链接、ARIA 引用和 getElementById 都只会找到第一个。把同一个组件复制两遍后最容易出现。

缺 lang、title、alt

它们不是解析错误,但 lang、alt 是 WCAG 的要求,title 是 HTML 标准的要求,搜索引擎和翻译工具也都会用到。

本工具覆盖的是常见问题,不是标准里的全部规则。完整的规范校验请用 W3C 的 Nu Html Checker,本页不能代替它。HTML 是否完全合规本身不是排名因素;错误标记真正要紧的时候,是它把内容藏起来、让链接失效或影响无障碍的时候。

怎么用

四步查完一段标记

适合检查网站模板、营销落地页,以及要贴进可视化建站工具或公众号编辑器的代码片段。

  1. 1

    粘贴 HTML

    整页源码(查看源代码 → 全选复制),或者只粘你改过的那一块。

  2. 2

    从上往下改

    问题按行号排列。先改第一个未闭合或交叉嵌套的标签,它往往能解释后面的好几条。

  3. 3

    看文档检查

    doctype、lang、title、字符编码只对整页检查。

  4. 4

    再粘一次,然后用 W3C 校验

    这里的列表清空之后,再用 Nu Html Checker 查其余的规则。

判定规则

查什么,依据哪条规则

工具先用一个小型解析器读你的 HTML,常见情形按 WHATWG HTML 的解析规则处理:空元素、可省略的结束标签、script 和 style 里的原始文本;然后做下面这些检查。

  • 可以省略结束标签的元素(p、li、dt、dd、option、tr、td、th、thead、tbody、html、head、body)缺结束标签时不报,标准允许它们自动关闭
  • 自闭合写法 <div/> 用在非空 HTML 元素上是解析错误,放在 <svg>、<math> 里则可以
  • id 必须唯一、至少一个字符、不含空白(WHATWG §3.2.6)
  • 不查:每个元素完整的内容模型、属性值语法、ARIA 规则、表格结构算法和 CSS——这些交给 Nu Html Checker
举例:浏览器会怎么处理
写法结论浏览器实际怎么做
<p>文字<div>方框</div></p>多余的 </p>在 <div> 前关掉 <p>,再补一个空 <p>
<b><i>提示</b></i>交叉嵌套提前关掉 <i>,再为后面的文字重新打开它
<div class="card">…(没有 </div>)未闭合后面的内容全在这个卡片里
<div/>非空元素自闭合当成没有结束的 <div>
<br></br>空元素写了结束标签把 </br> 当成又一个 <br>
两个 id="price"重复 idgetElementById 只找到第一个
示例

默认示例查出来什么

默认内容是一篇 58 行的网店运营笔记源码。在浏览器里看着一切正常,却有 6 个错误、2 个警告。

示例里的问题
行号问题改法
2错误:<html> 没有 lang<html lang="zh-CN">
16错误:logo 的 <img> 没有 altalt="示例小铺首页"
32错误:<p> 里放了 <div>,后面的 </p> 多余在 <div> 前结束 <p>,或者都用 <div>
39错误:<b><i>…</b></i> 交叉嵌套<b><i>…</i></b>
40警告:<iframe> 没有 titletitle="视频:页面提速技巧"
45错误:第 43 行的 <div class="comment"> 在 </section> 前没关补上 </div>
47错误:id「scripts」在第 36 行已经用过改掉其中一个
51警告:已废弃的 <center><p style="text-align:center">

同一段源码粘到 H 标签检测、网页链接提取、图片 alt 检查里,还能看到这个页面的其它问题:标题跳级、没有文字的图片链接、堆关键词的 alt。

常见错误

错误标记通常从哪来

手写的页面反而很少出问题,大多数错误来自复制粘贴、模板拼装和各种编辑器。

同一个组件复制两遍

重复 id、重复属性多半来自把同一块代码、表单或客服 / 统计组件粘贴了两次。每个实例的 id 要不同。

编辑器的 HTML 混进模板

富文本编辑器会用 <p> 包住内容,在里面插 <div> 或表格,就会产生多余的 </p> 和空段落。从公众号编辑器、Word 复制过来的内容尤其常见。

在 HTML 里沿用 XHTML 习惯

<div/>、<span/> 在 HTML 里不会自闭合,元素一直开着,把后面的内容都吞进去。

把「能显示」当成「没问题」

浏览器几乎什么都能修好,但修复的结果可能挪动了内容、弄坏了锚点,或者让读屏软件读不到文字。

常见问题

HTML 校验常见问题

还有其他问题?

直接和 TapCub 团队聊聊——工作日通常几小时内回复。

怎么在线校验 HTML?

把整页源码或一段片段粘到上面的输入框,错误和警告会带着行号从上往下列出。要做完整的规范校验,之后再用 W3C Nu Html Checker 查一遍。

怎么找出 HTML 里没闭合的标签?

粘到这里:每个一直没关闭的元素都会列出它在第几行打开,每个关错了元素的结束标签会在出现的那一行报出来。<p>、<li> 这类结束标签可以省略的元素不会报。

和 W3C 校验器一样吗?

不一样。本工具快速检查最常见、危害最大的问题,并解释原因;W3C 的 Nu Html Checker(validator.w3.org/nu)按完整规范检查,是按规范逐条检查的参照,最后用它把关。

HTML 不合规会影响 SEO 吗?

HTML 完全合规本身不是排名因素,几乎没有网站能做到零错误。要紧的是错误改变了搜索引擎和访客看到的东西:内容被未闭合标签吞掉、链接不是真正的链接、缺了 title。

为什么 <div/> 算错误?

在 HTML 里,结尾的斜杠不会关闭非空元素,会被直接忽略。<div/> 打开了一个一直不关的 div,后面的内容都跑进去了。<br/>、<img/> 这类空元素和 SVG 里可以这样写。

我明明写了 </p>,为什么说它多余?

<p> 里不能放 <div>、<ul>、<table> 这类块级元素。遇到它们时浏览器会先结束段落,后面的 </p> 没有东西可关,就变成了一个空段落。富文本编辑器里插入表格、分栏时最常见。

能检查 JavaScript 和 CSS 吗?

不能,<script> 和 <style> 里的内容会跳过。CSS、JavaScript 的体积可以用代码压缩工具处理;语法检查请用 ESLint、Stylelint 这类专门的工具。

粘贴的 HTML 会上传吗?

不会。HTML 在你的浏览器里解析,不会发给 TapCub,也不会发给 W3C。

更新记录

更新记录

这个工具的新功能、修复和数据更新,最新的在前。

  1. · v1.0

    首次上线首次上线。

缺功能或发现错误?告诉我们,常被提到的会排进下次更新。 全部工具更新

下一步

看看访客实际遇到了什么

网站装上 TapCub,就能收集真实浏览器里的 JavaScript 报错、404 和愤怒点击。

看清数据,找到增长。

每一次点击,都有数据依据。装好一行代码,1 分钟看到第一批数据。

无需信用卡 · 统计与客服都有免费版 · 统计无 Cookie