{ }JSONKit.tools

Base64 エンコード(オンライン)

任意のテキストを Base64 に変換します。絵文字も非ラテン文字も扱えます。結果を URL や JWT の中で運ぶ必要があるときは「URL 安全」を有効にしてください。

エンコード⇄デコード

テキスト

Base64

入力を待っています…

このツールについて

Base64 は、テキストしか受け付けない経路に任意のバイト列を通すために存在します。HTTP ヘッダー、data URI、メール本文、JSON の文字列などです。このエンコーダーは入力をまず UTF-8 に変換します。非ラテン文字や絵文字がそのまま戻ってくるのはそのためで、ブラウザ自身の btoa() はそれらを端から拒否します。「URL 安全」スイッチは + と / を - と _ に置き換え、= のパディングを落とします。JWT や URL パラメーターが使うのがこの変種です。

使い方

  1. 1エンコードしたいテキストを左に貼り付けるか入力します。
  2. 2結果が URL、ファイル名、JWT に入るなら「URL 安全」を有効にします。
  3. 3コピーを押します。戻す作業は Base64 デコードのページがすぐ隣にあります。

よくある質問

›Base64 にするとデータが大きくなるのはなぜですか?

3 バイトごとに 4 文字の印字可能文字へ符号化するため、出力はおよそ 33% 大きくなります。テキストしか受け付けない経路にバイナリを通すための代償です。

›URL 安全な Base64 とは何ですか?

標準の文字セットは + と / を使いますが、これらは URL 内で独自の意味を持ちます。= のパディングもエスケープが必要です。URL 安全な変種はそれらを - と _ に置き換え、パディングを落とすため、結果をパスやクエリ文字列にそのまま入れられます。JWT が使うのはまさにこの変種です。

›絵文字や非ラテン文字も扱えますか?

はい。テキストはまず UTF-8 として符号化されるため、キリル文字、中国語、絵文字もそのまま残ります。ブラウザの素朴な 1 行 btoa(text) は U+00FF を超える文字があると例外を投げます。

›Base64 は暗号化ですか?

いいえ、そしてこれは重要な点です。Base64 は符号化であって暗号ではありません。鍵なしで誰でも即座にデコードできます。パスワードやトークンを隠す用途に使ってはいけません。

›コマンドラインではどうやりますか?

macOS と Linux では: printf %s "text" | base64。デコードには -d フラグを付けます。Windows の PowerShell では [Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes("text")) が必要です。