SomeeLab.tools

Base64 エンコード・デコード

テキストをBase64に変換し、元に戻せます。トークンやクエリ文字列向けのURL-safe出力にも対応。登録不要、ブラウザ上で動きます。

+と/を-と_に置き換え、=のパディングを外します。URLやJWTにそのまま入れても壊れません。

Base64は暗号ではありません

Base64は任意のバイト列を英数字といくつかの記号だけで表す方式です。メール本文やJSONのように、テキストしか通れない経路にバイナリを載せるために作られました。

鍵も秘密もないので、戻すのに何も要りません。パスワードをBase64にして設定ファイルに置いても隠したことにはならず、ひと手間増えただけです。本当に隠す必要があるなら暗号化するか、シークレット管理の仕組みに預けてください。

URL-safeを使う場面

標準のBase64は +/ を使います。どちらもURLの中では別の意味を持つ文字なので、そのままクエリ文字列に入れると値が壊れます。末尾の = パディングも同じです。

URL-safeはこの3点を整えた変種で、+- に、/_ に置き換え、パディングを外します。JWTの3つの部分はまさにこの形式で、OAuthの認可コードやファイル名に使う値もたいていこちらです。URLに入る値ならURL-safe、それ以外は標準を選びます。

長さが増えます

Base64は3バイトを4文字に変えるため、結果は元より約33%長くなります。さらにその前にUTF-8への変換が入ります。日本語は1文字が3バイトなので、10文字の文が30バイトになり、Base64では40文字になります。

画像を data: URLとしてHTMLに埋め込むとき、この増分が効いてきます。小さなアイコンならリクエストを1回減らせる利点が上回りますが、写真をそのまま埋め込むとファイルが太った分だけ初回表示が遅くなります。

デコードできないとき

「Base64ではありません」と出る場合、たいていは文字列が途中で切れているか、前後に引用符や改行が紛れています。このツールは改行や空白を自動で取り除き、URL-safeの文字も受け付けるので、それでも失敗するなら文字列自体が欠けています。

「テキストではなくバイナリとして解釈されます」は、デコードはできたものの結果が読める文字ではないという意味です。画像や圧縮ファイルをBase64にした値なら、これは正常な反応です。