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中加号需要替换等。
常见使用场景
- 小图标内联:将小于4KB的图标转为Data URL嵌入CSS,减少HTTP请求数。
- API认证:HTTP Basic Auth将用户名密码用Base64编码放入请求头。
- 邮件附件:MIME协议要求邮件全部是文本,附件必须Base64编码。
- JWT令牌:JWT的Header和Payload都是Base64Url编码。
技术原理
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;
}
最佳实践
- 处理中文时先编码为UTF-8再转Base64,直接用btoa()会报错。
- URL安全变体用减号替代加号、下划线替代斜杠。
- 小文件(<4KB)适合内联,大文件增加33%体积。
- Data URL格式注意MIME类型匹配。
- 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字符。