什么是 Base64 编码

计算机里的数据本质上是字节(byte),但很多场景——比如 JSON 接口、邮件、HTML 页面——只能传文本。如果直接把图片或文件的二进制字节塞进文本里,就会导致乱码或解析失败。Base64 编码就是为解决这个问题而设计的:它把任意字节流转换成 64 个安全字符的组合,确保在任何文本环境中都能原样传输。

原始文本:Hello World
Base64 编码:SGVsbG8gV29ybGQ=

中文文本:你好世界
Base64 编码:5L2g5aW95LiW55WM

Base64 不是加密,只是一种编码格式转换。它不依赖密钥,编码和解码的算法完全公开。看到 SGVsbG8= 这样以等号结尾的字符串,大概率就是 Base64。

在线 Base64 编码解码的步骤

  1. 打开 Base64 编码工具,在左侧输入框中输入或粘贴需要处理的文本。
  2. 点击「编码」按钮,右侧立即显示 Base64 编码结果;如需解码,粘贴 Base64 字符串后点击「解码」。
  3. 如果处理的是图片,切换到「图片」标签页,上传图片即可得到 Base64 Data URL,反之粘贴 Base64 字符串可预览图片。
  4. 点击「复制」一键复制结果,直接粘贴到代码或接口中使用。

所有操作都在你的浏览器中完成,数据不会上传到任何服务器。

核心功能一览

文本编码 / 解码

输入任意文本(中文、英文、特殊字符),一键转为 Base64 或反向解码,支持 UTF-8。

图片转 Base64

上传图片直接生成 Data URL,可嵌入 HTML 的 src 或 CSS 的 background-image。

Base64 转图片

粘贴 Base64 字符串,实时预览图片内容并支持下载原图。

纯本地处理

所有编码解码在浏览器本地完成,即使敏感数据也不会离开你的电脑。

Base64 vs 加密 vs URL 编码:什么时候用哪种

场景推荐方案原因
把图片嵌入 HTML/CSSBase64(Data URL)减少 HTTP 请求,适合小图标
在 JSON 接口中传二进制数据Base64JSON 不直接支持二进制,Base64 转为字符串
保护密码或敏感信息AES / bcryptBase64 不是加密,任何人都能解码
URL 参数中包含特殊字符URL 编码(百分号编码)URL 编码专为此场景设计,比 Base64 更紧凑

常见应用场景

  • 接口传输:后端返回图片或文件时用 Base64 编码放入 JSON 响应,前端解码后渲染。
  • 邮件附件:MIME 协议用 Base64 编码附件,确保二进制内容在 SMTP 文本协议中安全传输。
  • 网页内嵌资源:将小图标、Logo 转成 Base64 Data URL 直接写在 HTML 中,减少页面请求数。
  • 配置文件:Kubernetes Secret、Docker Compose 等场景中,用 Base64 存储证书或密钥的文本表示。
  • 数据暂存:在浏览器 localStorage 中存储二进制数据的 Base64 字符串形式。

常见问题 FAQ

Base64 编码会增大数据体积吗?

会,Base64 编码后的文本体积约是原始二进制数据的 4/3 倍(增加约 33%)。原因是每 3 个字节(24 bit)被拆成 4 组 6 bit,每组对应一个 Base64 字符。但它的优势在于让二进制数据能在纯文本环境中传输,多出的体积是可以接受的代价。

Base64 是加密吗?可以用来传输密码吗?

不是。Base64 只是一种编码转换,不是加密算法。任何人拿到 Base64 字符串都可以直接解码还原。它不能保护密码——如果需要安全传输敏感数据,应使用 HTTPS 传输层加密结合 AES 等内容加密。

图片转 Base64 有什么优缺点?

优点:嵌入 HTML 后减少一次 HTTP 请求;整个资源随页面一起加载,不存在跨域问题。缺点:体积增大 33%;无法被浏览器单独缓存;大图片转换后字符串特别长,影响页面可读性。通常建议只对 5KB 以下的小图标使用 Data URL。

为什么我的 Base64 解码后是乱码?

最常见的原因是字符编码不匹配。Base64 只编码字节序列,解码后用何种字符集来解释字节决定了对错。如果原始内容是 UTF-8 中文,解码时必须用 UTF-8 来读取;如果用了 GBK 或 Latin-1 就会出现乱码。速工具 默认使用 UTF-8,若仍有问题可检查原数据的编码格式。