BrowserDevTools

編碼/解碼工具箱

一行貼上一個值,再挑選編碼方式:你會拿到一行一列的結果、逐行的錯誤(而不是默默幫你「猜一個最好的」)、CSV/JSON 匯出——以及做同一件事的命令列,讓你能在 CI 裡重複執行。

3 行 · 0 個錯誤

對應的命令列

printf '%s' 'Zm9vYmFy' | base64 -d

已經幫你加好引號,可以直接貼進終端機或 CI。這裡用 `printf` 而不是 `echo`,因為 `echo` 會把反斜線與結尾換行弄亂。

值只在這個分頁裡處理——不上傳、沒有分享連結。不過,你貼上的 token 還是請當成機密看待。

結果

✓ 轉換完成,沒有錯誤。

#輸入輸出
1Zm9vYmFyfoobar
2aGVsbG8gd29ybGQ=hello world
35L2g5aW977yM5LiW55WM你好,世界

提醒

  • 不會上傳任何東西:每一次轉換都是這個分頁裡的字串運算。
  • 解碼是嚴格的:無效的輸入會逐行回報,而不是偷偷修補。
  • 「解碼」是還原編碼——不是解密。雜湊、HMAC、AES-GCM 與 TOTP 都在搭配的密碼學工具箱裡。

為什麼是一個工具箱,而不是十二個頁面

「編碼」是個早就被解決的問題,搜尋結果也反映了這一點:每一種編碼各有一個頁面,每個頁面就是一個輸入框,給你一個答案。它們沒給你的,正是真正吃掉時間的那件事——把它套用到四十列資料上,然後向同事(或 CI)交代這個字串究竟是怎麼產生的。

所以這個頁面刻意做成一項批次工作的樣子,而不是單一轉換器:

全部都在你的分頁裡執行:不上傳任何東西、沒有分享連結,你貼上的任何值都不會送到伺服器——這對大家真正想在這裡解碼的字串(token、cookie、payload 片段)來說很重要。兩個誠實的限制:「解碼」指的是還原編碼,而不是解密任何東西;而這個頁面刻意不做位元組層級的工作——雜湊、HMAC、AES-GCM 與 TOTP 都在搭配的密碼學工具箱裡,因為它們需要 Web Crypto,而且是非同步的。

常見問題

會上傳任何東西嗎?
不會。每一次轉換都是你瀏覽器分頁裡的字串運算。沒有後端端點、沒有記錄,也沒有分享連結——你可以自己在 Network 面板確認。
可以解碼 JWT 或 cookie 嗎?
JWT 就是三段 Base64URL:把 payload 那一段貼進來、選好 Base64URL,你就會拿回 JSON。專門的 JWT 批次解碼器會再往上加一層 claim 分析(exp、alg、安全性提醒)——這個頁面是原始的編碼層。
為什麼解碼有時候會失敗?
因為那份輸入真的不是那種編碼。Base64 會拒絕字母表之外的字元與不可能的長度;hex 會拒絕奇數個位數;URL 解碼會拒絕後面沒有接兩個 hex 位數的「%」;不是有效 UTF-8 的文字會被退件,而不是顯示成取代字元。大聲失敗正是這個功能——偷偷修補只會生出一個看起來正確的錯誤值。
兩種 URL 編碼差在哪裡?
encodeURIComponent 會跳脫所有非 unreserved 的字元,所以適合用在查詢字串的值上。encodeURI 會保留結構字元(/、?、&、=),所以適合用在整條 URL 上。選錯就是查詢參數被雙重編碼的經典原因。
能處理多位元組字元與 emoji 嗎?
可以。Base64、hex 與 binary 都是在 UTF-8 位元組上運作,所以中文與 🚀 都能正確往返;\uXXXX 跳脫序列對星際平面字元會產生代理對,就跟 JavaScript 原始碼的做法完全一樣。唯一的但書是:一組編碼/解碼只有在解出來的位元組是有效 UTF-8 文字時才可逆。