Base64 Image Decoder

Base64データURIを画像にデコード

Base64入力

Base64画像デコードとは何ですか?

Base64画像デコーディングは、Base64画像エンコーディングの逆過程です。画像を表すBase64文字列またはdata URIを取得し、表示可能な二進ピクセルデータに変換し直します。data:image/png;base64,iVBORw0KGgo...のような文字列を受け取ると、デコーディングはdata URIプレフィックスを削除し、RFC 4648で定義されるBase64エンコーディングを反転して、元の画像バイトを再構築します。その後、ブラウザはデコードされたバイトを表示可能な画像としてレンダリングできます。

Data URI (RFC 2397)はMIMEタイプとBase64エンコードされたコンテンツを単一の文字列にバンドルします。APIレスポンス、HTMLメールソースコード、CSSスタイルシート、および画像がテキストではなくバイナリファイルとして保存されるデータベースレコードに頻繁に表示されます。これらの文字列をデコーディングすることは、画像をプレビューし、そのコンテンツを検証し、スタンドアロンファイルとして保存するために必要です。Base64は3バイトのバイナリデータを表すために4つのASCII文字を使用するため、エンコードされた文字列は常に元の画像より約33%大きくなります。

このツールは、完全なdata URI (data:image/png;base64,...)と、data:プレフィックスなしの生のBase64文字列の両方を解析します。生の文字列の場合、最初のBase64文字を検査して画像フォーマットが自動的に検出され、これらはファイルのマジックバイトに対応します。例えば、iVBORw0KGgoは常にPNGファイルを示します。デコードされた画像はブラウザで直接レンダリングされ、ファイルとしてダウンロードできます。

一般的な開発者シナリオは、RESTAPIが配置写真またはドキュメントサムネイルをJSONフィールド内のBase64文字列として返す場合です。例えば、{"avatar": "data:image/png;base64,iVBORw0KGgo..."} のような場合です。画像を使用するには、フィールド値を抽出し、コンマを含めてdata URIプレフィックスを削除し、残りのBase64文字をatob() (JavaScript)またはbase64.b64decode() (Python)などのデコーダを通して渡して、元のバイトを回復します。このツールに完全な値を貼り付けると、すべてのこれらの手動ステップがスキップされ、画像が即座にレンダリングされます。

このBase64画像デコーダを使用する理由は何ですか?

このツールは、Base64画像データをブラウザ内完全に表示可能でダウンロード可能な画像に変換します。アップロードなし、サーバー処理なし、アカウント不要です。

即座プレビュー
Base64文字列またはdata URIを貼り付けて、デコードされた画像をすぐに表示します。サーバー側処理を待つことなく、ブラウザがローカルで解読してレンダリングします。
🔒
プライバシーファースト処理
画像データはデバイスを離れることはありません。デコーディングはネイティブJavaScript APIを使用してブラウザ内で完全に実行されます。Base64文字列はサーバーには送信されません。
🖼️
自動フォーマット検出
PNG、JPEG、SVG、WebP、GIF、BMP、およびICOをサポートします。MIMEタイプはdata URIプレフィックスから抽出されるか、プレフィックスがない場合はBase64マジックバイトから自動検出されます。
📋
結果をダウンロード
デコードされた画像を正しい拡張子を持つファイルとして保存します。ダウンロードは検出されたフォーマットを使用します。.txtから.pngへの手動の名前変更は不要です。

Base64画像デコーディングのユースケース

フロントエンドデバッグ
HTMLおよびCSSまたはJavaScriptソースコードに埋め込まれたBase64エンコード画像を検査します。data URIを貼り付けて、デプロイ前に正しい画像がレンダリングされていることを確認します。
APIレスポンス検査
RESTおよびGraphQL APIは、JSONペイロード内の画像をBase64文字列として返すことが多いです。ユーザーアバター、ドキュメントのサムネイル、またはQRコードです。デコーディングして、コンテンツが期待に一致することを確認します。
メールテンプレート開発
HTMLメールは、外部画像ブロッキングを回避するために、画像をdata URIとして頻繁に埋め込みます。Base64をデコーディングして、テストメールを送信せずに受取人が何を見るかをプレビューします。
データベースレコード検証
画像がデータベース列にBase64テキストとして保存されている場合(MongoDBまたはPostgreSQLテキストフィールド)、サンプルレコードをデコーディングして、マイグレーションまたはインポート後のデータ整合性を確認します。
セキュリティ分析
ログ、メール、またはウェブトラフィック内の疑わしいBase64画像ペイロードを検査します。デコーディングは実際の画像コンテンツとフォーマットを明らかにし、トラッキングピクセルまたは予期しない埋め込みデータを特定するのに役立ちます。
学習と教育
画像をエンコーディングしてからデコーディングして、Base64エンコーディングがどのように機能するかを理解します。元のファイルと変換された結果を比較して、Base64がロスレスエンコーディングであることを確認します。

