本文へスキップ
App Museum
English

Base64エンコード・デコードツール

テキストやファイル(画像など)をBase64にエンコード、Base64をテキストやファイルにデコード。data URLとURLセーフ形式(Base64URL)にも対応。UTF-8対応でブラウザ内処理。

最大2MB。選ぶとすぐに変換します。ファイルは送信されず、ブラウザ内で処理されます。

data URLは標準の形式で書くため、「URLセーフ形式」にチェックがある間は選べません。

使い方

  1. 上のテキストエリアに、変換したい文字列またはBase64文字列を入力します
  2. 「エンコード」を押すと、入力した文字列がBase64になります
  3. 「デコード」を押すと、Base64から元の文字列に戻します
  4. 結果の下にある「コピー」で、結果をクリップボードへコピーできます

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
  • URLエンコード・デコードツール

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

    ユーティリティ開発者向けurlencodedecodedeveloperconverter
  • Unicodeエスケープ変換ツール

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

    ユーティリティ開発者向けunicodeescapeunescapeencodedecodejsonzero-width-spaceinvisible-charactersdeveloper