1. Home
  2. Developer tools
  3. SAML Decoder

SAML Decoder

Debug single sign-on without installing a browser extension. Paste the parameter or the Base64 text and see the XML.

Free, no sign-up. Runs in your browser: nothing is uploaded.

How to use SAML Decoder

  1. Paste the SAMLRequest or SAMLResponse value, or the whole URL.
  2. Read the extracted facts and the formatted XML.
  3. Copy the XML if needed.

Features

  • Handles URL-encoded, Base64 and deflate (Redirect binding)
  • Handles plain Base64 (POST binding)
  • Issuer, destination, audience, conditions and validity window
  • Name ID, session and attributes listed
  • Pretty-printed XML
  • No signature verification claimed

Supported formats

Input

  • SAMLRequest or SAMLResponse values
  • Full redirect URLs

You get

  • XML
  • Key fields summary

Private by design

Everything you enter is processed by your browser on this device. Nothing is sent to openWorkstand or anyone else, so the SAML Decoder is safe for private and work data. After you have used it once while online, it also works without an internet connection. How local processing works

Good to know

  • It does not verify signatures or decrypt encrypted assertions.
  • Only the HTTP-Redirect and HTTP-POST bindings are handled.

Guide

Decoding SAML requests and responses for single sign-on debugging

SAML 2.0 is the protocol behind many corporate single sign-on logins. A browser carries XML messages between your application, the service provider, and the company’s identity provider. When a login fails with “invalid audience”, “assertion expired” or a vague error page, the answer is almost always inside one of those messages, but they travel as dense, encoded text. This decoder undoes the encoding and points out the fields you actually need.

How messages are encoded

SAML defines bindings, ways of carrying a message. With the HTTP-Redirect binding the message is part of the URL, so it has to stay short: the XML is compressed with raw DEFLATE, Base64-encoded, then URL-encoded into a SAMLRequest or SAMLResponse parameter. With the HTTP-POST binding the browser submits an HTML form with a hidden field, and the XML is only Base64-encoded. The page works out which applies: paste the value, the whole URL, the form field or even the finished XML.

A worked example

Press Sample. The page decodes a sample AuthnRequest. Under “What it says” it lists the document type AuthnRequest, the ID _a75adf55-01d7-40cc-929f-dbd8372ebdfc, issue time 2026-11-02T10:15:00Z, destination https://idp.example.test/sso, assertion consumer service URL https://sp.example.test/acs and issuer https://sp.example.test/metadata, and notes that there are no signatures. Below, the pretty-printed XML shows the same facts plus the request’s NameID policy, format e-mail address with AllowCreate true, and the requested response binding HTTP-POST.

Reading a response

A SAMLResponse adds the parts you debug: the status code, which says Success or an error; the assertion with its conditions, NotBefore and NotOnOrAfter, which define the validity window; the audience restriction; the subject’s name ID and its confirmation data; and the attribute statement listing values such as e-mail and groups. The summary shows these, and the XML is below for anything else. Clock difference between the two systems is a classic cause of “assertion not yet valid” or “expired” errors, so compare the times in the message with the clock of the receiving server.

Frequent causes of failure

A destination or assertion consumer URL that differs by a trailing slash or by http versus https. An audience that does not equal the entity ID configured in the service provider. A name ID format the application does not expect. A certificate that rotated, so the signature no longer verifies. Missing attributes because the identity provider does not release them to this application. Each of these is visible in the decoded message.

Limits

Decoding is not validation. The page does not verify XML signatures, does not decrypt encrypted assertions, and cannot tell whether a message is genuine or replayed. A response may contain personal data such as e-mail addresses. It is decoded in your browser and not uploaded, but avoid pasting production responses into any site you do not control, and prefer test accounts.

A debugging routine

Work through a failed login in the same order every time. First decode the AuthnRequest your application sent and confirm the issuer, the assertion consumer service URL and the requested name ID format against the identity provider’s configuration. Then decode the response and read the status before anything else, since a status other than Success usually carries a message. Next compare the audience with your entity ID, the destination with your endpoint, and the validity window with the current time. Last, check the attributes your application expects. Writing down the decoded values for a working login gives you a reference to compare when a later one breaks.

Checked against the current version of the SAML Decoder on .

Troubleshooting

The download did not start

Look for your browser’s download bar or icon. Some browsers ask once before a site may download files; allow it and click the button again.

Frequently asked questions

Why does my SAMLResponse look like random characters and not XML?

It is Base64 text, and in the Redirect binding it is also compressed. The page tries the right combination of URL decoding, Base64, inflate and XML formatting for you.

What is the difference between the issuer and the audience?

The issuer is who created the message. In a response that is the identity provider. The audience is who the assertion is meant for, the service provider entity ID. Login errors often come from an audience that does not match the configured entity ID.

Does decoding prove the response is genuine?

No. This page does not verify signatures or decrypt assertions. Genuineness depends on the signature and on checks your service provider makes.

Why does my POST value not need inflating?

The HTTP-POST binding only Base64-encodes the XML. The Redirect binding must keep the URL short, so it compresses with raw DEFLATE first.

Keep working with the result

After you download, choose “Save to Workstand” to keep the result in a folder on your computer, attach it to a project and create a follow-up task. It is saved by your browser, not uploaded.