编码加密 · Base 系列

Base64 转换

文本/文件/图片互转(URL-safe 选项)

✓本地处理 · 不上传 ✓免费 · 无需登录 ✓无次数限制 累计 151 次使用
原 文→ 编码
Base64← 解码
就绪 · 任一侧输入即实时转换;编码选项见右上
第一节

关于本工具

About

从日志里复制一段乱码般的Base64字符串,粘贴进来,瞬间还原成可读的原文;或者把一张小图片拖进来,直接转成内联的data:URL嵌入HTML。这个工具只做一件事:在Base64与原始数据之间双向转换,支持文本、文件、图片,并提供URL-safe选项避开路径歧义。所有转换都在浏览器本地完成,文件不会离开设备——调试接口、快速编码小资源、验证收到的Base串是否合法,都够用。

使用场景

壹

邮件附件转文本

甲方发来一份 .docx 的验收清单,要求把里面的表格数据贴进在线工单系统。直接复制,格式全乱;手动重敲,50 行数据至少半小时。把文档转成 Base64 字符串后,用在线解码器还原为纯文本,表格结构丢失但每行数据完整可读,复制粘贴 2 分钟搞定,且不经过任何第三方服务器。

贰

API 调试传二进制

后端接口要求上传图片文件,但 Postman 里 body 只能用 raw 文本格式。用本工具把本地 2.3MB 的 JPG 截图转为 Base64 字符串,直接粘贴进请求体。参数名写 image_data,值贴那串 3 万字符的文本,点击发送。服务端解码还原图片,避免 multipart/form-data 的边界解析错误。

叁

URL 传参带特殊符

给同事分享一个包含换行符和引号的 JSON 配置,直接贴到微信消息里,对方复制后 JSON 解析总报错。把 JSON 用 URL-safe 模式转成 Base64,字符集仅含 A-Za-z0-9 和 -_,不含任何换行或引号。对方拿到后解码还原,一次解析通过。

肆

网页内嵌小图标

前端页面需要显示一个 16×16 的 favicon.ico,但部署环境不允许上传额外静态文件。把图标文件用本工具转为 Base64 字符串,直接嵌入 HTML 的 link 标签 href 属性里:data:image/x-icon;base64,AAAA...。页面加载不产生额外 HTTP 请求,图标即刻显示。

伍

数据库存二进制头像

用户注册时上传头像,数据库字段是 TEXT 类型,不能直接存二进制。在注册流程中,后端收到图片后调用本工具(或前端上传前预处理)转为 Base64 字符串存入数据库。查询用户信息时,前端直接拿这个字符串设给 img 标签的 src,省去文件存储和 CDN 开销。

第二节

使用指南

Getting Started

使用步骤

  1. 1在输入框粘贴文本、上传文件或图片,工具自动识别内容类型并显示预览
  2. 2若需 URL 安全编码,勾选「URL-safe」选项,Base64 字符集中的 + 和 / 替换为 - 和 _
  3. 3点击「编码」按钮将输入转为 Base64 字符串,或点击「解码」将 Base64 还原为原始内容
  4. 4结果区即时显示转换后的文本或下载链接,点击「复制」按钮将结果写入剪贴板

输入输出示例

输入输出说明
Hello, 世界!SGVsbG8sIOS4lueVjO+8gQ==常规:中英文混编,验证 UTF-8 编码下的 Base64 标准输出,末尾带 = 填充符
SGVsbG8sIOS4lueVjO+8gQ==Hello, 世界!常规:解码刚才的编码结果,验证双向转换一致性
(空字符串)(空字符串)边界:空输入,验证工具不会报错或输出非空结果
aYQ==边界:单字节输入,Base64 编码结果长度为 4(含填充),验证填充规则
abYWI=边界:双字节输入,编码结果长度为 4(含 1 个填充符),验证填充规则
abcYWJj边界:三字节输入,编码结果长度正好为 4(无填充),验证无填充时的输出
SGVsbG8gV29ybGQhHello World!易错:输入不含 = 填充符的标准 Base64 字符串,验证工具能自动补全或正确解码
SGVsbG8gV29ybGQhIQ==Hello World!!易错:输入末尾有双等号填充,验证解码后双感叹号是否完整还原

常见错误对照

1.中文 Base64 编码后直接用于 URL 参数

✗ 错误编码后字符串:5Lit5paH5a2X5rOV(含 + 和 /)
✓ 修复使用 URL-safe 选项,输出:5Lit5paH5a2X5rOV(+ 变 -,/ 变 _,= 省略)

