Base64 線上編碼解碼

將文字、十六進位位元組或檔案編碼為 Base64,或把 Base64 解碼為可讀文字。支援 Base64URL、MIME 換行以及十多種字元集,所有處理都在瀏覽器本地完成。

完全在瀏覽器中執行,不會上傳任何資料。

使用方法

  1. 貼上要解碼的 Base64,或輸入要編碼的文字。也可以點選「開啟檔案」:內容為 Base64 的檔案會被解碼,其他檔案會被編碼。
  2. 點選「解碼」或「編碼」。工具預設處於解碼模式,結果會隨輸入即時更新。
  3. 按需調整變體(標準或 URL 安全)、填充、換行和文字編碼。
  4. 複製或下載結果,也可以點選交換按鈕,把結果送回輸入框進行反向轉換。

什麼是 Base64?

Base64 是一種把二進位資料轉換為文字的編碼方式,它用 64 個可列印的 ASCII 字元表示任意位元組:A-Z、a-z、0-9、+ 和 /,並用 = 作為填充。藉助 Base64,圖片、金鑰、壓縮檔案等二進位資料可以安全地通過電子郵件、JSON、XML、URL 和 HTML 等只支援文字的渠道傳輸。

編碼時,每次讀取 3 個位元組(24 位),拆成 4 組 6 位的數值。每個 0 到 63 之間的數值對應字母表中的一個字元。如果輸入長度不是 3 的倍數,最後一組會補上一個或兩個 =。因此 Base64 輸出總是比原始資料大約 33%。

Base64 只是編碼,不是加密。任何人都可以解碼,所以不要用它來隱藏密碼或敏感資訊。

Base64 與 Base64URL

標準 Base64 使用的 + 和 / 在 URL 和檔名中有特殊含義。RFC 4648 第 5 節定義的 Base64URL 把它們替換為 - 和 _,並且通常省略填充。JSON Web Token、OAuth 以及需要放進 URL 的場景都使用 Base64URL。本頁的解碼器會自動識別這兩種格式。

標準 Base64Base64URL
第 62、63 個字元+ /- _
填充需要 =可選,通常省略
可直接用於 URL 和檔名否是
典型用途電子郵件(MIME)、data URI、JSON、PEM 金鑰JWT、OAuth、URL 參數

Base64 的常見用途

  • 郵件附件。MIME 會把附件編碼為 Base64,並按每行 76 個字元換行。使用「換行」選項即可生成這種格式。
  • 嵌入圖片和檔案。Data URI 可以把小圖片、字型或圖示直接寫進 HTML 和 CSS,詳見 圖片轉 Base64 和 Base64 轉圖片。
  • API 與配置。JSON 沒有二進位型別,因此介面通常用 Base64 字串傳輸檔案、簽名和金鑰,Kubernetes Secret 中的值也以 Base64 儲存。
  • 身份驗證。HTTP Basic 認證把 使用者名稱:密碼 編碼為 Base64 傳送,JSON Web Token 則由三段 Base64URL 組成。
  • 證書與金鑰。PEM 檔案就是按每行 64 個字元換行的 Base64 編碼 DER 資料。

各程式語言中的 Base64

語言編碼解碼
JavaScript(瀏覽器)btoa(binaryString)atob(base64)
Node.jsBuffer.from(str).toString('base64')Buffer.from(b64, 'base64').toString()
Pythonbase64.b64encode(data)base64.b64decode(data)
PHPbase64_encode($str)base64_decode($b64)
JavaBase64.getEncoder().encodeToString(bytes)Base64.getDecoder().decode(b64)
C#Convert.ToBase64String(bytes)Convert.FromBase64String(b64)
Gobase64.StdEncoding.EncodeToString(b)base64.StdEncoding.DecodeString(s)
Shellbase64 file.binbase64 -d file.txt

瀏覽器中的 btoa 只接受 U+00FF 以內的字元。要編碼中文等 Unicode 文字,需要先用 TextEncoder 等方式轉換為 UTF-8 位元組;本工具預設就按 UTF-8 編碼文字。

不止 Base64

Base64.is 還支援完整的 Base-N 編碼家族:Base32、Base58、Base62、Base85、Ascii85、basE91、Base45、十六進位 和 二進位。如果不確定一段字串用的是哪種編碼,可以試試 編碼識別工具,或用 全部編碼 一次檢視所有結果。

編碼規格

字母表A-Z a-z 0-9 + /
輸出體積每 3 位元組輸出 4 個字元(約 133%)
填充用 = 補足到 4 的倍數
標準RFC 4648 第 4 節
區分大小寫是

編碼範例

輸入 (UTF-8)輸出
Hello, World!SGVsbG8sIFdvcmxkIQ==
Base64.isQmFzZTY0Lmlz
你好5L2g5aW9

常見問題

我的資料會上傳到伺服器嗎?

不會。編碼和解碼完全由瀏覽器中的 JavaScript 完成,您輸入的文字和檔案不會離開您的裝置,頁面載入後即使斷網也能繼續使用。

為什麼解碼後的文字是亂碼?
可能是資料本身是二進位(例如圖片或壓縮檔案)而不是文字,也可能是用其他字元集編碼的。可以嘗試切換「文字編碼」(例如 GBK),選擇十六進位輸出,或使用 Base64 轉檔案 下載並識別這些位元組。
結尾的等號是什麼意思?

等號是填充字元。Base64 以 4 個字元為一組,當輸入長度不是 3 位元組的倍數時,用 = 補齊最後一組。一個 = 表示最後一組編碼了 2 個位元組,兩個 = 表示只編碼了 1 個位元組。

編碼後資料會變大多少?

Base64 把每 3 個位元組變成 4 個字元,所以輸出比輸入大約 33%;如果開啟換行,還會多出換行符。

Base64 是加密嗎?

不是。Base64 只改變資料的表示形式,沒有金鑰,任何人都能解碼。保護敏感資訊請使用 AES、TLS 等真正的加密手段。

全部 Base64 與編碼工具