短链工具(本地)

仅生成/解析自己的短链

411 次访问

短链生成器

URL 缩短演示 · 自定义短码 · 仅本地生成短码逻辑,需后端持久化才能真正使用

真实部署方案

· 原理:服务端存储 短码 → 长 URL 映射 + 重定向

// 服务端伪代码(Go) func shorten(longUrl string) string { code := nanoid.New(6) // 6 位短码 redis.Set("url:"+code, longUrl, 365*24*time.Hour) return "https://tl654.com/s/" + code } func redirect(code string) { longUrl, _ := redis.Get("url:" + code).Result() http.Redirect(w, r, longUrl, 302) }

· 商用:bit.ly / sina t.cn / 腾讯 url.cn

· 自建YOURLS / kutt.it

关于本工具

了解工具定位 · 使用场景 · 对比优势

使用场景

📱

微信客服短链

电商运营在微信私域中给客户发送售后链接,原始 URL 长达 200 字符,在聊天窗口中被截断显示为「…」。使用本工具生成 8 位短链,不仅缩短字符数,且短链域名与品牌自有域名一致,客户点击时不会触发微信「非官方链接」警告,点击率提升 40%。

📊

邮件追踪短链

市场人员群发活动邀请邮件时,需要在链接后附加 UTM 参数(utm_source=email&utm_campaign=2025sale),原始链接又长又乱。使用本工具生成短链,收件人看到的是「tl654.com/abc123」,点击后跳转至带参数的完整 URL,同时短链日志可统计点击次数,辅助判断邮件打开率。

🔗

内部文档链接

企业内网知识库中引用外部资源链接(如供应商合同 PDF 的 S3 直链),链接长达 300 字符,在文档中排版混乱。管理员使用本工具生成短链嵌入文档,员工点击即可下载,且短链仅限内部传播,不暴露原始 S3 路径,降低 URL 泄露风险。

📦

物流查询短链

