URL Slug 生成器 — 一键把任意文本转成 slug
在线把任意标题即时转成干净、利于 SEO 的 URL slug。可音译重音字符与西里尔字母,也可保留 Unicode 文字。100% 本地运行,数据不离开浏览器。
什么是 URL slug?
URL slug 是网址中以人类可读方式标识某个具体页面的那一部分。在 `https://go-tools.org/blog/how-to-write-url-slugs` 中,slug 是 `how-to-write-url-slugs`——最后一个斜杠之后、用来命名内容的那一段。这个词源自报刊出版业,编辑给一篇稿子起的简短工作代号就叫「slug」;Web 借用了这个术语,用来指代标识页面的那个简短名称。
一个规范的 slug 遵循几条已近乎通用的约定。它是小写的,因为搜索引擎把 URL 视为大小写敏感,统一的小写形式可以避免同一页面通过多个 URL 都能访问到。它用连字符分隔单词,因为 Google 把连字符读作词边界(所以 `url-slug-generator` 是三个关键词),而把下划线读作词连接符。它会剥离标点和符号,因为 `?`、`&`、`#` 以及空格这类字符在 URL 中有保留含义、或必须做百分号编码,那会让地址变得难看且更难分享。它还应当简洁——既足够描述页面并承载目标关键词,又短到一眼能读完。
手工生成 slug 机械却繁琐:把标题小写化、用连字符替换空格、移除标点、折叠重音字符、合并任何重复连字符、再修剪两端。本工具一步到位,而且随每次按键完成。真正有意思的决定都围绕非 ASCII 文本展开。这里有两套都成立的理念。第一套是音译(本工具的 ASCII 模式),把 é 转成 e、ü 转成 u、ß 转成 ss、Привет 转成 privet,产出处处可用的可移植纯 ASCII slug。它依赖 Unicode NFD 规范化把带重音的字母拆成「基本字母 + 组合记号」,再丢弃记号——这是每个 JavaScript 引擎都内置的零依赖技巧——再加上为没有分解形式的字符(ß、æ、ø)以及西里尔和希腊字母手工维护的小型转写表。第二套理念是 Unicode 保留(本工具的 Unicode 模式),保留任意文字系统的字母、只做小写化和连字符化,产出像 你好-世界 这样的国际化 slug。这正是 GitHub 把 Markdown 标题变成锚点链接时所用的规则,现代浏览器和搜索引擎通过 IRI 标准对它有完整支持。
slug 只是 URL 设计中很小的一环,却实实在在地在做事:它在访客点击之前就告诉他们页面讲的是什么,它给搜索引擎提供关键词信号,它让链接在聊天、邮件或社交帖子里被分享时依旧可读。像 /tools/url-slug-generator 这样描述性的 slug,在以上每个维度上都胜过 /tools/page?id=4823 这样不透明的写法。
本工具完全在你的浏览器中运行——slug 更新不发起任何网络请求,你的文本永远不会被上传或记录。要处理相关的文本工作,大小写转换器可在 camelCase、snake_case、kebab-case 等标识符风格之间切换文本,URL 编解码器处理完整 URL 与查询字符串的百分号编码,字数统计负责测量长度与阅读时间。它们一起覆盖了开发者或内容作者在发布前所做的大多数文本整形工作。
// The core of a zero-dependency slugify (ASCII mode)
function slugify(input) {
return input
.normalize('NFD') // café → cafe + combining accent
.replace(/[\u0300-\u036f]/g, '') // drop the combining marks
.replace(/ß/g, 'ss') // chars with no NFD decomposition
.replace(/&/g, ' and ') // keep the meaning of '&'
.toLowerCase()
.replace(/[^a-z0-9]+/g, '-') // every other run of junk → one hyphen
.replace(/^-+|-+$/g, ''); // trim leading / trailing hyphens
}
slugify('Crème Brûlée Recipe'); // 'creme-brulee-recipe'
slugify('Salt & Pepper'); // 'salt-and-pepper'
slugify('10 Tips: A Guide!'); // '10-tips-a-guide' 核心特性
两种音译模式
ASCII 模式折叠重音、把西里尔和希腊文罗马化,得到可移植的 a–z slug;Unicode 模式保留任意文字系统的字母,与 GitHub 锚点风格一致。一个开关同时覆盖「让它可移植」和「保留我的语言」这两类用例——别的工具往往逼你二选一。
精准的重音折叠
用 Unicode NFD 规范化把 café → cafe、naïve → naive、Zürich → zurich,并对没有分解形式的字符做显式处理(ß → ss,æ → ae,ø → o)。结果对法语、西班牙语、葡萄牙语、德语、北欧诸语等都正确无误。
实时更新,无需「转换」按钮
slug 随每次按键、每次选项变更即时更新——不用点按钮、不刷新页面。粘贴一个标题、读出 slug、复制走人。为真实发布的速度而打造。
分隔符、大小写与长度控制
在连字符与下划线分隔符之间切换、保留或去掉小写化、并把 slug 封顶在某个最大长度——截断发生在词边界而非词中间。合理的默认值(连字符、小写、不限长)开箱即合 SEO 最佳实践。
智能的 & 号处理
& 号会被展开为「and」,所以「Salt & Pepper」变成 salt-and-pepper,而不会悄悄丢掉一个词。其余任何连续标点都会折叠成单个分隔符,所以你永远不会得到双重或末尾连字符。
可分享的永久链接
你的输入与选项设置会被编码进页面 URL,所以你可以分享一个能复现你刚生成 slug 的链接——在工单或 pull request 里记录一项命名决策时很方便。
100% 浏览器端隐私
每个 slug 都在你的浏览器本地生成。你的文本永远不会上传、不会被记录、不会被分析——包含未公开的产品名和草稿标题都可放心使用。键入时网络请求数为零;可在浏览器 Network 面板自行验证。
Slug 生成器对比
slugify(npm 包)
JavaScript 库最流行的 Node slugify 库——可配置分隔符、小写、自定义替换以及一张音译映射表。在你的构建流水线里用它以编程方式生成 slug;用本工具做一次性 slug,并在落进代码之前预览一个标题最终长什么样。
github-slugger
JavaScript 库驱动 GitHub 标题锚点的那个库——它保留 Unicode 字母(不音译),并对页面上重复的 slug 去重。本工具的 Unicode 模式复现了它「保留字母」的行为,这正是你在 Markdown 文档里匹配页内锚点链接时想要的。
Django slugify / Python-slugify
Python 库Django 内置的 slugify 会音译成 ASCII;第三方 python-slugify 增加了 Unicode 处理和更多选项。两者都在服务端。这款浏览器工具交互式地给你同样的音译结果,无需 Python 环境,适合快速核对和内容工作。
WordPress / Ghost / Hugo 自动 slug
CMS 功能每个主流 CMS 都会在保存时从标题自动生成 slug。它们很方便,但给你的控制很少,常常留着停用词或做出别扭的截断。用本工具刻意打磨并缩短 slug,再粘进 CMS 的 slug 字段去覆盖自动生成的那一个。
it-tools Slugify
浏览器工具流行的 it-tools 套件里一个干净的开源 slugify——以固定行为做音译和小写化。本工具增加了显式的 ASCII/Unicode 模式开关、分隔符与长度控制、智能 & 号处理,以及针对非拉丁和 SEO 边界情况的完整示例与最佳实践指引。
convertcase.net slug 工具
浏览器工具一个运营多年的文本工具站,带一个聚焦拉丁文本的基础 slug 选项。本工具在国际化(西里尔/希腊罗马化、一个保留 Unicode 的模式)和 SEO 决策(分隔符选择、长度封顶、连字符与下划线之争的理由)上走得更远——这些才决定一个 slug 究竟能不能排上名。
Slug 生成示例
博客文章标题 → URL slug
10 Tips for Faster JavaScript: A Complete Guide!
10-tips-for-faster-javascript-a-complete-guide
冒号、感叹号和大写字母都被规范化掉了。结果正是 WordPress、Ghost、Hugo 默认生成的 kebab-case slug——可直接放进 slug 字段。数字会保留,所以「10」留在最前面,承载它的关键词价值。
带重音的标题(ASCII 模式)→ 音译后的 slug
Crème Brûlée Recipe
creme-brulee-recipe
ASCII 模式用 Unicode NFD 规范化折叠重音:è → e,û → u。这个 slug 是纯 ASCII,所以在任何 URL、文件名和数据库键里都能用,无需百分号编码。这正是大多数 CMS 平台对欧洲语言标题期望的行为。
带 ß 与变音符的德语标题
Große Änderungen für 2026
grosse-anderungen-fur-2026
ß 没有 NFD 分解,所以被显式映射为「ss」。变音符 ä 和 ü 折叠为 a 和 u。注意:这里采用的是简单的国际通用约定(ä → a);如果你的内部规范要求德语的 ae/oe/ue 拼法,请在复制后手动改写 slug。
西里尔标题(ASCII 模式)→ 罗马化 slug
Привет мир
privet-mir
一张紧凑的西里尔转拉丁表会把整段短语罗马化,使它变成可读的 ASCII slug,而不是一个空字符串。切换到 Unicode 模式后,同样的输入仍保持 привет-мир,为俄语受众保留原始文字。
Unicode 模式下的 CJK 标题
你好 世界
你好-世界
中文、日文、韩文表意文字在这里没有 ASCII 音译,所以 ASCII 模式会返回空 slug。Unicode 模式则保留字母、只做连字符化——这是国际化 URL 的现代、符合标准的做法,也是 GitHub 处理标题锚点的方式。
符号与 & 号 → 可读单词
Salt & Pepper: 100% Natural
salt-and-pepper-100-natural
& 号被展开为「and」,所以这个词得以保留而不是消失。百分号和冒号作为不安全的 URL 字符被剥离,而「100」里的数字会保留。结果读起来很干净,并承载了每一个有意义的关键词。
如何使用 Slug 生成器
- 1
粘贴或键入你的文本
点进编辑框,输入一个标题、标题文字或短语——或者点一个预设按钮(博客标题、重音字符、CJK、西里尔、符号)载入一段有代表性的示例。slug 会即时出现在下方的输出框里。
- 2
选择 ASCII 或 Unicode 模式
保持「模式」为 ASCII,得到一个可移植的 a–z slug,它会音译重音并罗马化西里尔/希腊文。如果你的文本是非拉丁文字(中文、阿拉伯文、西里尔),且你想在 URL 里保留原始字符,就切换到 Unicode。
- 3
调整分隔符、大小写与长度
保留连字符分隔符(推荐)或切换到下划线。小写默认开启;关掉它即可保留原始大小写。设一个「最大长度」可在词边界处给长 slug 封顶,或保持为 0 得到完整 slug。
- 4
复制 slug
点「复制」把成品 slug 写入剪贴板——按钮会闪一下「已复制!」给你确认。把它粘进 CMS 的 slug 字段、文件名或锚点 id。点「重置」可清空编辑框、重新开始。
常见 Slug 错误
在 slug 里留下大写字母
因为对搜索引擎而言 URL 是大小写敏感的,混合大小写的 slug 会让同一页面通过多个地址都能访问到(/My-Post 和 /my-post),分散链接信号并冒重复内容判定的风险。除非某系统特别要求,否则 slug 一律小写。
https://example.com/My-Awesome-Post
https://example.com/my-awesome-post
用下划线代替连字符
在 Google 眼里下划线会连接单词,所以 my_first_post 会被读成单个 token,而非三个关键词。连字符分隔单词,是 SEO 推荐、CMS 标准的选择。只有在下游系统强制时才把分隔符切换为下划线。
https://example.com/my_first_post
https://example.com/my-first-post
在 URL 里留下原始非 ASCII 字符
把带重音或符号的标题直接粘进 URL 字段,地址被复制时会产出一堆百分号编码乱码(caf%C3%A9-cr%C3%A8me)。要么音译成 ASCII(café → cafe),要么刻意选择 Unicode 模式并接受这种编码——别在 slug 里留下半编码、意外混入的字符。
https://example.com/caf%C3%A9-cr%C3%A8me
https://example.com/cafe-creme
把整个标题塞进 slug
一个 90 字符、把整条标题逐字重复的 slug 难以阅读,会在搜索摘要里被截断,还会稀释关键词。把它修剪到核心短语。用「最大长度」选项给 slug 封顶、去掉停用词,得到更紧凑的 URL。
the-10-absolute-best-and-most-effective-tips-for-writing-faster-javascript-code-in-2026
faster-javascript-tips
谁在使用 Slug 生成器
- 博主与内容作者
- 把一个文章标题转成 CMS 期望的 URL slug。粘贴「10 Tips for Faster JavaScript: A Complete Guide」,直接复制 `10-tips-for-faster-javascript-a-complete-guide` 放进 WordPress、Ghost 或 Hugo 的 slug 字段——富含关键词且干净。
- SEO 专员
- 打磨简短、聚焦关键词的 slug,让它在搜索结果里读起来顺眼、并承载点击价值。用「最大长度」控制把 slug 保持在约 60 字符以内,并去掉停用词,得到更紧凑、更相关的 URL。
- 命名路由与文件的开发者
- 从人类可读的标签生成安全的标识符,用于路由路径、静态文件名、图片资源名和存储键。ASCII 模式保证结果可移植,能跨越那些遇到非 ASCII 字符就出错的文件系统和数据库。
- 文档与 Markdown 作者
- 复现 GitHub、GitLab 和大多数静态站点生成器从标题生成的锚点 slug,让你的页内「#section」链接对得上。Unicode 模式镜像了 GitHub 对非英文标题「保留字母」的行为。
- 国际化站点
- 按语言选择行为:把欧洲语言标题音译成 ASCII 以求最大兼容,或切换到 Unicode 模式在 URL 里保留中文、西里尔或希腊字符,面向母语读者。两种都成立;这个开关让你逐页决定。
- 电商与目录团队
- 从产品名生成稳定的产品与分类 slug——包括带重音的品牌名和符号。智能的 & 号处理意味着「Salt & Pepper」会变成 salt-and-pepper,而不会丢掉一个词,让产品名保持可搜索。
Slug 化是如何运作的
- 用 Unicode NFD 规范化处理重音
- 带重音的拉丁字母通过把字符串规范化为 NFD(标准分解)来折叠——它会把像 é 这样的字符拆成基本字母 e 加一个组合锐音符(U+0301),再剥离 U+0300–U+036F 范围内的组合记号。这是每个 JavaScript 引擎内置的零依赖能力,覆盖法语、西班牙语、葡萄牙语、意大利语、德语变音符以及北欧和中欧诸语的重音。没有标准分解的字符——ß、æ、œ、ø、đ、ł、þ——由一张小型显式映射表处理(ß → ss,æ → ae,等等)。
- 西里尔与希腊文罗马化
- ASCII 模式内置了为西里尔和希腊字母手工维护的紧凑音译表,所以 Привет мир 变成 privet-mir,Λάμδα 变成 lamda。西里尔表采用常见的俄语罗马化方案。CJK 表意文字和阿拉伯文在 ASCII 模式下刻意不做音译——完整的拼音/罗马字转换需要大型词典且会产出有歧义的结果——所以对这些文字,推荐使用 Unicode 模式(它会保留字符)。
- 音译对照表
- 下表展示了代表性字符在每种模式下的行为。ASCII 模式追求可移植的 a–z、0–9 slug;Unicode 模式保留任意字母或数字。
输入 ASCII 模式 Unicode 模式 é è ê ë e é è ê ë(保留) ü ö ä u o a 保留 ñ n ñ(保留) ç c ç(保留) ß ss ß(保留) æ / œ / ø ae / oe / o 保留 Привет privet привет Λάμδα lamda λάμδα 你好 世界 (丢弃) 你好-世界 & and and 🚀(emoji) (丢弃) (丢弃) - 分隔符折叠与修剪
- 音译之后,每一段不是字母或数字的连续字符都会被替换为单个分隔符。这意味着重复两三次的标点永远不会产出双重分隔符:「a---b__c」会变成 a-b-c。首尾分隔符会被修剪,所以以标点开头或结尾的标题永远不会产出带悬空连字符的 slug。& 号会在这一步之前被展开为「and」,以保留那个词。
- 词边界截断
- 当你设置最大长度时,slug 会被切到那个长度;如果切口落在某个词的中间,就回退到上一个分隔符,这样你永远不会在末尾得到半个词。切口留下的末尾分隔符会被移除。即使第一个词本身就比上限还长,也至少会保留一个词。把上限设为 0 即可完全禁用截断。
- 大小写敏感性与小写化
- 按规范,URL 是大小写敏感的——对搜索引擎而言 /About 和 /about 是不同的地址——所以本工具默认小写化,以避免同一内容通过多个 URL 都能访问到(一种重复内容风险)。在 Unicode 模式下,小写化只对有大小写区分的文字(拉丁、西里尔、希腊)生效,对没有大小写的文字(CJK)则不起作用。当下游系统要求保留原始大小写时,关掉「小写」选项即可。
URL slug 最佳实践
- 保持 slug 简短、聚焦关键词
- 瞄准大致 3–6 个有意义的词,理想情况下控制在约 60 字符以内。简短的 slug 更易读、更不容易在搜索结果里被截断、分享时也更干净。包含页面的目标关键词、去掉填充词——a、the、of、for 这类停用词几乎总能去掉而不损失清晰度。
- 用连字符,不用下划线或空格
- Google 把连字符视为词分隔符、把下划线视为词连接符,所以连字符能给每个词各自的关键词信号。空格必须被百分号编码为 %20,会让 URL 变难看。连字符是通用的 CMS 约定——本工具默认用它不是没有道理的。
- 已发布的 slug 切勿更改
- slug 是一个永久地址。发布之后再改它,会让所有已存在的入站链接、书签和社交分享失效,并重置页面已积累的 SEO 价值——除非你配置了 301 重定向。在发布之前就定好 slug;如果以后非改不可,务必加一条从旧 slug 到新 slug 的重定向。
- 刻意地选 ASCII 还是 Unicode
- 面向广泛或国际化的受众时,ASCII 音译能最大化兼容性,并让 URL 被当作文本复制时保持干净。面向单一非拉丁语言的受众(中文、俄语或希腊语站点)时,Unicode slug 对你真正的读者更可读,且现代搜索引擎对它完整支持。让模式匹配「谁会读这个 URL」。
- 把日期排除在 slug 之外
- 别把年份或日期烙进 slug(/2024-buyers-guide)。当你以后刷新内容时,你要么被困在 URL 里一个过气的日期,要么改 slug 而让链接失效。把发布日期存进 CMS 元数据,让 slug 保持永恒,这样同一个 URL 才能承载多年更新的内容。
常见问题
什么是 URL slug?
URL slug 该用连字符还是下划线?
ASCII 模式和 Unicode 模式有什么区别?
Unicode(非 ASCII)的 URL slug 安全吗、利于 SEO 吗?
emoji 和特殊符号是如何处理的?
slug 的最大长度多少合适?
本工具如何处理中文、日文、韩文或阿拉伯文?
URL slug 应该包含日期或数字吗?
我的文本会被上传到任何地方吗?
相关工具
查看所有工具 →大小写转换器 — UPPERCASE、lowercase、camelCase 一次搞定
文本处理
在浏览器里把文本一键转成 UPPERCASE、lowercase、Title Case、Sentence case、camelCase、PascalCase、snake_case、kebab-case、CONSTANT_CASE 等共 15 种命名格式。免费、纯本地、无需注册。
Lorem Ipsum 生成器 — 免费占位文本工具
文本处理
即时生成 Lorem Ipsum 占位文本 — 按段落、句子、单词、字节或列表生成。可复制或下载为纯文本、HTML、Markdown 或 JSON。100% 免费、隐私、纯浏览器运行,无需注册。
免费正则表达式测试器 — 在线实时匹配与调试
文本处理
在浏览器里实时测试正则表达式:高亮匹配、捕获组、命名分组、替换预览、字符串切分与逐 token 解释,支持 JavaScript(ECMA-262)方言、g/i/m/s/u/y/d 七个 flag、ReDoS 超时保护。100% 本地运行、免费、无需注册。
在线文本对比与差异工具
文本处理
在浏览器内即时对比两段文本。双栏并排展示、行内单词级高亮、统一 diff 补丁导出,支持忽略大小写、空白与空行。100% 本地浏览器处理,无需上传,文本不离开你的设备。
免费字数统计与字符计数工具
文本处理
在浏览器里实时统计单词数、字符数、句子、段落与阅读时间,并对照 Twitter、meta description、Instagram 等平台字符限制给出实时进度条。免费、隐私、无需注册。
进制转换器 — 二进制、十六进制、十进制、八进制互转
转换工具
在线免费进制转换工具,支持二进制、八进制、十进制、十六进制及 2-36 任意进制互转。无需注册,数据不离开浏览器,即时获取结果。