上传文件
  1. base64hub
  2. 文本工具
  3. 大小计算器

Base64 大小计算器

输入以字节、KB 或 MB 为单位的大小,或拖入一个文件,即可得到带填充和不带填充、含换行和 data URI 前缀时的精确 Base64 长度。反向模式可以把 Base64 长度换算回字节数。

免费 无需注册,不限次数 本地 不上传任何内容 精确 计入填充、换行和前缀 更新于 2026年10月27日
只读取大小,不会打开文件内容。

在你的浏览器中处理。此页面无法将你的数据发送到任何地方: 我们如何确认

如何计算 Base64 大小

  1. 保持选中 字节 → Base64 长度,输入 原始大小 并选择 单位。在 单位 下选择 1 KB = 1000 B 或 1 KiB = 1024 B,与你的大小的计量方式保持一致。
  2. 也可以把文件拖到框里。只读取它的大小,绝不会打开文件内容。
  3. 查看表格:带填充和不带填充的长度、百分比形式的额外开销、自定义换行(设置 行长度 和 换行符)、MIME 邮件行、PEM 正文、带文件 MIME 类型的 data: URI,以及带引号的 JSON 字符串。
  4. 反方向计算时,切换到 Base64 长度 → 字节,输入长度,说明是否包含换行,并选择 填充 情况:已知、未知(0–2 个)或无。直接粘贴 Base64 本身可以得到精确结果。

表格下方的实时公式会用你自己的数字重算一遍,方便写进代码注释或工单。

计算公式,以及为什么是 33%

Base64 把每 3 个字节变成 4 个字符,每个字符承载 6 位。最后一组用 = 补足 4 个字符,所以:

padded   = 4 × ⌈n ÷ 3⌉
unpadded = ⌈4n ÷ 3⌉
decoded  = (characters × 3 ÷ 4) − number of "=" signs

对于大输入,体积固定增加 33.3%。对于很小的输入,填充占了大头:1 个字节变成 4 个字符,额外开销达到 300%。下表由计算器运行的同一段代码生成:

原始大小带填充 Base64无填充MIME(76 + CRLF)PEM(64 + LF)
1 字节4244
100 字节136134138138
1,000 字节(1 KB)1,3361,3341,3701,356
1,024 字节(1 KiB)1,3681,3661,4021,389
1,048,576 字节(1 MiB)1,398,1041,398,1021,434,8961,419,949
5,000,000 字节(5 MB)6,666,6686,666,6676,842,1066,770,834

换行只计算行与行之间的,最后一行后面没有。有些编码器(比如 Python 的 base64.encodebytes)会在包括最后一行在内的每一行末尾加 \n,这样会多一个换行。如果是 data URI,还要加上前缀:data:image/png;base64, 是 22 个字符。

围绕大小限制做规划

值得在出错之前检查的几种典型限制:

  • 请求体大小限制。 如果某个接口接受 10,000,000 字节,而文件放在 JSON 字段里,那么文件最多约 7,500,000 字节,还要减去 JSON 的其余部分。切换到反向模式,输入限制值,再减去你的字段名即可。
  • 数据库列和环境变量。 VARCHAR(255) 最多能放 189 字节数据的 Base64;190 字节就已经需要 256 个字符。
  • 电子邮件。 MIME 附件按 76 字符加 CRLF 换行,所以总共会增大约 37%。因此,邮件大小限制只能容纳约为其 73% 大小的文件。详情见 邮件中的 Base64。
  • HTML 或 CSS 中的 data URI。 每张内联图片都比文件本身大三分之一,而且无法单独缓存。Data URI 性能 解释了什么情况下它仍然划算。

在代码中计算 Base64 长度

任何语言都可以在不做编码的情况下算出长度:

import math

def b64_len(n, padded=True):
    return 4 * math.ceil(n / 3) if padded else math.ceil(4 * n / 3)

print(b64_len(1048576), b64_len(1048576, padded=False))

输出是 1398104 1398102。在 JavaScript 中,带填充的长度是 4 * Math.ceil(n / 3)。要检查一个现成的字符串,去掉换行后,len(s) * 3 // 4 - s.count("=") 就是解码后的大小。如果反向模式提示长度不可能成立,比如除以 4 余 1,说明字符串已损坏:用 Base64 校验工具 找出问题在哪里。

常见问题

Base64 长度的计算公式是什么?

带填充时,n 个字节对应 4 × ⌈n ÷ 3⌉ 个字符;不带填充时是 ⌈4n ÷ 3⌉。换行、data: 前缀或 JSON 引号另外再加。

从 Base64 解码后,文件有多大?

取 Base64 字符数(不含换行),乘以 3,除以 4,末尾每有一个 = 就再减一个字节。一个 1,400,000 字符的字符串,根据填充不同,解码后在 1,049,998 到 1,050,000 字节之间。

API 请求限制是 10 MB,最多能发送多大的文件?

如果限制是 10,000,000 字节,大约是 7.5 MB,因为 10,000,000 × 3 ÷ 4 = 7,500,000,还要减去字符串周围的 JSON 字段和请求头。在反向模式中把限制值当作长度输入,就能得到精确数字。

gzip 能抵消 Base64 的额外开销吗?

在传输层面基本可以。gzip 能把 Base64 压回大约等于原始字节的大小:1,000,000 个随机字节编码成 1,333,336 个 Base64 字符,gzip 后是 1,009,976 字节。但按文本本身计算的限制,比如 JSON 字段、数据库列或未压缩的请求,仍然要承担整整多出的三分之一。