跳到正文

← 全部工具

免费在线工具

Base64 编码与解码

把文本或文件转成 Base64,也能把 Base64 还原成文本或文件。中文和 emoji 不会乱码,URL 安全版本一键切换,输入有错时会告诉你是第几个字符。不会上传任何内容,全部在本页里运行。

文本与 Base64

选项

18 字节的 UTF-8 变成了 24 个字符,大了 33.3%。

文件转 Base64

选择一个文件,得到它的 Base64 和可直接粘贴的 data: URI。会使用上面的字符表、填充和换行选项(data: URI 始终是单行)。文件只在本页里读取,不会上传。

Base64 转文件

粘贴 Base64 或 data: URI,还原成文件。如果字节以 PNG、JPEG、GIF 或 WebP 的文件头开始,会显示预览;其他类型不预览,只能下载。

在上面粘贴 Base64,然后点“解码”。

它是怎么工作的

  • •文本会先按 UTF-8 变成字节,Base64 编码的就是这些字节。所以“世界”和 emoji 的结果与 python3、base64 命令完全一致。解码则反过来;如果字节不是合法的 UTF-8 文本,会明确告诉你,而不是显示一堆乱码。
  • •Base64 把每 3 个字节写成 4 个字符,所以结果大约多出三分之一。页面显示的是你这份内容按实际长度算出来的数字,不是经验估计。按 76 个字符换行(MIME)会再多出一点。
  • •URL 安全字符表用 - 和 _ 代替 + 和 /,这样结果可以放进网址或文件名。填充是末尾的 =,用来把长度补成 4 的倍数。很多系统(包括 JSON Web Token)会省略它。
  • •解码器有意比多数命令行工具宽容:会忽略空格和换行,接受缺少的 = 填充,两种字符表都认,也会自动去掉 data: URI 前缀。除此之外则更严格:不属于 Base64 的字符、出现在中间的 =、不可能成立的长度,都会连同位置一起报告,而不是悄悄跳过,因为悄悄丢掉字符可能改变你的数据。
  • •“Base64 转文件”只有在开头的字节符合 PNG、JPEG、GIF 或 WebP 的文件头时才会显示预览,不看文件名;其他类型一律不渲染,只提供下载。最大 10 MB 的文件在本页里读取。

常见问题

会上传我的内容吗?
不会。编码、解码、读取文件、预览和下载全都在你的设备上、在本页里完成,页面不会把你的文本或文件发往任何地方。
Base64 能用来隐藏或保护数据吗?
不能。它只是一种编码,不是加密,任何人不需要密钥就能解开,就像本页做的那样。不要用它来保护密码、令牌或个人信息。
为什么解码结果提示不是合法的 UTF-8?
Base64 本身没问题,但这些字节不是 UTF-8 文本。它们可能是图片、压缩文件、GBK 或 Latin-1 等其他编码的文字,或者是加密数据。请用“Base64 转文件”下载,再用合适的程序打开。
和 python、base64 命令有什么不同?
标准和 URL 安全两种 Base64 的编码结果完全相同。解码时,Python 默认的 b64decode 会悄悄丢掉不认识的字符,并且在缺少填充时报错;本页则接受缺少的填充,并把不认识的字符报告出来。macOS 和 Linux 的 base64 命令在换行和部分非法输入上的表现也不一样,请确认你的脚本用的是哪一个。

相关阅读