文本转 Slug
将文本转换为 SEO 友好的 URL Slug。
100% 客户端处理
长度: 0 字符 已截断
这个文本转 slug 转换器能把任何标题或短语变成干净、URL 安全的 slug,分隔符、大小写处理和可选的停用词移除都由你决定。它是为给文章起固定链接的博主、生成路由或文件名的开发者,以及想要整齐永久链接的 SEO 写作者准备的。
使用方法
- 输入文本——键入文章标题、产品名称或任意短语。默认示例「10 Tips for Better JavaScript Code」会立刻显示输出。
- 选择分隔符——连字符、下划线或不加。连字符是 Web 标准;下划线适合代码;不加适合紧凑标识符。
- 设置最大长度——默认 200 个字符。设为 0 可关闭截断。
- 切换小写——默认开启,保证 URL 一致且大小写不敏感。
- 切换停用词移除——默认关闭;开启后删除常见的英文填充词。
- 复制——slug 及其字符数会实时更新,若结果被截断则显示一个标记。
转换器到底对文本做了什么
整个变换按固定顺序执行,而这个顺序解释了大多数令人意外的结果:
- 转小写(若启用)先作用于整个字符串。
- 修剪去掉首尾空白。
- 停用词移除(若启用)按空白切分,从固定的英文列表中删除精确匹配的 token。
- 分隔符替换把连续的空格和下划线替换成你选的分隔符。
- 字符过滤删除任何不是 Unicode 字母、Unicode 数字或你所选分隔符的字符。
- 合并与修剪把重复的分隔符合并成一个,并去掉两端的。
- 截断如果 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 | 连字符、最长 40 | a-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 团队审校 · 最后更新