SAML Response Decoder

Decode a SAMLResponse or SAMLRequest: Base64, optional DEFLATE inflate, pretty-printed XML and a summary of the key fields.

Base64 โ†’ XML 2765 bytes of XML Outside its validity window (expired)

Decoded only: signatures are never verified.

Message summary

Message type
Response
ID
_8e8dc5f69a98cc4c1ff3427e5ce34606fd672f91e6
Version
2.0
IssueInstant
2024-03-14T09:26:53Z (2024-03-14 09:26:53 UTC)
Destination
https://sp.example.com/acs
InResponseTo
_4fee3b046395c4e751011e97f8900b5273d56685
Issuer
https://idp.example.org/metadata
Status
Success (urn:oasis:names:tc:SAML:2.0:status:Success)
NameID
jane.doe@example.com
NameID Format
urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress
NotBefore
2024-03-14T09:26:23Z (2024-03-14 09:26:23 UTC)
NotOnOrAfter
2024-03-14T09:31:53Z (2024-03-14 09:31:53 UTC)
Audience
https://sp.example.com/metadata
AuthnContextClassRef
urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
SessionIndex
_be9967abd904ddcae3c0eb4189adbe3f71e327cf93
Attribute: email
jane.doe@example.com
Attribute: groups
admins, developers

1 ds:Signature element present (signature rsa-sha256, digest sha256). Not verified: this tool decodes only, it does not check signatures or certificates.

Formatting and samples
No uploads. Your files stay on your device.

Free forever, no sign-up, no cookies. Buy me a coffee

How it works

Paste the value of a SAMLResponse or SAMLRequest form field or query parameter and it is decoded as you type. The tool unwraps the layers a SAML message travels in, in order: an optional application/x-www-form-urlencoded percent-encoding, then Base64 (RFC 4648), and then, for the HTTP-Redirect binding described in the OASIS SAML 2.0 Bindings specification, raw DEFLATE decompression (RFC 1951, done with the browser's built-in DecompressionStream). Zlib (RFC 1950) and gzip (RFC 1952) wrappers are recognised too, and raw XML is passed straight through. The resulting XML is pretty-printed with your chosen indentation, and the badge below the buttons tells you exactly which chain of decodings was applied.

The summary pulls out the fields you usually need when an SSO login fails: the message type, ID, IssueInstant, Destination and InResponseTo, the Issuer, the status code from samlp:Status, the subject NameID and its format, the Conditions validity window and Audience, the authentication context, and every attribute in the AttributeStatement with all of its values, as defined in OASIS SAML 2.0 Core.

This tool decodes only, it does not verify signatures. It reports whether an XML Signature (ds:Signature) is present and which algorithms it names, but it does not canonicalise, digest or check anything against a certificate, so a message shown here may still be forged. Use your identity provider's metadata and your SAML library for real validation. Decoding runs entirely in this page with JavaScript: your assertions never leave your browser, which matters because a real SAMLResponse is a live credential.

Frequently asked questions

How do I decode a SAML response?

Paste the value of the SAMLResponse form field (or the whole redirect query string) into the box and the decoded XML appears next to it as you type. The tool unwraps the layers in the order the SAML 2.0 bindings spec applies them: percent-encoding if present, then Base64, then raw DEFLATE for the HTTP-Redirect binding. A badge tells you exactly which chain was used, and the summary below lists the issuer, status code, NameID, validity window, audience and every attribute.

Why is my SAMLRequest not valid Base64 on its own?

Messages sent over the HTTP-Redirect binding are compressed with raw DEFLATE (RFC 1951, no zlib header) before they are Base64-encoded and percent-encoded into the URL, so decoding the Base64 alone gives you binary rubbish. This tool detects that automatically and inflates it with the browser's built-in DecompressionStream. Zlib and gzip wrappers are recognised too, and plain Base64 from the HTTP-POST binding needs no inflate at all.

Does this tool verify the SAML signature?

No. It decodes and pretty-prints only. It will tell you whether a ds:Signature element is present and which signature and digest algorithms it names, but it does not canonicalise the XML, recompute the digest or check anything against a certificate, so a message shown here can still be forged. Use your identity provider's metadata and your SAML library for real validation. Decoding runs entirely in your browser, so the assertion, which is a live credential, is never uploaded.

Report a bug