Encode and decode URLs

Encode a parameter value or a complete URL with the right separators preserved. Choose a mode, inspect the result, then copy or download TXT.

Enter text to encode or decode

Ready to process special characters

Parameter value

Choose Component to encode & and = inside one value.

Assembled URL

Choose Full URL to keep separators such as /, ?, & and =.

How to encode or decode a URL

01

Choose what you need to process

Use Component for one parameter value and Full URL for an assembled link. Then choose Encode or Decode.

Choose the mode for your task

Encode individual values before assembling a URL. If a link already contains separators, use Full URL to preserve its structure.

TaskChooseCheck the result
One value contains a&b Component → Encode a%26b keeps & inside one value.
URL already has ?q= and & Full URL → Encode The /, ?, & and = separators remain in place.
Form value uses + for spaces Component → Decode; turn on “Treat + as space” hello+world → hello world

If the result is unexpected

Separators turned into %XX
You may have encoded an entire link in Component mode. Choose Full URL; encode a parameter value containing & separately before assembling the link.
Decoding shows an error
Check that each % has two hexadecimal digits and that the %XX sequences form valid UTF-8.
+ stayed as a plus sign
Turn on “Treat + as space” only when decoding a form value in Component mode. A + in Full URL mode is not changed automatically.
Special characters remain in the URL
Full URL mode preserves syntax separators. If the character belongs to a parameter value, encode that value with Component first.

Data and limits

This tool processes your input with JavaScript in your browser. Percent encoding changes how characters are represented; recipients can decode them. Do not put passwords or secret tokens in a URL just because the text has been encoded.

Comments & feedback

Rate this tool

Loading ratings…

Write a commentNo account needed

Do not share passwords, sensitive information or the contents of files you are processing.

Reviewed before posting. Email stays private.

Embed this tool on your websiteFree · Copy once, receive tool updates automatically

Paste the iframe into HTML, WordPress or any platform that supports embeds. The tool runs in the visitor’s browser; adjust its height and theme as needed.

View the embed guide and supported platforms →

<div style="max-width:900px">
  <iframe data-kitotool-embed src="https://kitotool.com/embed/en/url-encoder-decoder/" title="URL Encoder Decoder — KitoTool" width="100%" height="980" style="display:block;width:100%;border:1px solid #dbe3ee;border-radius:12px" loading="lazy" referrerpolicy="strict-origin-when-cross-origin"></iframe>
  <p style="margin:6px 2px 0;text-align:right;font:12px/1.5 system-ui,sans-serif;color:#64748b">Free tool by <a href="https://kitotool.com/en/url-encoder-decoder/" target="_blank" rel="nofollow noopener noreferrer" style="color:#2359d4;text-decoration:underline">KitoTool</a></p>
</div>

The code includes a visible credit below the iframe; its link uses nofollow for a widely distributed widget.

Optional: automatically resize the iframe

Add this script once to the page containing the iframe.

<script>
(function(){var origin="https://kitotool.com";function frames(){return document.querySelectorAll("iframe[data-kitotool-embed]")}function measure(f){if(f.contentWindow&&new URL(f.src).origin===origin)f.contentWindow.postMessage({type:"kitotool:measure"},origin)}window.addEventListener("message",function(e){if(e.origin!==origin||!e.data||e.data.type!=="kitotool:resize"||!Number.isFinite(e.data.height))return;frames().forEach(function(f){if(f.contentWindow===e.source&&new URL(f.src).origin===origin)f.style.height=Math.max(320,Math.min(12000,Math.ceil(e.data.height)))+"px";});});function connect(){frames().forEach(function(f){f.addEventListener("load",function(){measure(f)});measure(f)})}if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",connect,{once:true});else connect()})();
</script>