HandyTools Hub

文本转 Slug

将文本转换为 SEO 友好的 URL Slug。

100% 客户端处理

长度: 0 字符

这个文本转 slug 转换器能把任何标题或短语变成干净、URL 安全的 slug,分隔符、大小写处理和可选的停用词移除都由你决定。它是为给文章起固定链接的博主、生成路由或文件名的开发者,以及想要整齐永久链接的 SEO 写作者准备的。

使用方法

  • 输入文本——键入文章标题、产品名称或任意短语。默认示例「10 Tips for Better JavaScript Code」会立刻显示输出。
  • 选择分隔符——连字符、下划线或不加。连字符是 Web 标准;下划线适合代码;不加适合紧凑标识符。
  • 设置最大长度——默认 200 个字符。设为 0 可关闭截断。
  • 切换小写——默认开启,保证 URL 一致且大小写不敏感。
  • 切换停用词移除——默认关闭;开启后删除常见的英文填充词。
  • 复制——slug 及其字符数会实时更新,若结果被截断则显示一个标记。

转换器到底对文本做了什么

整个变换按固定顺序执行,而这个顺序解释了大多数令人意外的结果:

  1. 转小写(若启用)先作用于整个字符串。
  2. 修剪去掉首尾空白。
  3. 停用词移除(若启用)按空白切分,从固定的英文列表中删除精确匹配的 token。
  4. 分隔符替换把连续的空格和下划线替换成你选的分隔符。
  5. 字符过滤删除任何不是 Unicode 字母、Unicode 数字或你所选分隔符的字符。
  6. 合并与修剪把重复的分隔符合并成一个,并去掉两端的。
  7. 截断如果 slug 太长,在上限之前最后一个分隔符处切开。

实操示例

输入选项Slug
10 Tips for Better JavaScript Code连字符、小写、不移除停用词10-tips-for-better-javascript-code
10 Tips for Better JavaScript Code连字符、小写、移除停用词10-tips-better-javascript-code
The Ultimate Guide: React & TypeScript!连字符、小写、移除停用词ultimate-guide-react-typescript
My File Name (v2)下划线、小写my_file_name_v2
Café au Lait & Crème连字符、小写café-au-lait-crème
A Very Long Descriptive Blog Post Title About Modern Web Development连字符、最长 40a-very-long-descriptive-blog-post

第三行展示了两个阶段的叠加效果:「The」作为停用词被移除,而「Guide:」一直保留冒号,直到过滤阶段才失去它。最后一行展示了截断落在分隔符边界上,而不是把某个词切成两半。

停用词移除:真正匹配的是什么

内置列表覆盖大约五十个常见英文词:冠词(a、an、the)、连词(and、or、but)、介词(in、on、at、to、for、of、with、by、from),以及 be、have、do 的各种形式和情态动词。有两点限制很关键。第一,匹配是在转小写之后做精确比较,所以「The」会被移除,但连字符复合词里的 the 并不是独立 token。第二,移除发生在标点过滤之前,所以像「and,」这样的 token 不会匹配。如果 slug 里仍然出现某个停用词,请检查输入里是否有紧挨着的标点。对于短标题,直接关掉这个选项往往更好,因为每个实词都很重要。

选择分隔符与长度上限

Google 把连字符解析为词边界,这就是为什么 react-tips 被读成两个词,而 react_tips 被当作一个 token。凡是要被爬取和索引的内容,都用连字符。下划线适合文件名和内部标识符,none 选项最适合将用作键、而不是给人阅读的 slug。至于长度,公开发布的 slug 最好控制在约 60 个字符以内,这样在搜索摘要里不会显示不全。200 字符的默认值相当宽裕;按项目调低它来强制自己的上限,并留意那个警告截断已生效的标记。

常见错误

  • 堆砌关键词。 像 best-cheap-affordable-budget-laptops-deals 这样的 slug 读起来像垃圾。挑三到五个真正命名这个页面的词就够。
  • 改动已上线的 slug 却不做跳转。 URL 一旦被索引,修改它就丢掉了旧地址积累的排名。记得为新 slug 配置 301 跳转。
  • 以为非拉丁文本会被剥离。 它会被保留。如果目标系统要求 ASCII,请在粘贴前先做音译。
  • 把 none 分隔符用于公开 URL。 它产出 helloworld 这种无法阅读的字符串,完全抹掉了词边界。
  • 指望停用词移除抓住所有填充词。 列表是固定且仅英文的;品牌词和非英文冠词都会原样通过。

处理非拉丁与混合文字

过滤器使用 Unicode 属性类,所以 slug 会保留各种书写系统的字母和数字,同时丢弃标点和符号。「東京 2024 旅行」变成 東京-2024-旅行,「Café Münster」变成 café-münster。这种行为对许多现代框架是正确的,但有两个实际注意事项。第一,浏览器在构造 URL 时会对非 ASCII 字符做百分号编码,所以地址栏可能显示一长串 %E6%9D%B1 这样的序列;slug 仍然可用,但可读性更差,也更难念出来。第二,一些托管环境、较旧的 CMS 平台和分析工具处理非 ASCII 路径时并不一致。如果你的受众或工具链期望 ASCII,请在粘贴前先音译文本——例如把 東京 转成 tokyo、把 ü 转成 ue 或 u——再交给转换器。工具本身不做音译,也不应该去猜,因为罗马化规则因语言而异。

相关工具

常见问题

停用词移除会删掉紧挨着标点的词吗?

不会。转换器按空白切分并比较整个 token,所以 the 会被删掉,但 the, 或 the. 不匹配,会一直保留到标点剥离阶段才去掉逗号或句点。只有干净、单独分开的停用词才会消失。

把最大长度设为 0 会怎样?

0 完全关闭截断:slug 按完整长度返回。任何大于 0 的值都是硬上限,当 slug 超长时,转换器会在上限之前最后一个分隔符处切开,并显示一个截断标记。

带重音和非拉丁的字母会被保留吗?

会。过滤器保留任何 Unicode 字母或数字,所以 café 变成 café,日本語 保持 日本語。工具不做音译;如果你需要纯 ASCII 的 slug,请先转换文本,或者单独做一步音译。

分隔符选 none 会生成什么?

它把每个词之间用零个字符连接。Hello World 变成 helloworld,所有空格、下划线和标点都被直接删除。这适合文件名和标识符,但不建议用于公开 URL。

为什么我的 slug 比输入的字母数短很多?

空格、标点和符号会被剥离,连续的分隔符会合并成一个,所以 slug 长度通常远低于原始字符数。工具会同时报告原始长度和最终 slug 长度,让你看到差异。

文本里原本就有的下划线会被改掉吗?

会。现有的下划线和空白一样对待,会被替换成你选择的分隔符。选择连字符时,my_file_name 会变成 my-file-name,而不会保留原本的下划线。

由 HandyTools Hub 团队审校 · 最后更新