Skip to main content

URL Encoder / Decoder

Instant RFC 3986 percent-encoding

Need to encode a query string parameter or decode a URL-encoded link? Paste your content below and get the result in one click.

Select the conversion direction

Key features

Instant encoding

Transform text into percent-encoding in real time. Perfect for query strings, UTM parameters and HTML forms.

Reliable decoding

Retrieve the original content of a URL-encoded string. Verify redirect parameters, email links or tracking URLs.

Full UTF-8 support

Encode and decode Unicode characters, accents, emojis and CJK ideographs without data loss.

100% free

No signup required. Use the tool as many times as you need with no limits.

Privacy guaranteed

Your content is not stored. Encoding/decoding is performed and data is immediately discarded.

Why use a URL encoder?

Percent-encoding (or URL encoding) is essential whenever you work with parameters in a URL. Special characters like &, =, ? or spaces must be encoded so they don't break the URL structure.

Without proper encoding, a parameter containing price=10&20 would be interpreted as two separate parameters (price=10 and 20). The browser can't guess your intent: encoding removes the ambiguity.

Three situations where URL encoding is essential:

  • Query string parameters - An & or = in a value splits the string at the wrong place
  • UTM parameters - Spaces or accented characters in utm_campaign break analytics tracking
  • Redirects and callbacks - Nested URLs (OAuth, SSO, marketing emails) must be fully encoded

How to use the URL encoder / decoder in 3 steps

Step 1: Paste your content

Paste into the input area:

  • Plain text if you want to encode (e.g. price=10€ & free shipping)
  • An encoded string if you want to decode (e.g. price%3D10%E2%82%AC+%26+free+shipping)

Step 2: Select the operation

Click URL encode to transform text into percent-encoding, or URL decode to retrieve the original text from an encoded string.

Step 3: Copy the result

The result appears instantly. Click the copy button to grab the converted string, ready to be inserted into your code, URL or configuration.


What is percent-encoding?

Percent-encoding is the mechanism defined by RFC 3986 for representing special characters in a URI. Each disallowed byte is replaced by % followed by two hexadecimal digits representing its UTF-8 value.

Practical example:

Original text: Café & Thé = 15€
Encoded:       Caf%C3%A9+%26+Th%C3%A9+%3D+15%E2%82%AC

The é (U+00E9) takes two bytes in UTF-8 (C3 A9), hence %C3%A9. The symbol (U+20AC) takes three bytes (E2 82 AC), hence %E2%82%AC.

Unreserved characters (never encoded)

These characters pass through unchanged in a URL:

A-Z  a-z  0-9  -  _  .  ~

Reserved characters (encoded in values)

CharacterRole in the URLEncoded
?Start of parameters%3F
&Parameter separator%26
=Key/value assignment%3D
#Fragment (anchor)%23
/Path separator%2F
+Space (query string)%2B
@User identifier%40

Encoding table for common characters

CharacterDescriptionEncoded (query)Encoded (path)
spaceWhitespace+%20
&Ampersand%26%26
=Equals sign%3D%3D
?Question mark%3F%3F
#Hash%23%23
éE acute accent%C3%A9%C3%A9
ñN tilde%C3%B1%C3%B1
Euro sign%E2%82%AC%E2%82%AC
CJK ideograph%E6%97%A5%E6%97%A5

Note: The only difference between query and path encoding is the space character. In a query string (application/x-www-form-urlencoded), the space becomes +. In a URL path, it becomes %20.


Real-world use cases

Case 1: UTM parameters with special characters

Problem: You're creating a tracking link for a campaign named "Summer sale 2025 - 50%".

Without encoding:

https://captaindns.com?utm_campaign=Summer sale 2025 - 50%

The spaces break the URL and the lone % opens an incomplete escape sequence. Google Analytics can't capture the campaign. The dash goes through untouched: it is an unreserved character.

With encoding:

https://captaindns.com?utm_campaign=Summer+sale+2025+-+50%25

Tracking works correctly, every special character is preserved.


Case 2: OAuth callback URL

Problem: You're setting up an OAuth flow and need to pass a return URL as a parameter.

Without encoding:

https://auth.captaindns.com/authorize?redirect_uri=https://captaindns.com/callback?token=abc&scope=read

The server interprets scope=read as a parameter of /authorize, not of /callback.

With redirect_uri encoding:

https://auth.captaindns.com/authorize?redirect_uri=https%3A%2F%2Fcaptaindns.com%2Fcallback%3Ftoken%3Dabc&scope=read

The nested URL is correctly isolated. The OAuth flow works as expected.


Problem: A customer reports that a link in your newsletter doesn't work. The raw link in the email looks like:

https://captaindns.com/offer?name=Coffee+%26+Tea&code=PROMO%2D20

Action: Paste the part after ? into the decoder to read the parameters:

  • name = Coffee & Tea
  • code = PROMO-20

This lets you immediately identify whether the values are correct or if double encoding has corrupted the link.


FAQ - Frequently asked questions

Q: What is the difference between URL encoding and Base64?

A: URL encoding (percent-encoding) replaces special characters with %XX to make them URL-safe. Base64 encodes binary data (images, files) into ASCII characters. The two are not interchangeable: use URL encoding for URL parameters, Base64 for transmitting binary data as text.


Q: Why do spaces become + signs?

A: This is a convention of the application/x-www-form-urlencoded format, used by HTML forms and query strings. In URL paths (before the ?), the space is encoded as %20. Both representations are valid in their respective contexts.


Q: Which characters are not encoded?

A: The 66 unreserved characters defined by RFC 3986 are never modified: letters A-Z, a-z, digits 0-9, and four symbols: -, _, ., ~. All other characters are encoded when they appear in a parameter value.


Q: Can I encode a full URL?

A: No, only encode the parameter values. Structural separators (://, /, ?, &, =) must remain as-is for the URL to stay functional. For example, encode the value Café & Thé but not the ? or & that structure the URL.


Q: What happens with double encoding?

A: Double encoding turns %26 into %2526 (the % itself gets re-encoded). The server then receives the literal string %26 instead of &. This is a common pitfall with nested redirects. If you suspect double encoding, decode twice and compare the results.


Q: What happens with invalid encoding?

A: If you try to decode an invalid sequence (e.g. %GG or a bare %), the tool displays an explanatory error message instead of a corrupted result. Fix the source sequence before trying again.


Complementary tools

ToolUse case
Base64 EncoderEncode binary data to ASCII for APIs and webhooks
Slug generatorTurn a title into a clean URL, free of special characters
Word counterCheck the length of your parameters before encoding
Case converterSwitch text to uppercase or lowercase before encoding it
Password generatorCreate random passwords to embed in your secure URLs
Hash generatorCompute MD5, SHA-256 or SHA-512 to verify data integrity

Useful resources