Base64エンコード・デコードツール
テキストやファイル(画像など)をBase64にエンコード、Base64をテキストやファイルにデコード。data URLとURLセーフ形式(Base64URL)にも対応。UTF-8対応でブラウザ内処理。
最大2MB。選ぶとすぐに変換します。ファイルは送信されず、ブラウザ内で処理されます。
data URLは標準の形式で書くため、「URLセーフ形式」にチェックがある間は選べません。
使い方
- 上のテキストエリアに、変換したい文字列またはBase64文字列を入力します
- 「エンコード」を押すと、入力した文字列がBase64になります
- 「デコード」を押すと、Base64から元の文字列に戻します
- 結果の下にある「コピー」で、結果をクリップボードへコピーできます
URLやファイル名に入れるBase64(Base64URL)を扱うときは、ボタンを押す前に「URLセーフ形式」にチェックを入れます。
画像などのファイルをBase64にするときは、テキストエリアの下の「または、ファイルを選んでBase64にする」でファイルを選びます。ボタンを押さなくても、選んだ時点で結果が出ます。詳しくは下の「ファイルとdata URL」で説明します。
テキストの入力欄は1つで、押したボタンによって変換の向きが決まります。入力を編集するか、「URLセーフ形式」のチェックを切り替えると、テキストから作った前の結果は消えるため、その後でもう一度ボタンを押してください。入力が空のときは何も表示されません。
具体例
入力:
こんにちは
「エンコード」の出力:
44GT44KT44Gr44Gh44Gv
この文字列を入力して「デコード」を押すと、元の「こんにちは」に戻ります。ほかの例も挙げます。
Hello, world!→SGVsbG8sIHdvcmxkIQ==user:pass→dXNlcjpwYXNz😀→8J+YgA==
エンコードの仕組み
Base64は、バイト列を英大文字・英小文字・数字と +、/ の64種類の文字で表す方式です。3バイトを4文字に置き換えるため、結果は元のバイト数のおよそ4/3倍の長さになります。
このアプリは、入力した文字列をまずUTF-8のバイト列にしてからBase64にします。UTF-8ではひらがなや漢字の多くが1文字3バイトになるため、「あ」を10文字入力すると結果は40文字です。半角英数字は1文字1バイトなので、30文字で同じ40文字になります。
元のバイト数が3の倍数でないときは、末尾に = を付けて4文字単位にそろえます。
a(1バイト)→YQ==ab(2バイト)→YWI=abc(3バイト)→YWJj
出力は改行を含まない1行です。76文字ごとに改行を入れるような折り返しは行いません。エンコードでは入力の前後にある空白や改行も1バイトずつ変換されるため、末尾に余分な改行が入っていると結果が変わります。
日本語や絵文字の扱いで起きやすい問題は、ガイド「Base64で日本語・Unicodeを正しく変換する方法」で説明しています。
URLセーフ形式
「URLセーフ形式」にチェックを入れると、Base64URLと呼ばれる形式でエンコード・デコードします。標準のBase64が使う + と / は、URLの中では別の意味を持ちます(+ はクエリで空白として読まれることがあり、/ はパスの区切りです)。Base64URLはこの2文字を - と _ に置き換えた形式で、JWTの各部分などで使われています。末尾の = を付けるかどうかは利用先の仕様によって決まり、このアプリのエンコード結果には付きません(JWTと同じです)。
入力 → チェックなし → チェックありの順に、結果の違いを示します。
sub???>>>→c3ViPz8/Pj4+→c3ViPz8_Pj4-a→YQ==→YQ😀→8J+YgA==→8J-YgA
+ も / も = も出ない入力では、どちらの結果も同じです(abc → YWJj)。
- エンコード: 結果に
=は付きません。=を付けたBase64URLが必要な相手に渡すときは、結果の長さが4の倍数になるまで末尾に=を足してください(YQ→YQ==、YWI→YWI=)。チェックを外すと-と_も+と/に変わるため、チェックを外すのは相手が標準のBase64を求める場合だけです - デコード:
-と_を読み取ります。末尾の=はあってもなくても読み取れます。+か/が入っている入力はエラーになります - チェックなしのデコードは、
-と_をエラーにします。2つの形式を自動で見分けることはしません
チェックを切り替えればデコードできる入力のときは、エラーの文がそのことを知らせます。- と / のように両方の形式の記号が混ざった入力は、どちらの設定でも読み取れません。
ファイルとdata URL
ファイルをBase64にする
「または、ファイルを選んでBase64にする」でファイルを選ぶと、ファイルの中身(バイト列)をそのままBase64にします。結果の上には、ファイル名・元のバイト数・結果の文字数が出ます。たとえば Hello, world! と改行1つだけを書いた14バイトのテキストファイルは、SGVsbG8sIHdvcmxkIQo= の20文字になります。
- 選べるファイルは1つで、大きさは2MBまでです。2MBを超えるファイルと、0バイトのファイルは、エラーの文が出て変換されません
- 結果が20,000文字を超えるときは、先頭の20,000文字だけを表示します。「コピー」は表示していない部分も含めて全体をコピーします
- 「URLセーフ形式」のチェックは、ファイルの結果にもそのまま効きます。ファイルを選んだ後でチェックを切り替えると、ファイルを選び直さなくても結果が書き換わります
- テキストの入力欄を編集するか、「エンコード」「デコード」を押すと、ファイルの結果は消え、ファイルの選択も外れます
data URLの形にする
「data URLの形にする」にチェックを入れると、ファイルの結果の先頭に data:種類;base64, が付きます。HTMLの src 属性やCSSの url() にそのまま書ける形です。PNG画像なら次のように始まります。
data:image/png;base64,iVBORw0KGgo…
- 種類(MIMEタイプ)には、ブラウザがそのファイルについて知らせる値を使います。ブラウザが種類を知らせないファイルでは
application/octet-streamになります - data URLは標準の形式(
+と/、末尾の=あり)で書きます。「URLセーフ形式」にチェックがある間は、このチェックは選べません - このチェックが効くのは、ファイルを選んだときの結果だけです。テキストを「エンコード」した結果には付きません
data URLやバイナリをデコードする
入力の先頭に data:image/png;base64, のような部分が付いていても、そのまま「デコード」を押せます。カンマより後ろだけを取り出す必要はありません。
デコードして得られたバイト列がUTF-8の文字列として読めるときは、これまでどおり文字列を表示します。読めないとき(画像やPDFなどのバイナリ、Shift_JISで書かれた日本語の文字列など)は、文字列の代わりにバイト数とデータの種類を表示し、「ダウンロード」でファイルとして保存できます。
たとえば次の入力は、1×1ピクセルのGIF画像です。
data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
「デコード」を押すと、「42バイト」「データの種類: image/gif」と画像のプレビューが出て、「ダウンロード(decoded.gif)」で保存できます。
- データの種類は、先頭の数バイトから判定します。判定できるのは PNG・JPEG・GIF・WebP・PDF・ZIP・gzip の7種類で、このうち画像の4種類はページ上にプレビューも出ます
- 保存するファイル名は
decoded.に種類ごとの拡張子(png、jpg、gif、webp、pdf、zip、gz)を付けたものです。判定できなかったときはdecoded.binになるため、保存した後で正しい拡張子に変えてください - 先頭のバイトから判定できず、入力がdata URLだったときは、そこに書かれた種類を表示します。どちらもないときは「不明」と表示します
- 元のファイル名はBase64に含まれないため、復元できません
デコードに失敗する場合
デコードでは、入力の先頭に data:…;base64, があればそれを外し、前後の空白を取り除いてからBase64として読み取ります。途中に入った半角空白・タブ・改行は無視され(全角空白はエラーになります)、末尾の = が省かれていても読み取れます。
次の場合はエラーの文が表示され、結果は出ません。
-や_を使うURL用のBase64(Base64URL)を、チェックなしのまま入力した。「URLセーフ形式」にチェックを入れると読み取れます- 「URLセーフ形式」にチェックを入れたまま、
+や/を含む標準のBase64を入力した。チェックを外すと読み取れます data:text/plain,Helloのように、;base64のないdata URLを入力した。カンマより後ろはBase64ではないため、読み取れません- 日本語など、Base64に使えない文字が入っている
- 文字が欠けていて、長さが合わない
元のデータがUTF-8の文字列ではない場合はエラーにならず、上の「data URLやバイナリをデコードする」のとおりダウンロードできる形で表示します。Shift_JISで書かれた日本語の文字列をBase64にしたものも、バイト列がUTF-8として読めないかぎり同じ扱いで、文字列としては表示されません。判断に使うのはバイト列だけで、data URLに書かれた charset は見ません。半角英数字だけの文字列はShift_JISでもUTF-8でも同じバイト列になるため、そのまま文字列として表示されます。
注意点
- Base64は暗号化ではありません。鍵がなくても誰でも元に戻せるため、パスワードや秘密の値を隠す目的には使えません
- ファイルは2MBまでです。Base64にすると元のおよそ4/3倍の長さの文字列になるため、大きなファイルをdata URLとしてHTMLやCSSに埋め込むと、そのぶんページが重くなります
- 文字列として読めたデコード結果を、ファイルとして保存する機能はありません。「コピー」を使ってください
- 変換はブラウザに組み込まれた機能だけで行い、入力した文字列も選んだファイルも外部のサーバーへ渡しません
FAQ
日本語をエンコードすると文字化けしますか?
いいえ。UTF-8のバイト列にしてから変換するため、日本語や絵文字も元の文字列に戻せます。ただし、相手側がUTF-8以外の文字コードで読み取ると文字化けします。
画像やファイルをBase64にできますか?
はい。「または、ファイルを選んでBase64にする」で2MBまでのファイルを選ぶと、その場でBase64になります。「data URLの形にする」にチェックを入れると、data:image/png;base64,… の形で出力します。
Base64から画像やファイルに戻せますか?
はい。Base64(またはdata URL)を入力して「デコード」を押すと、文字列として読めないデータはバイト数と種類を表示し、「ダウンロード」でファイルとして保存できます。PNG・JPEG・GIF・WebPはページ上にプレビューも出ます。
URLセーフなBase64(Base64URL)は扱えますか?
はい。「URLセーフ形式」にチェックを入れると、- と _ を使う形式でエンコード・デコードします。エンコード結果に末尾の = は付かず、デコードは = があってもなくても読み取ります。チェックなしでは + と / を使う標準の形式です。JWTはピリオドで区切った3つの部分からなるため、JWT全体の中身を確認したい場合はJWTデコーダーに貼り付けるほうが手間がかかりません。
末尾の = は必要ですか?
チェックなしのエンコード結果には、元のバイト数が3の倍数でないときに付きます。「URLセーフ形式」のエンコード結果には付きません。デコードでは、どちらの設定でも = を省いた YQ が YQ== と同じく a に戻ります。
デコードに失敗するのはなぜですか?
入力が選んだ形式(標準またはURLセーフ)のBase64として読み取れないためです。上の「デコードに失敗する場合」を順に確認してください。復元されたバイト列がUTF-8の文字列でないときはエラーにはならず、ダウンロードできるデータとして表示します。
入力したデータは保存されますか?
いいえ。エンコード前の文字列も、選んだファイルも、結果も、ページを閉じるか再読み込みした時点で残りません。「ダウンロード」を押したときだけ、デコードしたデータがお使いの端末に保存されます。
- 種別
- ユーティリティ
- カテゴリ
- 開発者向け
- タグ
- base64
- base64url
- data-url
- image
- file
- encode
- decode
- developer
- converter
このアプリに関連するガイド
Base64で日本語・Unicodeを正しく変換する方法
文字列をUTF-8のバイト列へ変換してからBase64化し、日本語や絵文字の文字化けを避ける手順を解説します。
開発者向けbase64unicodeutf-8encoding
関連アプリ

URLエンコード・デコードツール
URLに含める文字列をパーセントエンコード、またはエンコード済み文字列をデコード。: / ? & = を残すURL全体の変換と、空白を + で表すフォーム形式にも対応。ブラウザ内で完結。

HTMLエスケープ・アンエスケープツール
< > & " ' をHTMLの文字参照(< など)に置き換え、文字参照を元の文字に戻します。日本語や記号を数値文字参照にすることもできます。

Unicodeエスケープ変換ツール
日本語や絵文字を \u3042 のようなUnicodeエスケープに変換し、\uXXXX・\u{...}・\UXXXXXXXX を元の文字に戻します。JSON・Java・JavaScript・Pythonの書き方に対応し、ゼロ幅スペースなどの見えない文字や紛らわしい空白だけをエスケープして見つけることもできます。