画像のdata URI構造

data URIは、画像タイプとエンコードされたコンテンツを単一の文字列にパッケージ化します。各コンポーネントは正しいデコーディングに不可欠です。スキーム(data:)はURLが外部リソースへの参照ではなく自己完結していることを示します。MIMEタイプ(例:image/png)は、生バイトを解釈するときにレンダラーが使用するフォーマットを指示します。マーカー;base64,は、プレーンテキスト形式にパーセント符号化を使用するdata URIからBase64エンコードコンテンツを区別します。Base64ペイロード自体は、1つまたは2つのパディング文字= で終わることがあります。これらは、入力バイト数が3の倍数でない場合に必要であり、エンコードされた長さが常に4の倍数であることを保証します。これらのコンポーネントのいずれかを省略または切り詰めると、デコーディングが失敗するか、破損した画像が生成されます。

コンポーネント説明
data:URI scheme identifier
image/pngMIME type declaring the image format
;base64,Encoding declaration (always base64 for binary)
iVBORw0KGgo...Base64-encoded pixel data

Base64から画像フォーマットを検出

Base64文字列にdata:プレフィックスがない場合、最初の数文字を検査して画像フォーマットを識別できます。これらの文字はファイルのマジックバイトに対応し、各画像ファイルの開始時の固定バイトシーケンスがフォーマットを識別します。

フォーマットBase64プレフィックス16進シグネチャMIMEタイプ
PNGiVBORw0KGgo89 50 4E 47image/png
JPEG/9j/FF D8 FFimage/jpeg
GIFR0lGOD47 49 46 38image/gif
WebPUklGR52 49 46 46image/webp
SVGPHN2Zy3C 73 76 67 (text)image/svg+xml
BMPQk42 4Dimage/bmp
ICOAAABAA00 00 01 00image/x-icon

コード例

一般的なプログラミング言語や環境でBase64画像文字列を画像ファイルにデコーディングする方法:

JavaScript (browser)
// Decode a Base64 data URI to a Blob and create a download link
const dataUri = 'data:image/png;base64,iVBORw0KGgo...'

// Method 1: fetch API (simplest)
const res  = await fetch(dataUri)
const blob = await res.blob()
// blob.type → "image/png", blob.size → 2048

// Method 2: manual decode for older environments
const [header, b64] = dataUri.split(',')
const mime    = header.match(/:(.*?);/)[1]   // → "image/png"
const binary  = atob(b64)
const bytes   = Uint8Array.from(binary, c => c.charCodeAt(0))
const blob2   = new Blob([bytes], { type: mime })

// Create a download link
const url = URL.createObjectURL(blob)
const a   = document.createElement('a')
a.href = url
a.download = 'decoded.png'
a.click()
URL.revokeObjectURL(url)
Python
import base64
import re

data_uri = 'data:image/png;base64,iVBORw0KGgo...'

# Parse the data URI
match = re.match(r'data:(image/[\w+.-]+);base64,(.+)', data_uri)
mime_type = match.group(1)    # → "image/png"
b64_data  = match.group(2)

# Decode and write to file
image_bytes = base64.b64decode(b64_data)
ext = mime_type.split('/')[1].replace('jpeg', 'jpg').replace('svg+xml', 'svg')

with open(f'output.{ext}', 'wb') as f:
    f.write(image_bytes)
# → writes output.png (byte-for-byte identical to the original)

# Decode raw Base64 (no data: prefix)
raw_b64 = 'iVBORw0KGgo...'
image_bytes = base64.b64decode(raw_b64)
Node.js
import { writeFileSync } from 'fs'

const dataUri = 'data:image/png;base64,iVBORw0KGgo...'

