Base64をブラウザ内で変換する
UTF-8文字列やファイルをStandard Base64・Base64URL・Data URLへ変換し、Base64からテキストやファイルへ戻せます。入力内容は変換APIへ送信されません。
Base64 Encoder / Decoderを開く結論:Encode前とDecode後の文字コードをUTF-8へ揃える
日本語StringをTextEncoderでUTF-8 Byte列へし、そのByte列をBase64化します。Decode時はBase64からByte列へ戻し、TextDecoderのUTF-8でStringへ復元します。
Base64 Text自体はASCIIでも、元Byte列をShift_JISやLatin-1として誤解釈すれば文字化けします。
元データを残したまま、形式、文字コード、Padding、変換結果を順番に確認してください。
文字列とByte列の境界を確認する
JavaScript StringはUnicode文字を保持しますが、btoaは各Code Unitが1Byteに収まるBinary Stringを前提とします。日本語や多くのEmojiはその前提を満たさず、InvalidCharacterErrorになります。
現ツールはTextをUTF-8として扱います。Shift_JISやEUC-JPの既存Base64を直接Textへ戻す文字コード選択機能はないため、Binaryとして保存し対応環境でDecodeします。
| 確認対象 | 見る内容 | 対応 |
|---|---|---|
| 元String | 日本語・Emoji・Accent | TextEncoder UTF-8 |
| Encode | Byte列を入力 | Base64化 |
| Decode | Base64からByte列 | TextDecoder UTF-8 |
| 既存Data | 元Encoding不明 | Binaryとして調査 |
Base64 Encoder / Decoderで確認する手順
- EncodeとStandard Base64を選びます。
- こんにちは😀などの文字列を入力します。
- 変換後のBase64をCopyし、Decodeへ切り替えます。
- 元の日本語・Emojiと完全一致することを確認します。
現ツールはTextEncoder・TextDecoderを使うため、日本語やEmojiをUTF-8で往復できます。
変換できない場合の切り分け
文字化けしたTextを再Encodeして直そうとせず、元Byte列と誤って使った文字コードを特定します。
UTF-8 Byte列をLatin-1としてString化した後に再保存すると、元Byte列まで変わる場合があります。元Base64を保持して異なるEncodingで検証します。
- btoaへUnicode Stringを直接渡していないか
- Decode後のByte列をUTF-8として読んだか
- 元DataがShift_JIS等ではないか
- 途中でURL DecodeやJSON Escapeが入っていないか
現行のBase64 Encoder / Decoderで扱える範囲
DevelopToolsは入力をブラウザ内で処理します。UTF-8文字列のStandard Base64・PaddingなしBase64URLへのEncode、両形式とBase64形式Data URLのDecode、空白・改行除去、Padding補完、ファイルのBase64・Data URL化、Base64からファイルへの復元、対応画像のPreview、Copy、Download、Byte数と増加率の表示に対応しています。入力内容、変換結果、ファイル名を履歴やLocalStorageへ保存せず、変換APIへ送信しません。
| 分類 | 現行ツールの動作 |
|---|---|
| 文字列 | TextEncoderでUTF-8 Byte列へ変換し、Standard Base64またはPaddingなしBase64URLへEncode |
| Decode | 空白・改行を除去し、URL-safe文字を判別して不足Paddingを補完。不正文字・長さ・Paddingを検査 |
| Data URL | base64指定のPrefixとPayloadを分離し、MIME Typeを復元。Percent Encode型Data URLは対象外 |
| ファイル | 利用者が選択したFileをByte列としてEncode。Decode後は指定MIME Type・File名で保存 |
| 表示 | UTF-8でないBinaryは無理に文字化せずFile保存を案内。PNG・JPEG・GIF・WebP・SVGはPreview可能 |
Base64を暗号化・Hash・署名検証と混同しない
Base64は暗号化ではありません。Byte列をASCII文字で表現する可逆的なEncodingで、Decoderがあれば元へ戻せるため、Password、API Token、Cookie、個人情報を秘密にする手段にはなりません。機密性には適切な暗号化と鍵管理、Password保存には専用のPassword Hash、改ざん検出には署名やMACなど用途に合う仕組みが必要です。
JWTのHeader・PayloadをBase64URL Decodeして読めても、Signature、有効期限、Issuer、Audienceが正しいとは判断できません。Basic認証のCredentialもBase64表現に過ぎないため、実通信ではHTTPSを使い、記事・Test・ScreenshotにはUSERNAME、PASSWORD、SAMPLE_TOKENなどのDummy値だけを使用します。
実Credentialや顧客データを変換する必要がある場合も、共有端末・Clipboard履歴・画面共有・保存先を確認してください。
仕様とWeb APIは一次資料で確認する
Alphabet、Padding、Base64URLはRFC 4648、HTTP Basic認証はRFC 7617、JWTのBase64URLはJOSE関連RFCを基準にします。JavaScriptのbtoa・atob、TextEncoder・TextDecoder、Uint8Arrayの対応状況はMDNと利用ブラウザの互換表を確認してください。
具体例:こんにちは😀をUTF-8でRound Tripする
日本語とSupplementary PlaneのEmojiを含むTextで、文字数ではなくUTF-8 Byte数も確認します。
Encode結果をDecodeすると、Code Pointを含めて元のこんにちは😀へ戻ります。
- 元Textを別欄へ控える
- UTF-8としてBase64 Encodeする
- 結果をBase64 Decodeする
- 元Textと一文字ずつ比較する
見た目が似たUnicode文字やNormalization差もあるため、必要ならCode Point単位でも比較してください。
よくある質問
- Base64は暗号化ですか?
- いいえ。Byte列を文字列として表すEncodingで、元データへ戻せます。PasswordやTokenをBase64にしただけでは保護できません。
- 入力した文字列やファイルはサーバーへ送信されますか?
- Base64変換は利用中のブラウザ内で行われます。入力内容・結果・ファイル名を変換API、履歴、LocalStorageへ保存する処理はありません。