标准 Base64 包含 +、/、=,在 URL 中会被解析为空格或路径分隔符,导致参数截断。URL-safe 变体(RFC 4648 §5)替换为 -、_ 并去除填充 =。

2.把 Base64 当加密用,明文直接编码

✗ 错误将密码 'abc123' 编码为 'YWJjMTIz' 后存储
✓ 修复Base64 仅用于数据传输,密码应使用 bcrypt/argon2 哈希后存储

Base64 是编码(可逆),不是加密(需密钥)。编码后的字符串用在线工具一秒解码,无任何保密性。

3.图片转 Base64 时遗漏 data URI 前缀

✗ 错误直接粘贴 <img src='iVBORw0KGgo...'> 到 HTML
✓ 修复<img src='data:image/png;base64,iVBORw0KGgo...'>

浏览器需要 data: 协议头(含 MIME 类型)才能识别 Base64 为图片,否则视为相对路径。MIME 类型必须与实际文件格式一致(如 image/jpeg)。

4.解码时混入多余空白或换行

✗ 错误解码字符串包含空格或换行:'SGVsbG8gV29ybGQ= '
✓ 修复解码前先去除所有空白字符:'SGVsbG8gV29ybGQ='

Base64 规范(RFC 4648 §3.1)允许解码器忽略空白,但部分实现(如某些后端库)会因非法字符抛出异常。安全做法是解码前 strip()。

5.编码二进制文件时用文本模式读取

✗ 错误Python 中 open('photo.png', 'r') 读取后编码
✓ 修复open('photo.png', 'rb') 以二进制模式读取

文本模式会进行换行符转换(Windows 下 变 ),破坏文件完整性。Base64 编码的输入必须是原始字节流。

6.手动补全 Base64 填充等号数量错误

✗ 错误解码 'aGVsbG8'(缺少 1 个 =)
✓ 修复解码 'aGVsbG8=' 或使用自动填充的解码器

Base64 编码长度必须是 4 的倍数,不足时用 = 填充。缺少填充会导致解码错误或数据截断。多数现代解码器自动补全,但手动拼接时需注意。

7.将 Base64 解码结果直接当文本显示

✗ 错误解码图片 Base64 后直接 console.log() 输出乱码
✓ 修复解码后得到的是二进制数据,需按原格式处理(如创建 Blob 或写入文件)

Base64 解码返回的是字节序列,非文本。直接打印会按 UTF-8 解释字节,产生乱码。图片、压缩包等二进制文件必须通过 Blob/File API 处理。

第三节

工作原理

How It Works

核心公式

Base64 编码:C = Base64(M),其中 M 为原始字节序列,C 为编码后的 ASCII 字符串

变量说明

  • M原始数据,字节序列
  • C编码结果,ASCII 字符串

示例

原始文本 "Man" 的 ASCII 字节为 77、97、110(二进制 01001101、01100001、01101110)。按 6 位分组:010011、010110、000101、101110,对应十进制 19、22、5、46,查 Base64 索引表得 T、W、F、u,编码结果为 "TWFu"。

输入文本/文件/图片(支持 URL-safe 选项)浏览器本地编码/解码(UTF-8 转 Base64 表)无服务器上传,数据不出本地输出 Base64 字符串或还原的原始数据(支持复制/下载)文件/图片自动转 Data URL(FileReader API)Base64 编码/解码(btoa/atob + 字符集处理)结果预览与下载(图片直接展示,文件可下载)特点:纯前端实现,数据不上传服务器,支持 URL-safe 模式(Base64url)适用于文本、图片、PDF 等文件的编码与解码
用户输入 本地处理 输出结果
第五节

常见问题

Q & A
问把图片转成 Base64 之后,怎么感觉网页加载反而变慢了?+
答

图片转 Base64 后体积会膨胀约 33%,因为每 3 字节二进制数据会被编码成 4 个 ASCII 字符。这对小图标(几 KB)影响不大,但一张 100KB 的 JPG 转完变成约 133KB 的字符串,直接嵌在 HTML/CSS 里会增加页面初始下载量。浏览器无法像普通图片文件那样做渐进式加载或单独缓存,每次访问都得重新下载这段字符串。建议只对 10KB 以下的小图标、装饰性元素用 Base64 内嵌,大图还是用文件链接更合理。

问文件转 Base64 后生成一长串乱码,怎么恢复回原文件?+
答