// Extract MIME type and Base64 payload
const [meta, b64] = dataUri.split(',')
const mime = meta.match(/:(.*?);/)[1]  // → "image/png"

// Decode to Buffer and save
const buffer = Buffer.from(b64, 'base64')
writeFileSync('output.png', buffer)
// → output.png (identical to the original file)

// Validate by checking magic bytes
console.log(buffer.subarray(0, 4))
// PNG → <Buffer 89 50 4e 47>  (\x89PNG)
// JPEG → <Buffer ff d8 ff e0>
CLI (bash)
# Decode a raw Base64 string to an image file (Linux)
echo 'iVBORw0KGgo...' | base64 -d > output.png

# Decode a raw Base64 string to an image file (macOS)
echo 'iVBORw0KGgo...' | base64 -D > output.png

# Extract Base64 from a data URI and decode
echo 'data:image/png;base64,iVBORw0KGgo...' | \
  sed 's/^data:.*base64,//' | base64 -d > output.png

# Identify the image format from the decoded file
file output.png
# → output.png: PNG image data, 64 x 64, 8-bit/color RGBA

よくある質問

data URIと生のBase64文字列の違いは何ですか?
data URIには、MIMEタイプとエンコーディングを宣言するプレフィックスが含まれます:data:image/png;base64,iVBORw0KGgo...。生のBase64文字列には、メタデータなしのエンコード済みバイト(iVBORw0KGgo...)のみが含まれています。このツールは両方のフォーマットを受け入れます。生の文字列を貼り付けると、Base64マジックバイトから画像フォーマットが自動的に検出されます。
Base64のデコーディングは画像品質を変更しますか?
いいえ。Base64はロスレスエンコーディングで、バイナリデータをASCIIテキストに変換し、バイトを変更せずに戻します。デコードされた画像は、元のファイルとバイト単位で同じです。品質の違いは、Base64デコーディングステップではなく、画像フォーマット自体(エンコーディング前に適用されたJPEGサムネイルなど)に由来しています。
Base64画像のフォーマットを判定する方法は?
文字列がdata:image/png;base64で始まる場合、フォーマットはMIMEタイプで宣言されます。生のBase64文字列の場合、最初の数文字を検査します:iVBORw0KGgoはPNGを示します、/9j/はJPEGを示します、R0lGODはGIFを示します、そしてUklGRはWebPを示します。これらのプレフィックスは、各フォーマットのマジックバイトに対応します。
Base64文字列がデコーディングに失敗する理由は何ですか?
一般的な原因には、トランケートされたデータ(コピー貼り付け時に文字列がカットオフされた)、不正な文字(Base64はA–Z、a–z、0–9、+、/および=をパディングに使用)、埋め込まれたホワイトスペースまたは改行、およびdata URIプレフィックスが欠落または不正な形式が含まれます。このツールはホワイトスペースを自動的に削除しますが、トランケーションまたは破損したデータは回復できません。
信頼できないソースからBase64画像をデコーディングしても安全ですか?
このツールはブラウザサンドボックスで画像をデコーディングおよびレンダリングし、システムから隔離します。ただし、SVG画像には埋め込まれたJavaScriptが含まれる可能性があります。最新のブラウザは、imgタグまたはdata URI経由でレンダリングされたSVGでのスクリプト実行をブロックしますが、信頼できないソースからのSVGには注意してください。このツールは、デコードされた画像からスクリプトを実行しません。
インターネット接続なしでBase64画像をデコーディングできますか?
はい、ページが読み込まれたら可能です。すべてのデコーディングはブラウザでローカルに実行され、ネイティブJavaScript API (atob、Uint8Array、Blob)を使用します。デコーディングプロセス中にネットワークリクエストは行われません。ツールはオフラインで同じように機能します。
このツールが処理できる最大のBase64文字列の長さはどのくらいですか?
実際的なリミットはブラウザのメモリに依存します。ほとんどの最新ブラウザは、数メガバイトのdata URIを問題なく処理します。非常に大きな画像(エンコード済み10MB以上)の場合、より遅いレンダリングが発生する可能性があります。このサイズでは、Node.jsまたはPythonを使用したプログラムのデコーディングと、ファイルへの直接書き込みが、ブラウザベースのツールを使用するよりも効率的です。