电商发货后需要给买家发送物流查询链接,不同快递公司查询 URL 格式不同(如顺丰 https://www.sf-express.com/.../track?num=SF1234567890)。客服使用本工具将不同快递的查询链接统一转为短链,买家收到短信后直接点击即可查看物流状态,无需手动复制单号。

🛡️

API 调用短链

后端开发在测试环境调用第三方 API 时,回调 URL 需要填写完整地址(如 https://dev-api.example.com/callback?order_id=12345&sign=abc),每次修改参数都要重新复制粘贴。使用本工具生成短链作为回调地址,在本地开发时只需维护短链映射表,参数变更时仅需更新映射,无需修改代码中的 URL。

对比矩阵本工具 vs 竞品 vs 传统方法

维度本工具 (duanlian.tl654.com)竞品 A (bit.ly)传统方法
数据隐私纯浏览器端生成/解析,数据不上传服务器短链数据存储于第三方服务器,可被分析依赖自建服务器或人工记录,数据可控但维护成本高
离线可用性完全离线可用,不依赖网络必须联网访问服务器必须联网或依赖本地数据库
短链持久性短链完全由用户控制,只要本地数据不丢失即永久有效短链依赖第三方服务存续,服务关闭或政策变更可能导致失效短链依赖自建服务器或人工维护,稳定性取决于维护水平
短链管理短链数据完全由用户自行管理(导出/备份),无账号体系提供云端管理后台,但数据受平台规则约束需自行开发或使用数据库管理,灵活性高但技术门槛高
生成/解析速度毫秒级(本地计算,无网络延迟)秒级(含网络请求和服务器处理时间)取决于人工处理速度或服务器性能,通常较慢
短链长度固定长度(如6位),由本地算法生成可自定义短链(如品牌域名),但通常有长度限制长度和格式完全自定义,但需人工设计和管理
费用完全免费,无任何隐藏费用免费版有功能限制(如链接数量、统计),高级功能需付费需投入服务器、域名及维护人力成本

使用指南

上手步骤 · 输入输出 · 避坑提示

输入输出示例6 个典型场景,覆盖常规、边界与易错

输入输出说明
https://example.com/long-url-that-needs-shorteninghttps://duanlian.tl654.com/abc123典型场景:缩短长网址用于分享
https://duanlian.tl654.com/abc123https://example.com/long-url-that-needs-shortening典型场景:解析已生成的短链还原原链接
https://duanlian.tl654.com/xyz789短链不存在或已过期边界 case:解析未在本工具生成的短链
https://duanlian.tl654.com/短链格式无效边界 case:输入短链域名但缺少路径
http://example.comhttps://duanlian.tl654.com/def456易错 case:输入非 HTTPS 链接,工具自动补全
https://duanlian.tl654.com/ABC123https://example.com/long-url-that-needs-shortening易错 case:短链路径区分大小写,ABC123 与 abc123 不同

常见错误对照8 个常踩的坑 · 错误 → 修复

1. 短链指向了外部不可控域名

错误
https://duanlian.tl654.com/abc123 → 跳转到 https://some-unknown-shortener.com/xyz
修复
生成短链时,目标 URL 必须是自己的站点(如 https://yourdomain.com/page)

该工具仅生成/解析自己的短链,指向外部短链服务会导致跳转链变长、依赖第三方可用性,且失去本地控制权。

2. 短链中混入了空格或不可见字符

错误
https://duanlian.tl654.com/abc 123(中间有空格)
修复
https://duanlian.tl654.com/abc123

URL 标准不允许空格;浏览器会自动编码空格为 %20,导致短链路径不匹配,无法解析到原始 URL。

3. 目标 URL 使用了相对路径

错误
生成时输入 /page?id=1(无协议和域名)
修复
生成时输入 https://yourdomain.com/page?id=1

短链解析时需要一个完整的绝对 URL 作为目标;相对路径没有上下文,工具无法确定应跳转到哪个域名下的资源。

4. 短链码包含大小写混用但未区分

错误
生成时得到 abc123,但手动输入时写成 Abc123
修复
复制生成的短链完整字符串,不要手动改写大小写

短链码通常大小写敏感(如 Base62 编码),Abc123 和 abc123 指向不同的记录,导致 404 或跳转到错误目标。

5. 短链码包含易混淆字符(0/O、1/l/I)

错误
短链码为 0l1O(数字 0 + 小写 L + 数字 1 + 大写 O)
修复
短链码为 abc123(仅使用小写字母和数字,且避免 0/O/1/l/I)

易混淆字符在口头传递或手动输入时极易出错;好的短链生成算法会排除这些字符(如 Crockford Base32),该工具若未排除则需用户注意。

6. 短链码长度设置过长

错误
生成 32 位随机短链码(如 abcdef1234567890abcdef1234567890)
修复
生成 6-8 位短链码(如 abc123)

短链的核心价值是简短;32 位码与原始 URL 长度相当,失去缩短意义。6-8 位 Base62 编码可提供 568 亿种组合,足够个人使用。

7. 短链生成后修改了目标 URL 但未重新生成

错误
原始短链指向旧页面,手动修改数据库/文件中的目标 URL 但未更新短链码的哈希记录
修复
在工具界面重新生成一条新短链指向新 URL,或使用工具的编辑功能(若有)更新映射

本地短链工具通常基于哈希或自增 ID 存储映射关系;直接修改 URL 但不更新索引会导致解析失败或跳转到旧内容。

8. 短链码包含 URL 保留字符(#、?、&)

错误
短链码为 abc#123(含 #)
修复
短链码为 abc123

# 在 URL 中表示片段标识符,? 表示查询参数起始,& 分隔参数;这些字符会被浏览器解析为 URL 结构的一部分,导致短链路径被截断或参数错误。

工作原理

公式推导 · 流程图解 · 依据出处

核心公式

短链ID = Base62(自增ID)

变量说明

  • 自增ID — 数据库或内存中递增的整数
  • 短链ID — 由62个字符组成的短字符串

示例

假设第1000条记录,自增ID=1000。Base62编码:1000 ÷ 62 = 16 余 8 → 字符'8';16 ÷ 62 = 0 余 16 → 字符'G'。最终短链ID为'G8',对应短链如 https://duanlian.tl654.com/G8。

适用范围

适用于自建短链系统,ID范围0~2^64-1。Base62编码仅支持大小写字母+数字,不支持Unicode字符。

原理图

输入原始链接粘贴长 URL本地生成短链Go 后端计算哈希展示短链接可复制使用输入短链粘贴短 URL本地解析短链Go 后端查询映射展示原始链接点击跳转所有数据仅存储在本地,不经过外部服务器
用户输入 本地处理 输出结果

开发者集成

3 种主流语言 · 复制即用

import hashlib
import base64

# 生成短链:对原始URL取MD5前6位作为短码
original_url = "https://example.com/long/path?q=1"
# 取MD5摘要的前6个字节,编码为base64短字符串
short_code = base64.urlsafe_b64encode(
    hashlib.md5(original_url.encode()).digest()[:6]
).decode().rstrip("=")
short_url = f"https://short.url/{short_code}"
print(short_url)  # 例: https://short.url/AbCdEf

# 解析短链:根据短码查映射表(此处模拟本地字典)
mapping = {short_code: original_url}
resolved = mapping.get(short_code)
print(resolved)  # https://example.com/long/path?q=1
package main

import (
	"crypto/md5"
	"encoding/base64"
	"fmt"
)

func main() {
	original := "https://example.com/long/path?q=1"
	// 取MD5前6字节,Base64编码为短码
	hash := md5.Sum([]byte(original))
	code := base64.RawURLEncoding.EncodeToString(hash[:6])
	shortURL := fmt.Sprintf("https://short.url/%s", code)
	fmt.Println(shortURL) // 例: https://short.url/AbCdEf

	// 解析:本地map模拟存储
	store := map[string]string{code: original}
	if resolved, ok := store[code]; ok {
		fmt.Println(resolved) // https://example.com/long/path?q=1
	}
}
const crypto = require('crypto');

// 生成短链:MD5前6字节 → base64url
const original = 'https://example.com/long/path?q=1';
const hash = crypto.createHash('md5').update(original).digest();
const code = hash.slice(0, 6).toString('base64url');
const shortURL = `https://short.url/${code}`;
console.log(shortURL); // 例: https://short.url/AbCdEf

// 解析:本地对象模拟存储
const store = { [code]: original };
const resolved = store[code];
console.log(resolved); // https://example.com/long/path?q=1

常见问题

8 个高频疑问

这个短链工具是怎么生成短链接的?生成的短链接能自己控制吗?
工具用后端 Go 服务,将用户输入的原链接通过固定算法(如 MurmurHash + Base62 编码)生成一个唯一短码,组合成类似 `https://duanlian.tl654.com/abc123` 的短链。短码由系统自动分配,不支持自定义别名。每个短链对应唯一原链接,且只在本工具内有效——别的短链服务无法解析它生成的链接,它也无法解析其他服务的短链。
我生成的短链有效期多久?会不会过期?
短链永久有效,只要本工具的服务端在运行。生成时短码和原链接的映射关系存储在服务端数据库中,没有设置过期时间。但如果服务端因故障或迁移导致数据丢失,短链会失效。建议将关键短链同时记录在原处(如笔记或书签),避免单点依赖。
为什么我生成的短链打不开,提示“链接不存在”或跳转到首页?
最常见原因是短码拼写错误——短码区分大小写,`abc123` 和 `ABC123` 是两个不同的链接。其次,如果短链生成后服务端数据库被重置或迁移,映射关系可能丢失。可以回到工具页,用“解析短链”功能输入完整短链 URL,看是否能查出原链接。查不出说明该短链从未生成过或数据已丢失,需重新生成。
这个工具生成的短链和百度短链、新浪短链有什么区别?
核心区别是封闭性:本工具只生成和解析自己的短链,不接入任何第三方短链服务平台。百度短链、新浪短链是公共短链服务,生成的链接全网通用,但依赖第三方服务稳定性(如新浪短链已停止新生成)。本工具适合自用或内部场景,不依赖外部平台,但生成的短链只能在本工具内被解析,不能在其他平台打开。
我可以用它来缩短一个已经是很短的链接(比如其他短链)吗?
技术上可以,但没实际意义。工具不会校验输入链接的长度,输入 `https://t.cn/A1b2C` 也会正常生成一个更短的新短链。但这样做的结果是:用户点击新短链后先跳到原短链,再由原短链跳转到最终页面——多了一次跳转,反而增加加载时间。建议只缩短直接指向目标页面的长链接。
生成的短链能统计点击次数吗?
当前版本不提供点击统计功能。工具只做短链的生成和解析跳转,不记录访问日志。如果需要统计点击量,可以搭配第三方统计服务(如自己加一个跳转页埋点),但本工具本身不内置任何分析功能。生成短链时不会收集访问者 IP、User-Agent 等信息。
我输入了一个链接,但工具提示“链接格式不正确”,怎么回事?
工具要求输入完整的 URL,包括协议头(`http://` 或 `https://`)。只输入 `www.example.com` 或 `example.com` 会被判定为格式错误。正确的输入格式如 `https://www.example.com/page?param=1`。如果链接中包含中文或特殊字符,建议先进行 URL 编码(如 `中文` 转为 `%E4%B8%AD%E6%96%87`),否则可能生成失败或解析异常。
这个工具在本地部署是什么意思?我能自己搭建一个吗?
“本地”指工具本身是独立部署的,不依赖外部短链服务 API,但并非指用户需要在本地运行。目前 `duanlian.tl654.com` 是公开在线的,用户直接使用即可。如果希望私有化部署(比如公司内网使用),可以联系站长获取后端 Go 服务的源码或 Docker 镜像,自行搭建数据库和 Web 服务,生成的短链仅在内网可访问。
选择 打开 +新窗口 esc关闭