任意文件转 Base64
编码所有处理都在浏览器本地完成,数据不上传服务器
把一个文件变成 Base64 文本 —— 拖进来就行,文件不会上传。产出的 data URL(`data:image/png;base64,…`)可以直接粘进 `<img src>`、CSS 的 `url()`,或者 JSON 里,省掉一次请求;小而关键的东西(图标、小字体、加载占位图)常这么用。 ⚠️ 但别把它当成常规做法。Base64 会把体积放大约三分之一,而且它进的是 HTML / CSS,等于关掉了浏览器对那个资源的独立缓存与并行下载 —— 图片稍大一点,页面反而更慢。判断标准很朴素:内联之前先想「这个文件会不会超过几 KB」。 上限设在 4 MB。这不是「算不动」而是「塞不进页面」:4 MB 的文件会变成 5.5 MB 的字符串,作为文本进 DOM 之后浏览器会明显卡住。哈希工具那边能到 512 MB,是因为它的产物永远是固定长度 —— 读多少字节与输出多长无关。真要转更大的文件,命令行的 `base64 -w0 文件名 > 输出.txt` 就够。
功能
- 任意文件(不限类型)拖入即可,输出 Base64 与完整 data URL
- 头条给 data URL,一键复制 —— 可直接粘进 src、url() 或 JSON
- 列出文件名、原始体积、编码后体积、MIME 与实际长度
- MIME 为空时按 application/octet-stream 处理,不猜类型
- 明文说明 Base64 的代价(体积 +1/3、失去独立缓存),而不是只给结果
- 文件不上传,断网也能用
使用方法
- 把文件拖进虚线框
- data URL 出现在顶部,点右侧按钮复制
- 下面的表里能看到体积、MIME 与编码后的长度
- 粘到 `src`、`url()` 或 data 字段里即可
常见问题
- base64 和 data URL 有什么区别?
- Base64 是那段编码后的文本本身,data URL 则是带上了类型信息的完整地址:`data:image/png;base64,` 加上那段文本。粘进 `src` 或 `url()` 需要的是后者 —— 只给 Base64,浏览器不知道这是什么类型。工具两个都给,头条是能直接用的 data URL。
- 为什么不建议把图片都内联成 Base64?
- 三个代价。体积:Base64 比原文件大约三分之一(3 字节变 4 字符)。缓存:内联的资源跟着 HTML / CSS 走,改一个字就要重新下载整块,而独立文件可以单独缓存。并行:内联过后浏览器没法并行拉取那部分。经验判据是「几 KB 以内、且真的会用到」才内联 —— 小图标、1×1 占位图、一两百字节的小字体。大图请照常引用文件。
- CSS 里可以内联多大的字体?
- 字体是最适合内联的一类:它阻塞文字渲染,多一次请求就多一段空白期(FOIT)。但一个中文字体动辄几 MB —— 那种要用子集化(只保留用到的字)之后的内联,而不是整个字体。西文字体通常在 10–30 KB,内联是常见做法。对中文字体来说,子集化比内联重要得多。
- 为什么有 4 MB 的上限?
- 因为 Base64 的产物是文本,要进 DOM 里显示与复制。4 MB 的文件会变成 5.5 MB 的字符串,浏览器渲染这么长的文本已经很吃力了。哈希工具能处理 512 MB 是因为它的产物永远是固定长度的摘要 —— 读多少与输出多长无关。更大的文件用命令行:`base64 -w0 输入 > 输出.txt`。
相关工具
图片转 Base64
网络图片转 Base64 与 Data URL:拖拽、选择或粘贴截图,可按最长边缩放、转成 PNG/JPEG/WebP 并调质量。图片只在浏览器本地处理,绝不上传。
Base64 编解码
编码把文本转成 Base64,或把 Base64 还原成文本,中文与 emoji 都按 UTF-8 正确处理。全部在浏览器本地完成,内容不上传。
Base64 还原文件
编码把 Base64 或 data URL 还原成文件下载,自动识别类型与扩展名,换行、空格、URL-safe 变体与缺失的补齐都能处理。不上传。
URL 编解码
编码把中文、空格与符号转义成 %XX,或把 %XX 还原成文本;整条 URL 与单独的参数值要选对方式,选错不会报错,但链接会打不开。全部在浏览器本地完成。
HTML 实体编解码
编码把 < > & 与引号转成 HTML 实体,也能把实体还原成字符,而且只解一遍:&lt; 得到的是 < 而不是尖括号。全部在浏览器本地完成。
JWT 解析与验签
编码把 JWT 拆成 header、payload、signature,支持用密钥验证 HS256/384/512 签名,并把 exp、nbf 换算成可读时间。全部在浏览器本地完成。