Slug 生成器

将任意文本转换为 URL 友好的 slug,支持 Unicode 字符处理、自定义分隔符。免费,基于浏览器。

  • 在浏览器中处理
  • 数据不离开你的设备
  • 免费 · 无需注册
默认开启「小写」。关闭后,保留剩余 ASCII 字母和映射字母的大小写。
默认开启「修剪」,移除两端的所选分隔符。关闭后保留两端分隔符。关闭修剪时,没有字母和数字的输入可能只剩一个分隔符,例如一个点。
选择连字符、下划线或点。连续空白以及已有的连字符、下划线和点都会变为所选分隔符。改变选项立即更新结果。
输入或改变选项时立即更新 Slug。全角字母、数字和符号先换成半角。带重音的拉丁字母去掉组合标记,映射表中的字母和符号会被替换,其他非 ASCII 字符被移除,移除的位置按空格处理;软连字符等不可见的格式字符直接删除。结果为空时显示警告并禁用复制。在工具内按 Ctrl/⌘+L 清空输入和结果。本工具不保存它们。
Slug
「复制」复制当前完整 Slug。失败时,请选中 Slug 后手动复制。

生成的 Slug 会显示在这里。

阅读完整使用指南 URL Slug 生成工具:字符串转 SEO 友好链接完全指南
示例、说明与常见问题 带实际输出的示例、与同类工具的差别,以及常见问题。

中文标题会得到什么

工具不做拼音转写。汉字和中文标点会被删掉(删掉的位置按空格处理),留下来的只有标题里的英文、数字,以及下文映射表中的符号;全角字母和数字会先换成半角再保留。以下是默认选项(连字符、小写、修剪)的实际结果:

  • 如何用 Python 3.12 解析 JSON → python-3-12-json
  • Vue 3 + Vite 项目配置指南 → vue-3-plus-vite(+ 换成了 plus)
  • 微信小程序 setData 性能优化 → setdata
  • 同一个标题关闭「小写」:微信小程序 setData 性能优化 → setData
  • 分隔符选下划线:如何用 Python 3.12 解析 JSON → python_3_12_json

第三个例子只剩一个词,已经看不出文章讲什么。这时可以先写一个英文标题或拼音,再交给工具。带声调的拼音可以直接粘贴,声调符号在 NFD 分解后会被去掉:

  • Rúhé yòng Python jiěxī JSON → ruhe-yong-python-jiexi-json

¥ 与全角字符

人民币和日元都写作 ¥(U+00A5),工具按映射表一律换成单词 yen,不会区分货币:

  • 价格 ¥99 起 → yen-99

全角的 ¥(U+FFE5)、% 和全角字母、数字会先按 NFKC 换成半角,再查映射表,所以结果与半角输入相同:

  • 价格 ¥99 起 → yen-99
  • Node.js 20 入门 → node-js-20

全角空格(U+3000)先换成半角空格,被删掉的汉字也按空格处理,中文夹在英文中间、没有半角空格时,英文单词也会分开:

  • Hello World(中间是全角空格)→ hello-world
  • Vue3入门Vite教程 → vue3-vite

字符映射

符号换成独立的单词,Rock & Roll 得到 rock-and-roll,Tom&Jerry 得到 tom-and-jerry。带附加符号的字母去掉符号(先做 Unicode NFD 分解,再删去组合附加符号):é → e、ñ → n、Łódź → lodz、Tiếng Việt → tieng-viet。不能分解的字母按第二张表替换,取值参考 sindresorhus/transliterate。大写字母保持大写(Ø → O、Œ → OE),开启「小写」时再转为小写。

符号单词
&and
@at
#hash
%percent
+plus
©c
®r
™tm
€euro
£pound
¥yen
₩won
°deg
×x
÷div
字母替换为
ß ẞss / Ss
æ Æae / AE
œ Œoe / OE
ð Ð đ Đd / D
ø Øo / O
þ Þth / TH
ł Łl / L
ıi
ħ Ħh / H
ij IJij / IJ
ə Əa / A

限制

  • 去掉附加符号时不按语言区分:德语 ä ö ü 变成 a o u(不是 ae oe ue),土耳其语 İ 变成 I。
  • 非拉丁文字会被删除。开启「修剪」时,只输入中文、日文或韩文会得到空结果;关闭「修剪」时只剩一个分隔符:北京 → -。
  • 字母或数字后面、字母前面的撇号('、’、‘、ʼ、ʻ、´、′)直接删除:John's Guide → johns-guide,1990's Music → 1990s-music;旁边是空格,或者在文字开头、结尾时,撇号当作分隔符:rock 'n' roll → rock-n-roll。
  • 关闭「修剪」时,开头和结尾的分隔符会保留:Hello World! → hello-world-。
  • 不做拼音转写,也不按汉字读音生成单词。
  • 不删除 a、the、of 这类虚词,也没有长度上限,长标题会得到长 slug;如果 CMS 限制 slug 长度,请手动截短。
  • 一次只转换一段文字,换行按空格处理,粘贴多行标题会得到一个很长的 slug。
  • # 换成单词 hash,所以 C# 得到 c-hash,不是 c-sharp;这类名称请先改写再转换。

Slug 的使用场景

  • 博客文章 URL: /blog/how-to-use-slugs
  • 商品页面: /products/red-running-shoes
  • 文件名: my-important-document.pdf
  • 数据库键: 无空格的可读唯一标识符。

同一套规则对只在标点、大小写上不同的标题会给出同一个 slug。

FAQ

什么是 slug?

Slug 是从可读文本中提取的 URL 友好字符串,通常只包含小写字母、数字和连字符,例如 'hello-world' 由 'Hello World!' 生成。Slug 常用于 URL 中标识页面或资源。

非 ASCII 字符如何处理?

带重音的拉丁字母会去掉附加符号(é → e、ź → z,所以 Łódź → lodz),ß、ł、œ、ø 等不能分解的字母按本页表格替换;全角字母、数字和符号先换成半角(W → W、% → %、¥ → ¥)。& @ # % + © ® ™ € £ ¥ ₩ ° × ÷ 这些符号会换成单词(& → and)。其他非 ASCII 字符,包括中文、日文、韩文、西里尔字母和阿拉伯字母,会被删除,删除的位置按空格处理,前后的单词不会连在一起。软连字符、零宽空格这类不可见的格式字符直接删除,不产生分隔符。

可以使用下划线代替连字符吗?

可以。在「分隔符」下拉菜单中选择连字符(-)、下划线(_)或点(.)。

生成结果可以直接用于 URL 路径吗?

可以。输出只包含 ASCII 字母、数字和所选分隔符,不需要百分号编码。有一个例外:关闭「修剪」并选择点作为分隔符时,没有字母和数字的输入(例如只有标点或只有汉字)会得到一个点(.),浏览器会把它当作点段从路径中去掉。

改了标题,slug 会跟着变吗?

会。工具每次都按输入框里的文字重新生成 slug,不记得之前的结果。文章已经发布的话,请保留原来的 slug,或者把旧地址 301 重定向到新地址;直接换掉已发布的 slug,别处指向旧地址的链接会失效。

输入的文字会发送到服务器或被保存吗?

不会。Slug 在浏览器标签页里生成,输入的文字和结果不会发送到服务器,也不会写入浏览器存储。页面统计只在你改完文字或切换选项时记录工具名和动作(convert),不包含文字本身。