ファイルを選択
  1. base64hub
  2. テキストツール
  3. Base64 → XML

Base64 から XML へ:XML ペイロードをデコード

Base64 を貼り付けると、中の XML を読めます。ツールは XML 文書を認識して .xml として保存し、UTF-8、UTF-16、従来の文字コードも扱えます。

無料 登録不要・制限なし ローカル アップロードなし 更新日 2026/10/27
入力 0 B出力 0 Bサイズ –

ブラウザ内で処理されます。このページがデータをどこかに送信することはできません – その根拠

Base64 を XML にデコードする手順

  1. Base64 を 入力 · Base64 に貼り付けます。ページを開くと小さなサンプルが読み込まれています。
  2. XML が 出力 · テキスト に表示されます。ステータス行の 推定形式 に XML と出ていれば、内容が XML 文書のように始まっていることを示します。
  3. 出力の文字の間に隙間があったり、バイナリの警告が出たりする場合、その XML は UTF-16 です。文字コード を UTF-16LE に、先頭にバイト順マークがあるなら 自動検出 に設定してください。
  4. 出力をコピー でテキストをコピーします。ダウンロード で元のバイト列を decoded.xml として保存します。

サンプルの PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxub3RlPjx0bz55b3U8L3RvPjxib2R5PkhlbGxvPC9ib2R5Pjwvbm90ZT4= は次のようにデコードされます。

<?xml version="1.0"?>
<note><to>you</to><body>Hello</body></note>

逆方向は XML から Base64 へ です。

エンコードされた XML の見分け方

XML は < で始まるので、その Base64 は P で始まり、続く文字からさらに多くのことがわかります。

Base64 の先頭デコード後の先頭典型的な文書
PD94bWwg<?xml宣言のあるあらゆる XML ファイル
PHNhbWxwOlJlc3BvbnNl<samlp:ResponseSAML のログインレスポンス(SAML デコーダー)
PHNvYXA6RW52ZWxvcGU<soap:EnvelopeSOAP メッセージ
PEludm9pY2U<InvoiceUBL の電子請求書
//48AD8AeABtAGwABOM + UTF-16LE の <?xmlUTF-16 で保存された XML

SAML のはずなのに P で始まらない値は、たいてい圧縮された XML です。展開する方法は後で説明します。

UTF-16 とその他のエンコーディング

XML の大半は UTF-8 で、デコーダーもそれを前提にしています。別の 文字コード が必要になるのは次の 2 つのケースです。

  • UTF-16 の文書 は Windows のツールや .NET でよく作られ、ASCII 文字の隣にゼロバイトが並びます。UTF-8 としてデコードするとバイナリデータのように見え、ツールもそう表示します。自動検出 か UTF-16LE を選ぶと、<?xml version="1.0" encoding="UTF-16"?> で始まる全文が表示されます。ダウンロード はバイト列をそのまま保存しますが、ファイル名が decoded.bin になるので、.xml に名前を変えてください。
  • Latin-1 や Windows-1252 の文書 は、encoding="ISO-8859-1" などと宣言しています。UTF-8 モードではアクセント付きの文字が � になるので、宣言されている文字コードを選んで読んでください。

出力内の XML 宣言を見れば、作成者が意図した文字コードがわかります。ダウンロードしたファイルを読む XML パーサーはこの宣言に従うので、画面上のプレビューで文字コードを手動で選ぶ必要があったとしても、ファイル自体は問題ありません。

Base64 の XML が使われる場面

最も多いのは SAML です。ID プロバイダーは SAMLResponse を Base64 エンコードした XML としてアプリケーションに POST します。ログインのデバッグでは、ブラウザのネットワークタブからこれをコピーするのが一般的です。SOAP サービスや電子請求書のプラットフォームは、文書や添付ファイルを Base64 のフィールドで返します。メールは XML の添付ファイルを MIME の Base64 パートとして運ぶことができ、メールデコーダー でそれを取り出せます。

リダイレクト URL に含まれる SAML の SAMLRequest の値は、エンコード前に XML が raw DEFLATE で圧縮されているため、Base64 をデコードしただけではバイナリになります。gzip Base64 デコーダー で展開できます。%2B、%2F、%3D のエスケープは自動的にデコードされます。値全体が URL エンコードされている場合は、先に URL デコーダー を使ってください。

コードで Base64 を XML にする

デコードしたバイト列は、文字列に変換せずにそのまま XML パーサーに渡してください。そうすればパーサーが宣言からエンコーディングを読み取ります。

import base64
import xml.etree.ElementTree as ET

s = "PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxub3RlPjx0bz55b3U8L3RvPjxib2R5PkhlbGxvPC9ib2R5Pjwvbm90ZT4="
root = ET.fromstring(base64.b64decode(s))
root.find("body").text   # 'Hello'
// Browser
const s = "PD94bWwgdmVyc2lvbj0iMS4wIj8+Cjxub3RlPjx0bz55b3U8L3RvPjxib2R5PkhlbGxvPC9ib2R5Pjwvbm90ZT4=";
const bytes = Uint8Array.from(atob(s), c => c.charCodeAt(0));
const doc = new DOMParser().parseFromString(new TextDecoder().decode(bytes), "application/xml");

ブラウザで UTF-16 や Latin-1 の XML を扱うときは、TextDecoder に正しいラベルを渡してください。詳しくは Python での Base64 と JavaScript での Base64 をご覧ください。

よくある質問

Base64 を XML ファイルにデコードするには?

上の入力欄に Base64 を貼り付けます。ステータス行に XML と表示されたら、ダウンロード でデコードしたバイト列を decoded.xml として保存できます。元のエンコーディングも署名も、1 バイトも変えずにそのまま残ります。

Base64 の中身が XML かどうかはどう見分けますか?

XML 宣言のある文書は PD94bWwg(<?xml )で始まります。宣言がなくても、文書は必ず < で始まるので文字列は P で始まります。PHNhbWxwOlJlc3BvbnNl は <samlp:Response です。

XML を整形やインデントできますか?

できません。XML はデコードしたとおりに表示し、「JSON を整形」オプションは JSON にしか効きません。署名付き XML では整形するだけで内容が変わってしまうため、元のバイト列を表示することに意味があります。

デコードした SAML リクエストがランダムなバイト列に見えるのはなぜですか?

リダイレクト URL で送られる SAML リクエストは、Base64 エンコードの前に raw DEFLATE で圧縮されています。gzip Base64 デコーダー で展開するか、SAML デコーダー で開いてください。