Base64 编码解码工具

免费在线Base64编码解码,支持文本和图片互转,数据本地处理

📝 文本编码/解码
🖼 图片转Base64
原文 0 字符
Base64 0 字符
📁

点击选择图片或拖拽到此处

支持 PNG、JPG、GIF、SVG、WebP

Ad Space

Base64编码解码完全指南

什么是Base64编码解码?

Base64是一种将二进制数据转换为ASCII文本字符的编码方案,诞生于MIME标准时代。它使用64个可打印字符来表示任意二进制数据,每3个字节编码为4个字符。在前端开发中,Base64无处不在:Data URL、JWT令牌、内联图片、API认证头都离不开它。理解Base64能帮你避免常见坑——编码后体积膨胀33%、URL中加号需要替换等。

常见使用场景

技术原理

Base64的核心原理:将每3个字节(24位)分为4组,每组6位映射到字符表。当输入长度不是3的倍数时用等号填充。编码后字符串长度一定是4的倍数。

function base64Encode(str) {
  const chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
  const bytes = new TextEncoder().encode(str);
  let result = "";
  for (let i = 0; i < bytes.length; i += 3) {
    const b1=bytes[i], b2=bytes[i+1]||0, b3=bytes[i+2]||0;
    result += chars[b1>>2] + chars[((b1&3)<<4)|(b2>>4)];
    result += (i+1<bytes.length) ? chars[((b2&15)<<2)|(b3>>6)] : "=";
    result += (i+2<bytes.length) ? chars[b3&63] : "=";
  }
  return result;
}

最佳实践

  1. 处理中文时先编码为UTF-8再转Base64,直接用btoa()会报错。
  2. URL安全变体用减号替代加号、下划线替代斜杠。
  3. 小文件(<4KB)适合内联,大文件增加33%体积。
  4. Data URL格式注意MIME类型匹配。
  5. Base64只是编码不是加密,不要用于保护敏感信息。

深入理解

Q:Base64Url和Base64区别?

Base64Url用减号和下划线替代加号和斜杠,省略等号填充。JWT标准使用Base64Url。

Q:为什么体积变大?

每3字节变4字符,膨胀33%。

常见问题

什么是Base64?
Base64是一种基于64个可打印字符来表示二进制数据的编码方式。它将每3个字节(24位)转换为4个Base64字符。常用于在文本环境中传输二进制数据,如电子邮件附件、API认证令牌、Data URL等。
Base64编码是加密吗?
不是。Base64是编码,不是加密。它只是改变了数据的表示方式,任何人都可以轻松解码还原。不要用Base64来保护敏感信息,它不能提供任何安全性。
为什么图片要转Base64?
图片转Base64后可以内嵌在HTML/CSS/JSON中,减少HTTP请求数。常见场景:小图标内联、邮件中嵌入图片、API传输图片数据。但Base64编码会使数据增大约33%,不适合大图片。
Base64编码后数据变大了多少?
Base64编码后的数据约为原始数据的133%(增大约33%)。因为3个字节的二进制数据会被编码为4个Base64字符。