YAML URL Decode Online — Decode URL-Encoded YAML

Reverse percent-encoding on YAML configurations from URL parameters, webhooks, and form bodies. Restores newlines and indentation byte-for-byte — instantly, 100% in your browser.

What is YAML URL Decoding?

YAML URL decoding reverses the percent-encoding applied to a YAML document before it travelled inside a URL parameter or form body. Newlines (%0A), spaces (%20), colons (%3A), and any non-ASCII bytes return to their literal form, restoring the readable YAML the sender originally produced.

Configuration preview pages, GitOps deep links, sandbox URLs, and webhook diagnostic captures all carry YAML this way. The OpenFormatter YAML URL decoder runs decodeURIComponent in your browser — no upload — so Kubernetes manifests, Helm values, and Compose files containing secrets stay on your device.

How to URL-decode YAML — 4 steps

  1. Find the parameter. In the URL or form, look for a parameter named yaml, config, manifest, or values and copy its value.
  2. Paste the value alone. Drop the percent-encoded string into the Input panel without keys or delimiters.
  3. Click Decode. The tool converts + to space and resolves every %XX byte sequence using decodeURIComponent.
  4. Validate or format. Paste the decoded YAML into the YAML Validator to confirm well-formedness or the YAML Formatter to normalise indentation.

Side-by-side example

Percent-encoded

apiVersion%3A%20v1%0Akind%3A%20ConfigMap%0Ametadata%3A%0A%20%20name%3A%20app-config%0Adata%3A%0A%20%20log_level%3A%20info

Decoded YAML

apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  log_level: info

Indentation Preserved

Every leading space (%20) and newline (%0A) decodes back to its literal byte, so YAML structure is bit-for-bit identical to the source.

UTF-8 Multi-Byte

Non-ASCII keys and values — %C3%A9 → é, %E2%82%AC → € — round-trip cleanly. CJK, accented Latin, and emoji in string values all survive.

Client-Side Only

decodeURIComponent runs in your browser. Kubernetes secrets, Helm tokens, and Compose passwords never reach a server.

Common use cases

  • check_circleReading YAML configurations passed through configuration-preview URLs
  • check_circleRestoring Kubernetes manifests embedded in GitOps deep-link parameters
  • check_circleDecoding YAML payloads from webhook diagnostic captures
  • check_circleInspecting Helm values.yaml shipped via shareable sandbox links
  • check_circleReading Docker Compose configurations passed in test environment URLs
  • check_circleDecoding GitHub Actions workflow snippets from share links and previews
  • check_circleRestoring Ansible playbook fragments from CI/CD diagnostic URLs
  • check_circleReading Prometheus and Grafana config snippets from dashboard preview URLs

Why YAML round-trips through URLs at all

YAML thrives in human-edited config: Kubernetes, Compose, GitHub Actions, Ansible, Helm. When a tool wants to share a configuration via URL — for previews, diffs, or sandboxes — it has to fit a multi-line, whitespace-significant document into a single query parameter. Percent-encoding does that, but at the cost of legibility. URL-decoding restores the original document so you can read, validate, or further process it like any other YAML.

Need to encode instead?

Re-percent-encode YAML for embedding in a URL or form body, or chain with our other YAML tools — all browser-side.

Frequently Asked Questions

When is YAML URL-encoded?

Most often when a configuration UI passes a YAML snippet through a query parameter — preview pages, sandbox links, and "share this config" features. Webhook payloads that ship YAML as a form field, URL-based diff/blame URLs in GitOps tools, and IDE plugin deep links also encode YAML this way. The newline-heavy structure of YAML means you will see lots of %0A bytes in the encoded form.

Why do my newlines look like %0A in the input?

Percent-encoding represents a newline (LF, byte 0x0A) as %0A. YAML relies on newlines to separate keys at the same indent level, so a multi-line config almost always carries multiple %0A bytes. Decoding restores the newlines and your YAML is readable again.

Will the indentation survive the round-trip?

Yes. Each leading space in YAML encodes as %20. After decoding, those become real spaces and your indentation is byte-for-byte identical to the source. This matters for YAML where one missing space silently changes the document structure.

How does this handle + vs %20?

In strict RFC 3986 percent-encoding, %20 is the only spelling for a space. In application/x-www-form-urlencoded payloads, + is also a space. The tool replaces every + with %20 before decoding so form-encoded YAML round-trips correctly. If your input came from a strict source where + was intended literally, you would need to handle that separately in code.

Does this validate the decoded YAML?

No — only the percent-encoding is reversed. After decoding, paste the result into the YAML Validator to confirm the document is well-formed and indentation is consistent.

What about non-ASCII characters in keys or values?

decodeURIComponent reads consecutive %XX bytes as UTF-8. A key like description with the value "café" round-trips fine — %63%61%66%C3%A9 decodes back to café. CJK keys, accented Latin, and emoji in string values all survive the encode/decode cycle.

Should I decode an entire query string at once?

No. Identify the parameter that holds the YAML (often named yaml, config, manifest, or values), then copy only the value after the equals sign and before the next ampersand. Pasting key=value&… runs the literal "yaml=" through the decoder and gives a confusing result.

Is my YAML uploaded to a server?

No. decodeURIComponent runs in your browser. Kubernetes secrets, Docker Compose passwords, and Helm values containing tokens never leave the page. Verify in DevTools → Network — no request fires when you click Decode.

YAML URL Decode Online — Decode URL-Encoded YAML