Paste a URL or an encoded string to decode it. Full URLs also get a table of their query parameters, decoded. Double-encoded text and malformed % sequences are pointed out instead of failing with “URI malformed”.
Encode a file:
The same text is percent-encoded three different ways depending on where it goes, and languages pick different defaults. The string a b&c=d/é!'(x)*~, measured:
rawurlencode): a%20b%26c%3Dd%2F%C3%A9%21%27%28x%29%2A~. For a single query value or path segment. JavaScript's encodeURIComponent gives the same except it leaves !'()* unescaped, which OAuth 1.0 signatures (RFC 5849) require escaped.URLSearchParams, PHP urlencode, Python quote_plus): a+b%26c%3Dd%2F%C3%A9%21%27%28x%29*%7E, with spaces as +. Libraries also disagree on * and ~ here: URLSearchParams leaves *, PHP escapes both, Python escapes * only.encodeURI): a%20b&c=d/%C3%A9!'(x)*~. It keeps & = / ? : #, so it is only for a complete URL that has spaces or accents in it. Never use it on a single value: an & inside the value would split it into two parameters.Python's urllib.parse.quote() is a common surprise: its default safe='/' leaves slashes unescaped (a%20b%26c%3Dd/%C3%A9…), so a value like a redirect path breaks the URL it is put into. Pass safe='' for a query value.
JavaScript's decodeURIComponent throws the same URIError: URI malformed for three different problems. This decoder tells them apart:
100% or 50%off: reported with its position. When encoded, a literal percent sign is written %25.caf%E9, from older systems that encode é as one byte instead of UTF-8's %C3%A9: decoded as Windows-1252 with a warning, instead of failing.Double encoding is the other usual bug: a value encoded twice turns %20 into %2520, and after one decode you still see %20. When the decoded text still has % sequences, the page says so and offers to decode again. A + means a space only in form-encoded query strings; in a path or a Base64 value it is a literal plus, so the "+ means space" box can be turned off.
Shotmint is a screenshot and PDF API. POST https://shotmint.creasework.com/v1/pdf with {"html": "…"} returns a PDF, and /v1/screenshot returns a PNG of any URL or HTML, rendered in real Chromium (1 credit each; 25 free renders a month, then €5 for 2,000 that never expire). Add response=url to get a link instead of the bytes, or put the URL in a query string with the encoding above. Scripts, AI agents and Make or Zapier can get a key with a bare POST https://shotmint.creasework.com/v1/keys/free (no body, JSON reply); request bodies are described in openapi.json.
Get 25 free renders a month API docs
Is my text uploaded? No. Encoding and decoding run in your browser and nothing is sent to a server, so tokens, API keys and private data stay on your device.
Is Base64 encryption? No. Anyone can decode it; it only turns bytes into text that survives email, JSON and URLs, and makes the data about 33% bigger.
Related tools: Base64 encoder, Base64 decoder, JWT decoder, URL encoder, Text to hex converter, Hex to text converter, HTML encoder, HTML entity decoder, JSON formatter, Image to Base64, Base64 to image.
Base64 encode / decode · HTML Decode · URL to PDF · Bulk URL to PDF · URL to image · URL Encode · URL to Markdown · all free tools