SS ツールボックス
SS ツールボックス
すべてのデータはローカルで処理されます

Base64 エンコード/デコード:テキスト・画像 Data URI・JWT ペイロード

ブラウザで UTF-8 テキストや画像を Base64 に変換し、Base64 をテキストへ戻したり画像としてプレビューしたりできます。中国語・絵文字・改行を含む入力に対応しますが、標準 Base64 のみです。URL-safe 形式や生の JWT セグメントは先に変換が必要で、バイナリは UTF-8 としてデコードされて文字化けします。

変換タイプ
テキスト
Base64
Base64 エンコードプロセスは、任意のバイナリデータを 3 バイト (24 ビット) のグループに分割し、これらの 24 ビットを 4 つの 6 ビットユニットに分割します。各 6 ビットユニットは ASCII 文字にマップされるため、3 バイトのバイナリデータが 4 つの印刷可能な文字に変換されます。欠点はもちろん、ボリュームが元の 4/3 倍になることです。このツールでは、文字エンコーディングに UTF-8 を使用しています。

この Base64 ツールの対応範囲と限界

  1. UTF-8 テキストを双方向変換

    入力時にすぐ変換します。TextEncoder で UTF-8 バイトにしてから Base64 化するため、中国語・日本語・絵文字も正しく出力され、素の btoa が非 Latin-1 で例外を出す問題は起きません。

  2. 画像は Data URI に

    Image に切り替えてファイルを選ぶと data:image/...;base64,... として読み込まれます。その Data URI を Base64 欄に貼ればインライン表示され、無効な内容は壊れた画像ではなく代替メッセージになります。

  3. 標準 Base64 のみ、URL-safe 非対応

    - と _ は拒否されるため、JWT ペイロードや URL-safe トークンは + / に置換が必要です。= パディングの欠落は許容され、空白・タブ・改行は無視されます。

  4. デコードは UTF-8 前提

    バイナリの Base64 は UTF-8 テキストとしてデコードされ、エラーではなく置換文字になります。きれいに往復できるのは UTF-8 テキストだけで、画像などのバイト列はこの方法では復元できません。

  5. ローカル実行、ただし巨大入力で失敗

    何もアップロードされず、1 キー入力ごとに同期変換します。サイズ制限はなく、非常に長いテキストでは全バイトを一度に btoa へ展開するためコールスタック超過が起きることがあります。

Base64 のよくある質問

URL-safe Base64(- と _)に対応していますか?

非対応です。標準の + / のみで、- や _ は InvalidCharacterError になります。- を +、_ を / に置換し、4 の倍数までパディングしてから貼ってください。

JWT のペイロードをここでデコードできますか?

変換後に可能です。ペイロードはパディングなしの URL-safe Base64 で、このページはトークンを分割したり不足文字を補ったりしません。書き換えたセグメントを貼ってください。結果はプレーンテキストで、JSON として解析されません。

ファイルと Base64 の相互変換はできますか?

画像のみで、ファイル方向はアップロードだけです。画像を選ぶと Data URI が得られます。テキストファイルの選択口はなく、デコード結果もダウンロード可能なファイルにはなりません。

中国語や絵文字が使えるのに btoa は普段エラーになるのはなぜ?

TextEncoder で UTF-8 バイトに変換してから btoa を呼び、TextDecoder で戻しています。中文 を素の btoa に渡すと InvalidCharacterError になりますが、このページでは起きません。

バイナリ(非 UTF-8)の Base64 はどうなりますか?

UTF-8 としてデコードされ、任意のバイトは置換文字に変わります。失敗もエラー表示もありません。バイトを保つには画像プレビューか専用のバイナリデコーダを使ってください。

サイズ制限はありますか?アップロードされますか?

アップロードはなく、明示的な上限もありません。入力ごとに同期変換するため、非常に大きな入力で Maximum call stack size exceeded が発生し、数 MB ではタブが固まることがあります。

パディング・空白・不正入力はどう扱われますか?

= の欠落は許容され、atob は空白・タブ・改行を無視します。長さが % 4 == 1 や、アルファベット外の文字があると InvalidCharacterError になり、画面にはエラーが表示されません。

関連ツール
SponsorMindElixir