Base64 をファイルに変換

Base64 文字列または data URI を貼り付けると、元のファイルを復元できます。先頭のバイト列から形式を判別し、可能な場合はプレビューを表示して、正しい拡張子で保存します。

すべてブラウザ内で処理され、データはアップロードされません。

使い方

  1. Base64 文字列または完全な data URI を入力欄に貼り付けます。スペースや改行が含まれていてもかまいません。
  2. 「判別された種類」とサイズを確認します。画像、PDF、音声、動画、テキストはプレビューで表示されます。
  3. ファイルを「ダウンロード」します。判別された種類に合ったファイル名と拡張子で保存されます。

ファイル形式を判別するしくみ

Base64 のテキストが運ぶのはバイト列であり、ファイル名は含まれていません。MIME タイプ付きの data URI を貼り付けない限り、文字列の中身が PDF なのか、ZIP アーカイブなのか、音声なのかを示す情報はありません。そこでこのツールはデータをデコードし、先頭の数バイトを調べます。これはファイルシグネチャ(マジックバイト)と呼ばれ、ほとんどの形式がファイルの先頭に置いている値です。このバイト列は固定なので、各形式の Base64 テキストも決まったパターンで始まります。

形式先頭のバイトBase64 の先頭
PDF%PDFJVBER
PNG89 50 4E 47iVBORw0KGgo
JPEGFF D8 FF/9j/
GIFGIF8R0lGOD
ZIP(DOCX、XLSX、JAR も同様)PK 03 04UEsDB
MP3(ID3 タグ付き)ID3SUQz
WAV、WebP、AVI(RIFF)RIFFUklGR

デコードしたファイルが開けない場合

Base64 のデコードは可逆なので、ファイルが壊れている場合は、ほぼ間違いなく入力が想定していたものと違っています。次の原因を順に確認してください。

  • 入力が途中で切れている。ログファイル、ターミナル、スプレッドシートのセル、チャットアプリでは、長い文字列が切り詰められることがよくあります。末尾のテキストが欠けるとファイルが短くなり、ほとんどの形式は開けなくなります。元のサイズがわかっている場合は、デコード後のサイズと比べてください。
  • 余分な文字が含まれている。値と一緒にコピーされた引用符、カンマ、フィールド名や、JSON 文字列に含まれる \/、\n などのエスケープシーケンスは、Base64 の一部ではありません。値そのものだけをコピーしてください。
  • 別のエンコード方式や種類である。16進数、Base32、Base85、カスタムアルファベットは一見よく似ていますが、Base64 としてデコードすると意味のないデータになります。エンコード判別ツールはすべてのデコーダーを試し、どれが当てはまるかを表示します。
  • そもそもファイルではない。結果がプレーンテキストと判別された場合、その文字列はテキストを Base64 にしたもので、中身は JSON、トークン、あるいはさらに重ねてエンコードされた Base64 です。Base64 デコーダーで内容を確認し、出力がまた Base64 であれば、もう一度デコードしてください。

Base64 検証ツールは、無効な文字とその位置を一覧表示し、パディングの問題も報告するので、破損した箇所を特定するのに役立ちます。

コードで Base64 をファイルにデコードする

# Python
import base64
with open('output.bin', 'wb') as f:
    f.write(base64.b64decode(data))

// Node.js
fs.writeFileSync('output.bin', Buffer.from(data, 'base64'));

# Linux
base64 -d input.txt > output.bin

# macOS
base64 -D -i input.txt -o output.bin

# Windows PowerShell
[IO.File]::WriteAllBytes("C:\files\output.bin", [Convert]::FromBase64String((Get-Content input.txt -Raw)))

よくある質問

どのようなファイル形式を判別できますか?

はっきりしたシグネチャを持つ一般的な形式です。PDF、ZIP・GZIP・7z・RAR のアーカイブ、PNG・JPEG・GIF・WebP などの画像、MP3・WAV・OGG・FLAC・M4A の音声、MP4・WebM の動画、WOFF・WOFF2・TTF・OTF のフォント、WebAssembly などに対応しています。JSON、XML、HTML、プレーンテキストも認識します。シグネチャのない形式は判別できないため、実際の種類がわかっている場合は、ダウンロードしたファイルの名前を変更してください。

Word や Excel のファイルが ZIP と判別されたのはなぜですか?

DOCX、XLSX、PPTX ファイルは、EPUB や JAR と同様に、内部に特定のフォルダー構造を持つ ZIP アーカイブで、通常の ZIP ファイルと同じマジックバイトで始まります。デコードしたバイト列は正しいので、ダウンロードしたファイルの拡張子を .docx や .xlsx など必要なものに変更すれば、通常どおり開けます。

data URI を貼り付けられますか?
はい。data:...;base64, プレフィックスを含む文字列全体を貼り付けても、Base64 の部分だけを貼り付けてもかまいません。どちらの場合も、種類はデコードしたバイト列と照合して確認されます。
デコードしたファイルが Base64 テキストより小さいのはなぜですか?

Base64 は 3 バイトごとに 4 文字を使うため、ファイルはテキストの長さの約 4 分の 3 になります。想定していたファイルよりはるかに小さい場合は、入力が途中で切れている可能性があります。

データはどこかに送信されますか?

いいえ。デコード、形式の判別、プレビューはすべてブラウザ内で行われ、ダウンロードするファイルもお使いのデバイス上で作成されます。アップロードされるものは何もありません。