Base64エンコーダー・デコーダーの使い方 – オンラインでデータをエンコード・デコード
Base64エンコーディングは、ほぼ全てのWebアプリケーションの背後で目に見えずに動作している技術の一つですが、その仕組みや正しい使い方を完全に理解している開発者は少数です。その核心として、Base64は任意のバイナリデータ(画像、PDFファイル、音声バイト、暗号化出力)を64個の表示可能なASCII文字(A-Z、a-z、0-9、+、/、パディング用の=)からなる文字列に変換するバイナリ-テキストエンコーディング方式です。目的はシンプルです。多くのシステム、プロトコル、データ形式はテキストのみを処理するよう設計されており、バイナリデータはそれらを壊してしまいます。メールの添付ファイルは7ビットASCIIテキストを期待するSMTPサーバーを通過します。Base64がギャップを埋めます。JSON APIは生のバイナリバイトを埋め込めません。Base64がJSONセーフな文字列にエンコードします。HTMLとCSSのデータURIを使用すると、別のHTTPリクエストなしで小さな画像をマークアップに直接埋め込めます。Base64がそれを可能にします。当サイトの無料オンラインBase64エンコーダー・デコーダーは、テキスト→Base64とBase64→テキストの両方の変換を処理し、画像や文書をエンコードするためのファイルアップロードをサポートし、URLセーフBase64(URLとファイル名で使用するために+を-に、/を_に置き換える)を自動検出し、全ての操作を完全にブラウザ内で実行します。データがサーバーにアップロードされることは一切ないため、専有ファイル、機密文書、個人データに対して安全です。しかしBase64を理解するにはその制限を知る必要があります。これは暗号化ではなくエンコーディングであり(誰でも即座にデコードできます)、データサイズが約33%増加し、約1MBを超えるファイルには実用的ではありません。この記事では、Base64が実際に何であるか、いつ使うべきか、開発者が犯す最も一般的な間違いを回避する方法を説明します。
Base64エンコーダー/デコーダー
無料 · 登録不要
ステップバイステップガイド
目的に応じてエンコードモードかデコードモードを選択する
「エンコード」タブを選択してプレーンテキストまたはバイナリファイルデータをBase64文字列に変換します。エンコードプロセスは、入力を取得して6ビットグループに分割し、Base64インデックステーブル(A=0、B=1、...、Z=25、a=26、...、z=51、0=52、...、9=61、+=62、/=63)に従って各グループを64個のASCII文字の1つにマッピングします。入力長が3バイトの倍数でない場合、出力長を4文字の倍数にするために1つまたは2つの=パディング文字が追加されます。「デコード」タブを選択してプロセスを逆にし、Base64文字列を元のテキストまたはバイナリ形式に戻します。エンコードの場合、入力フィールドにプレーンテキストを直接入力または貼り付けるか、ファイル(画像、PDF、文書、音声ファイルなど)をアップロードできます。ファイルはブラウザ内でFileReader APIを使用してローカルに読み取られ、どこにも送信されません。デコードの場合、変換したいBase64文字列を貼り付けます。ツールは入力が標準Base64(+と/を使用)かURLセーフBase64(-と_を使用)かを自動検出し、手動設定なしで両方のバリアントを処理します。
入力とオプション設定を行う
テキストをエンコードする場合、文字列を入力エリアに入力または貼り付けます。ツールはUnicode文字、絵文字、特殊記号を含むあらゆるテキストを受け入れます。ファイルをエンコードする場合、ファイルピッカーを使用してアップロードします。ツールは1MBまでのファイルを受け入れます。これは、出力が入力より約33%大きくなることを考慮したBase64エンコーディングの実用的な上限です。デコードの場合、Base64文字列を入力フィールドに貼り付けます。ツールは貼り付けられた文字列から空白や改行を自動的に除去するため、他のツールからの複数行のBase64出力を前処理なしで貼り付けられます。URLセーフ出力が必要な場合(URL、JSON Web Token、ファイル名で使用するため)、URLセーフトグルを有効にします。これにより標準の+文字が-に、/が_に置き換えられ、オプションで=パディングが省略されます(=はURLクエリ文字列で特別な意味を持つため)。入力と出力の両方の文字数がリアルタイムで表示されるため、エンコード時の予想される33%のサイズ増加を確認し、デコード時にデコードされたサイズが期待と一致することを確認できます。
出力をコピーするかデコードされたファイルをダウンロードする
エンコード後、「コピー」をクリックして完全なBase64文字列をクリップボードにコピーします。出力はデフォルトで単一の連続文字列(改行なし)で、JavaScriptのbtoa()関数やbase64コマンドラインユーティリティから得られるものと一致します。デコードされたテキスト出力の場合、元の文字列が表示されコピー可能です。デコードされたバイナリファイル(画像、PDFなど)の場合、デコードされた出力をテキストエディターに貼り付けないでください。バイナリバイトは文字化けした文字として表示されます。代わりに、「ファイルとしてダウンロード」ボタンを使用して、デコードされたバイナリデータを正しい拡張子の適切なファイルとして保存します。ツールは利用可能な場合に元のMIMEタイプ情報を保持するため、デコードされたPNG画像は任意の画像ビューアーで正しく開く.pngファイルとしてダウンロードされます。データURIを扱う開発者のために、ツールは適切なMIMEタイププレフィックス(例:data:image/png;base64,)を先頭に付加できるため、完全なデータURIをHTML src属性やCSS url()値に直接コピーできます。JWT検査の場合、JSON Web Tokenの2番目のセグメント(1つ目と2つ目のドットの間のペイロード)を貼り付けて、トークンのクレームをデコードして検査します。
ヒントとベストプラクティス
Base64エンコーディングはデータサイズを正確に33.3%(4/3比)増加させます。3バイトのバイナリ入力ごとに4バイトのBase64出力が生成されます。150KBの画像は200KBのBase64文字列になります。100KBを超えるファイルでは、サイズペナルティがほぼ常に埋め込みの利便性を上回ります。データURIの代わりに通常のファイルURLを使用してください。
Base64は暗号化ではなくエンコーディングです。Base64文字列を見た人は誰でも即座にデコードできます。キー、パスワード、秘密はありません。パスワード、APIキー、機密ユーザーデータの保護にBase64を決して使用しないでください。セキュリティが重要な場合は、AES-256-GCMまたは類似の認証付き暗号化アルゴリズムを使用し、その後オプションで暗号化されたバイナリ出力をテキストセーフな保存や転送のためにBase64エンコードしてください。
JWT(JSON Web Token)の場合、各セグメント(ヘッダー、ペイロード、署名)は独立してBase64URLエンコードされています。形式はheader.payload.signatureで、各部分がドットで区切られています。中央のセグメントをデコーダーに貼り付けて、JWTライブラリなしでトークンのクレーム(ユーザーID、有効期限、発行者、スコープ)を検査できます。
HTMLやCSSにデータURIとして画像を埋め込む場合、常に正しいMIMEタイプを指定してください。PNG画像にはdata:image/png;base64,、JPEGにはdata:image/jpeg;base64,、SVGにはdata:image/svg+xml;base64,を使用します。誤ったMIMEタイプはブラウザがバイナリデータを誤って解釈し、壊れた画像を表示する原因となります。SVGの場合は、Base64の代わりにテキストベースのdata:image/svg+xml,形式の使用を検討してください。そちらの方が小さく、人間が読めます。
URLセーフBase64は、+文字を-に、/を_に置き換えて、エンコードされた文字列をURL、クエリ文字列パラメータ、ファイル名でパーセントエンコーディングなしで安全に使用できるようにします。標準の+と/はURLコンテキストで特別な意味を持ちます(+はクエリ文字列でスペースを表し、/はパスセパレータです)。エンコードされたデータをURLに埋め込む場合は常にURLセーフBase64を使用してください。
1MBを超えるファイルをBase64エンコードしないでください。その閾値を超えると、33%のサイズ増加とブラウザのメモリオーバーヘッドによりエンコードが遅くなり、数十万文字の扱いにくい文字列が生成されます。大きなファイルの場合は、代わりにmultipart/form-dataアップロード、直接ファイルURL、またはクラウドストレージのオブジェクトURLを使用してください。
16進エンコーディング(Base16)はBase64の代替で、16文字(0-9、A-F)を使用し、データサイズが2倍になります(Base64の33%に対して100%のオーバーヘッド)。バイナリデータのコンパクトなテキスト表現が必要な場合はBase64を使用してください。デバッグ用にバイトレベルの可読性が必要な場合は16進を使用してください。各バイトが正確に2つの16進文字になり、個々のバイトの検査が容易になります。
Base64文字列の末尾の=パディング文字は、元のデータで最後の3バイトブロックのうち何バイトが不足していたかを示します。1つの=は2バイトのパディング(入力がフルブロックより1バイト不足)を意味します。2つの==は4バイトのパディング(入力が2バイト不足)を意味します。=のないBase64文字列は、入力長が正確に3で割り切れたことを意味します。パディングはデコードに数学的に必要ですが、デコーダーが正しい長さを推測する場合、URLセーフコンテキストでは省略できます。
メールシステムでは、Base64はMIME(Multipurpose Internet Mail Extensions)標準によって、テキストベースのメール形式内でバイナリ添付ファイルをエンコードするために使用されます。メールに画像やPDFを添付すると、メールクライアントはファイルをBase64エンコードし、受信者のクライアントに元のファイルタイプとデコード方法を伝えるMIMEヘッダーで包みます。これは、生のメールソースでContent-Transfer-Encoding: base64ヘッダーと共に見られるのと同じBase64エンコーディングです。
よくある質問
Base64エンコーディングはバイナリデータとテキストのみのシステムの間のギャップを埋めます。データURI、メール添付ファイル、JWTトークン、APIペイロードをWeb全体で支えています。その仕組み、制限、セキュリティ上の影響を理解することで、より効果的な開発者になれます。当サイトの無料ツールは標準とURLセーフの両方のバリアントでエンコードとデコードを処理し、完全にブラウザ内で実行され、テキストとファイルに対応します。次のデータURI、JWT検査、バイナリエンコードタスクのためにブックマークしてください。今すぐお試しください。任意のテキストを貼り付けるか、任意のファイルをアップロードして、Base64出力を即座にご確認ください。
このツールを無料で試す →open_in_new