文件与Base64互转工具(支持data URI)

将图片、PDF等任意文件转换为Base64字符串或data URI,也可以将Base64字符串或data URI还原为文件并下载。所有转换均在浏览器内完成,文件不会上传到服务器。

使用小贴士

  • 在“文件 → Base64”模式下可上传任意类型的文件(图片、PDF、音频等),并可分别复制data URI形式和普通Base64字符串。
  • 在“Base64 → 文件”模式下,粘贴以data:开头的完整data URI会自动识别MIME类型;如果只是普通的Base64字符串,请手动选择MIME类型。
  • 所有转换处理都在浏览器内的JavaScript中完成,上传的文件或Base64字符串绝不会被发送到服务器,即使是机密文件也可放心使用。
  • 如果想在CSS或HTML中嵌入小图标,可以直接将data URI形式的输出粘贴到background-image: url(...)<img>标签的src中。
  • 由于Base64编码会使文件体积增大约33%,转换数十MB以上的大文件时浏览器可能会出现卡顿。

常见问题

Base64是一种将二进制数据(图片、音频、可执行文件等任意格式的数据)仅用A~Z、a~z、0~9、+、/这64种可打印ASCII字符表示的编码方式。它不是加密,只是一种让数据能以安全的文本形式传输的转换方式。

data URI是将文件内容以Base64编码的字符串形式直接嵌入URL中的一种格式,例如data:image/png;base64,iVBOR...。由于其中包含MIME类型信息,可以直接填入<img>标签的src属性或CSS的background-image中显示图片。

不会。本工具的转换处理(使用FileReader和Blob进行编码解码)完全在您浏览器内的JavaScript中完成,文件内容或Base64字符串绝不会被发送到服务器。

可以。如果粘贴的内容不是以data:开头的完整data URI格式,会显示MIME类型选择栏,请手动选择原始文件格式(图片、PDF、文本等)后再下载。

Base64会将8位为单位的二进制数据重新编码为6位为单位的字符,因此编码后的数据量约为原来的4/3倍,即增大约33%。这是Base64编码机制本身无法避免的特性。
ツールくん

闲话 ― 为什么Base64会让文件体积增大33%

Base64编码诞生的背景,是电子邮件、JSON、URL等许多传输通道“只能安全处理可打印的ASCII字符”这一限制。如果将图片、可执行文件等任意二进制数据原样发送,可能会因混入控制字符而损坏,于是人们设计出仅用A~Z、a~z、0~9、+、/这64种可打印字符来表示二进制数据的Base64方式。

Base64会将3字节(24位)的二进制数据按每6位切分为4份,分别映射为4个Base64字符。由于要把以8位为单位的二进制数据重新塞进以6位为单位的字符中,编码后的数据量约为原来的4/3倍,也就是增大约33%。这是以文本形式安全传输所必须付出的代价。

这一特性的巧妙应用之一,就是在HTML、CSS中以data:image/png;base64,...的形式直接嵌入小图片的data URI。这样做可以避免为图标等小型资源额外发起HTTP请求,是加快页面加载速度的常用手段。不过由于体积增加约33%且无法利用浏览器缓存,并不适合用于嵌入较大的图片文件。