那不是乱码,是编码后的文本。要恢复,把整段文本复制出来,找一个支持「Base64 解码为文件」的工具(本工具也有这个功能),粘贴进去,点击解码,就能下载回原文件。关键点:编码时是什么格式(比如 PNG 图片),解码后保存时也要用相同扩展名。如果解码后打不开,检查一下复制时有没有漏掉开头的 data:image/png;base64, 前缀——有些工具只认纯编码内容,不带前缀。

问Base64 编码后末尾那个等号是什么意思?能去掉吗?+
答

等号是填充符。Base64 编码按 3 字节一组处理,如果原始数据长度不是 3 的倍数,最后一组会不足 3 字节,就用 = 或 == 补足到 4 个字符,这样解码器能知道最后一组实际有效数据是 1 还是 2 字节。去掉等号后,大多数标准解码器会报错或解码出错误数据。不过本工具提供了「URL-safe」选项,它会把 + 变 -、/ 变 _,并去掉末尾的 =,生成的是 RFC 4648 第 5 节定义的「base64url」格式,这种格式解码前需要手动补回等号,或者用支持无填充解码的库。

问为什么我用记事本打开 .txt 文件转 Base64,跟用别的工具转出来不一样?+
答

问题出在换行符和编码上。Windows 记事本保存的 .txt 默认是 GBK 编码,每行结尾是回车+换行(CR+LF,即 \r\n);而 Linux/macOS 上常用 UTF-8 编码,换行只有 LF(\n)。Base64 是对原始二进制逐字节编码的,同一段文字用不同编码保存,二进制完全不同,Base64 结果自然不同。如果你想让结果跨平台一致,转码前先用 UTF-8 编码保存文本文件,或者在本工具里直接粘贴文本(不要上传文件),工具会按 UTF-8 处理文本内容。

问Base64 能用来加密吗?别人拿到我的编码字符串能还原出内容吗?+
答

Base64 是一种编码方案,不是加密算法。它只是把二进制数据转换成可打印的 ASCII 字符,方便在文本协议(如 HTTP、JSON)中传输。任何拿到编码字符串的人,用标准 Base64 解码器都能一秒还原出原始内容,不需要密钥。如果内容需要保密,应该用 AES、RSA 等加密算法先加密,再把加密后的二进制结果做 Base64 编码。简单说:Base64 防肉眼不防破解,别拿它当密码用。

问图片转 Base64 时,那个 data:image/png;base64, 前缀有什么用?+
答

这个前缀叫 Data URI scheme,告诉浏览器后面这段字符串是什么类型的数据。比如 data:image/png;base64, 表示后面是 PNG 格式图片的 Base64 编码;data:application/pdf;base64, 表示是 PDF 文件。浏览器遇到这个前缀,能直接解析并渲染出图片或提供文件下载,不需要发起网络请求。如果你只是想把编码存起来或传给后端,可以只取逗号后面的纯编码部分,节省存储空间。本工具结果区默认只展示纯编码,需要带前缀的可以手动拼接。

问URL-safe 选项到底有什么用?什么时候必须勾?+
答

标准 Base64 编码字符集包含 + 和 /,这两个字符在 URL 中有特殊含义(+ 代表空格,/ 是路径分隔符)。如果把标准 Base64 字符串直接放在 URL 参数里(如 ?token=abc+def/ghi),服务器解析时会出错。URL-safe 模式把 + 替换成 -,把 / 替换成 _,并去掉末尾的 =,生成的字符串可以安全地放在 URL 的查询参数或路径中。如果你要把编码结果放在 GET 请求的参数里、或者作为 RESTful API 的路径段,一定要勾上;如果只是本地使用或放在 POST 请求体里,不需要勾。

问Base64 解码时提示「输入无效」,但我确认编码没复制错,怎么回事?+
答

常见原因有三个。第一:编码字符串里混入了换行符或空格。标准 Base64 不应该有换行,但有些工具或邮件系统会每 76 个字符自动换行,粘贴前要先把换行去掉。第二:字符串长度不是 4 的倍数。Base64 编码结果长度一定是 4 的倍数,如果复制时漏了字符或多了字符,解码器会报错。第三:包含了非法字符。标准 Base64 只包含 A-Z、a-z、0-9、+、/ 和末尾的 =,如果看到 . - _ 等字符,说明是 URL-safe 格式,要用对应的解码模式。本工具输入框会自动过滤常见干扰字符,如果还是报错,建议重新复制完整编码,检查首尾有没有多余内容。

隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。

↑↓选择 ↵打开 ⌘+↵新窗口 esc关闭