meta description 字符数上限为155–160个Unicode字符,超限易在语义断裂处被截断;需确保首屏HTML源码中真实存在、唯一且语义匹配,避免JS注入或模板复用。

meta description 字符数上限是 155–160,不是字节也不是像素
Google 和 Bing 按 Unicode 字符计数:一个汉字、一个英文字母、一个空格、一个标点,全算 1 个字符。超了大概率被截断,且常在语义断裂处(比如“React.memo 缓存失效的deps数组漏写”截成“React.memo 缓存失效的deps数组…”)。
常见误判点:
- 用编辑器“字数统计”功能——它可能把换行、全角空格、Zero Width Space 算进去,不准
- 信“150 字”这种模糊说法——实际安全值是
str.length返回的数字,粘贴到控制台一测便知 - 混淆字节与字符——UTF-8 下中文占 3 字节,但搜索引擎只看字符数;300 字节是工程侧安全冗余值,不是限制依据
为什么移动端 SERP 只显示前 120 字符,但你还得写满 155–160
因为 Google 在桌面端会尽量多展示,而移动端优先保障可读性,自动压缩摘要长度。前 60 字符必须承载核心动词+对象+关键约束,否则用户扫一眼就划走。
实操建议:
立即学习“前端免费学习笔记(深入)”;
使用 Puppeteer + Chrome 将 HTML 渲染为中文 PDF,自动处理图表等待、Tab 展开、动画、测高、白边消除、防分页,适用于看板、报表、网页和交互图表转 PDF。
- 把解决什么问题写在最前面,例如:
修复 React Router v6 中 <code>useNavigate在异步回调里报错的 3 种方法 - 避免开头用“本网站”“欢迎访问”“全面介绍”等泛化表述
- 别堆砌关键词,如
React Router Router 路由 路由跳转,会被降权识别 - 英文描述注意冠词和介词不占额外权重,但会吃掉字符额度
写了却没被展示?大概率是这三类硬伤
Google 明确不强制使用你的 meta name="description",它更倾向从正文中提取匹配搜索意图的片段。以下情况会导致你写的直接失效:
-
description内容和当前页面实际主题偏差大(比如商品页写“限时折扣”,但页面已下架) - 该标签被 JS 动态注入——
document.querySelector('head').appendChild()对 Googlebot 无效 - 所有页面共用同一段 description(CMS 模板硬编码、Next.js 全局 fallback),被判定为低质信号
- 内容含特殊符号(如 »、•、emoji)、未闭合引号或非法 HTML 字符,部分爬虫直接弃用整条
SSR/SSG 场景下怎么保证每页 description 都对且合规
静态生成或服务端渲染时,不能靠客户端逻辑拼接,必须让每个 URL 对应的 HTML 源码里,meta name="description" 是真实、唯一、长度可控的。
关键动作:
- Next.js 用
getStaticProps或getServerSideProps注入description字段,传给Head组件 - CMS 后台编辑器必须限制输入框最大长度为 160 字符,并前端实时计数 + 后端强制截断(防 XSS 和数据库溢出)
- 多语言站点每个
hreflang版本需各自提供独立的meta name="description",不能靠 JS 切换 - 检查源码:打开页面 → 查看网页源代码 → 搜索
<meta name="description",确认它真实存在且内容匹配
真正容易被忽略的,不是“要不要写”,而是“什么时候写对”——它必须出现在首屏 HTML 源码中,且与当前 URL 的语义严格绑定。一旦脱离这个前提,再精准的文案也失去意义。


















