Base64 Encoder and Decoder

A free online Base64 encoder and decoder that quickly encodes and decodes Base64 with convenient features like UTF-8 support, secure copy, and clear.

エンコード(テキスト → Base64)

デコード(Base64 → テキスト)

使用方法

Base64 は、バイナリデータを ASCII 文字にエンコードして送信・保存可能にします。サイズは約33%増加します。
エンコード:プレーンテキストを Base64 に変換し、より安全に転送します。
デコード:Base64 文字列から元のテキストを復元します。

機能

  • UTF-8 セーフ:非ASCII文字を正しく処理(encodeURIComponent/unescape を使用)。
  • URLセーフ対応:一键で + / → - _ に変換、必要に応じてパディング = を削除可能。
  • デコード前処理:空白文字の無視、URLセーフ形式の自動復元、= の自動補完に対応。
  • リアルタイムインタラクティブ:入力時に自動処理、長さと増加率の統計を表示。
  • 使いやすさ:コピーが簡単、結果同士で相互入力可能、キーボード操作対応、モバイル対応。
  • テーマ一貫性:Tailwind の dark: クラスを使わず、DaisyUI テーマのみで構築。

簡単な例

元のテキスト:
Hello, World!
Base64:
SGVsbG8sIFdvcmxkIQ==

Base64 とは

Base64 は、バイナリデータを ASCII テキストにエンコードする方式で、画像やファイルの内容を JSON、XML、HTTP などのテキストプロトコルで転送する際によく使用されます。

これは 3 バイトを 4 文字の表示可能な文字にマッピングし、通常約 33% のサイズ増加を引き起こします。

標準 Base64 は A–Z、a–z、0–9、+、/ およびパディング文字 = を使用します。URL セーフ版では、+ と / を - と _ に置き換えて、URL 内でのエスケープ問題を回避します。

主な利用シーン

  • 画像や小さなファイルを Data URI 形式で埋め込む。
  • 前方端と後方端の間でバイナリデータ(暗号化された暗号文や圧縮ストリームなど)を転送する。
  • テキストを表示可能に変換し、エンコード不整合や非表示文字の問題を回避する。

よくある質問と注意点

  • 文字セット:ウェブ環境では、テキストをまず UTF-8 で処理してください(本ツールでは既に組み込まれています)。
  • URL セーフ:URL パラメータやパスには URL セーフ版を使用し、パディング文字の削除を検討してください。
  • パディング文字:一部の実装では = を省略可能であり、デコード時には 4 の倍数になるよう自動的に補完する必要があります。
  • 改行:MIME Base64 には改行が含まれる場合があり、その場合は「空白文字を無視」オプションを有効にしてください。

プログラミング言語での Base64 エンコード・デコード方法

JavaScript
テキスト → Base64(UTF-8 セーフ)
const encoded = btoa(unescape(encodeURIComponent(text)));
// URL セーフ
const urlSafe = encoded.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/g, '');
デコード(Base64 → テキスト)
// 前処理:- _ を + / に置き換え可能
let b64 = input.replace(/-/g, '+').replace(/_/g, '/');
if (b64.length % 4 !== 0) b64 = b64.padEnd(b64.length + (4 - (b64.length % 4)), '=');
const text = decodeURIComponent(escape(atob(b64)));
PHP
エンコード(テキスト → Base64)
$encoded = base64_encode($text);
// URL セーフ
$urlSafe = rtrim(strtr($encoded, '+/', '-_'), '=');
デコード(Base64 → テキスト)
$b64 = strtr($input, '-_', '+/');
// 自動で '=' を補完
if (strlen($b64) % 4 !== 0) $b64 .= str_repeat('=', 4 - (strlen($b64) % 4));
$text = base64_decode($b64);
Python
エンコード(テキスト → Base64)
import base64

encoded = base64.b64encode(text.encode('utf-8')).decode('ascii')
# URL セーフエンコード(パディング除去)
url_safe = encoded.replace('+','-').replace('/','_').rstrip('=')
デコード(Base64 → テキスト)
import base64

def b64_decode(s: str) -> str:
    s = s.replace('-','+').replace('_','/')
    s += '=' * (-len(s) % 4)  # 自動で '=' を補完
    return base64.b64decode(s).decode('utf-8')
Go
エンコード(テキスト → Base64)
import (
    "encoding/base64"
)

enc := base64.StdEncoding.EncodeToString([]byte(text))
// URL セーフエンコード(パディングなし)
urlEnc := base64.RawURLEncoding.EncodeToString([]byte(text))
デコード(Base64 → テキスト)
import (
    "encoding/base64"
)

decBytes, err := base64.StdEncoding.DecodeString(enc)
// URL セーフデコード(パディングなし)
decURL, err2 := base64.RawURLEncoding.DecodeString(urlEnc)
Rust
エンコード(テキスト → Base64)
use base64::{engine::general_purpose, Engine as _};

let enc = general_purpose::STANDARD.encode(text.as_bytes());
// URL セーフエンコード(パディングなし)
let url_enc = general_purpose::URL_SAFE_NO_PAD.encode(text.as_bytes());
デコード(Base64 → テキスト)
use base64::{engine::general_purpose, Engine as _};

let dec_bytes = general_purpose::STANDARD.decode(&enc).unwrap();
let dec = String::from_utf8(dec_bytes).unwrap();

let url_dec = String::from_utf8(
    general_purpose::URL_SAFE_NO_PAD.decode(&url_enc).unwrap()
).unwrap();
Cargo 依存関係:base64 = "0.22"
Java
エンコード(テキスト → Base64)
import java.nio.charset.StandardCharsets;
import java.util.Base64;

String enc = Base64.getEncoder().encodeToString(text.getBytes(StandardCharsets.UTF_8));
// URL セーフエンコード(パディングなし)
String urlEnc = Base64.getUrlEncoder().withoutPadding().encodeToString(text.getBytes(StandardCharsets.UTF_8));
デコード(Base64 → テキスト)
import java.nio.charset.StandardCharsets;
import java.util.Base64;

String dec = new String(Base64.getDecoder().decode(enc), StandardCharsets.UTF_8);
String urlDec = new String(Base64.getUrlDecoder().decode(urlEnc), StandardCharsets.UTF_8);

Data URI の例

画像や小さなファイルを Data URI 形式で埋め込む:

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA...

注意:大きなファイルに Data URI を使用すると、HTML/JSON のサイズが大幅に増大し、パフォーマンスに影響を与えるため推奨しません。