URL slug 生成
把标题或句子转成干净的 URL slug:可选分隔符、小写、去重音符号、保留中文与最大长度,并对比转换前后的长度。
浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。
选项
结果
输入文本后即可生成 URL slug
这个工具能做什么
- 把中文或带重音的标题转成 URL 里可读的 slug,例如「Hello World! Café 你好」→ hello-world-cafe-你好。
- 批量整理博客、文档站的文章链接,统一分隔符、大小写与最大长度,避免出现 %E4%BD%A0 这种转义乱码。
- 给 SEO 或短链做长度控制:设置最大长度后会自动截断,并去掉截断处多余的短横线。
- 对比转换前后的字符数,确认 slug 没有因为去重音、去中文而短得离谱。
示例
输入
Hello World! Café 你好(保留中文、去重音、转小写、分隔符 -)
输出
hello-world-cafe-你好
Café 的重音符号先做 NFD 分解再去掉组合符,得到 cafe;原文本长度 20、slug 长度 19(按字符计,中文算 1 个字符)。
常见问题
中文要不要保留?
默认保留,因为现代浏览器和搜索引擎都能正确显示 UTF-8 的路径,中文 slug 对用户更友好。如果目标系统只接受 ASCII(部分 CDN、对象存储或老式 CMS),关掉「保留中文」后会只保留拉丁字母和数字,中文会被替换成分隔符。
最大长度是按字节还是按字符算?
按字符(Unicode 码点)算,中文也算 1 个字符,所以 12 个字符的中文 slug 只占 12 而不是 36 字节。截断后如果末尾正好是分隔符会被去掉,不会出现 hello-world- 这种结尾。
为什么 Café 变成了 cafe,你好却不变?
去重音只处理 Unicode 的组合附加符号(NFD 分解后的 U+0300–U+036F 区间),é → e 属于这一类;而「你」本身就是一个独立的表意文字,没有可以拆掉的附加符号,只能保留或按选项整体丢弃。
emoji 和标点符号会变成什么?
都属于「非字母非数字」字符,会被替换成分隔符;开启「合并连续分隔符」后连续的标点只留下一个分隔符,首尾的分隔符会被去掉,所以「Hello!!!」得到的是 hello。
同一个标题每次生成的结果一样吗?
一样。函数是纯逻辑,不依赖时间、随机数或语言环境(大小写转换走 JavaScript 内置的 toLowerCase),同样的输入与选项永远得到同样的 slug。
关键词:slugifyslug generatorURL slug生成 slugURL 友好permalink去除重音符号accent removalSEO 链接