URL Encoder / Decoder

Percent-encode or decode URLs and query strings — component or full-URL mode. Free, in your browser.

Runs entirely in your browser — nothing is sent to a server.

How to use the URL Encoder / Decoder

  1. Choose mode. Pick encode or decode, and component vs full-URL scope.
  2. Paste your text. Enter the URL or query value.
  3. Copy the result. One-click copy the encoded or decoded output.

Free to use — premium coming soon

FREE
  • Encode & decode
  • Component & full-URL modes
  • 100% private
PREMIUM
  • Remove ads
  • Bulk encode/decode

About the URL Encoder / Decoder

The URL Encoder / Decoder converts text to and from percent-encoding, the format that lets arbitrary characters travel safely inside a web address. When a URL contains a space, an ampersand, a question mark, or a non-English letter, that character is replaced with a percent sign followed by its hexadecimal byte value (a space becomes %20, an ampersand becomes %26). Decoding reverses the process, turning %20 back into a space so you can read the original value. Paste a raw link or a single query value, choose encode or decode, and copy the clean result without hunting through documentation or writing a one-off script.

Reach for this tool whenever a value has to be placed inside a URL but might contain characters that the address bar treats as structure. Common cases include building a query string by hand, sharing a search link that contains spaces or symbols, embedding a redirect target as a parameter, debugging an API request that returns 400 errors, or reading a logged URL where everything has been escaped into %xx codes. It is equally handy for decoding a link someone sent you so you can see the real destination, and for confirming that a special character such as + or # was encoded the way the receiving server expects.

Under the hood the tool offers the two encoding modes JavaScript provides. The component mode (encodeURIComponent) escapes everything except letters, digits and the characters - _ . ! ~ * ' ( ), so it safely encodes the reserved characters / ? : @ & = + $ # that have structural meaning. Use it for individual query values and path segments. The full-URI mode (encodeURI) leaves those reserved characters intact so an already-complete address keeps its slashes and colons. Per RFC 3986 the only always-safe unencoded characters are A-Z, a-z, 0-9 and - . _ ~; both modes encode a space as %20.

Everything runs locally in your browser using the native encoding functions, so the text you paste is never uploaded to a server, stored, or logged. That makes the tool safe for links that contain access tokens, session IDs, internal hostnames, or personal data in query parameters. One accuracy note worth remembering: encoding a string that is already encoded double-escapes it (a % becomes %25), so decode first if you are unsure of the current state, and only encode raw, human-readable text once.

Frequently asked questions

What is the difference between encodeURIComponent and encodeURI?

encodeURIComponent encodes the reserved characters / ? : @ & = + $ #, making it correct for a single query value or path segment. encodeURI leaves those characters alone because it assumes you are encoding a complete, already-structured URL. Use component mode for pieces, full-URI mode for whole links.

Why is a space sometimes %20 and sometimes a plus sign?

Percent-encoding from the URI standard (RFC 3986) turns a space into %20, which works everywhere. The plus sign comes from HTML form encoding (application/x-www-form-urlencoded), where a space becomes +. Most servers accept both in a query string, but %20 is the more universally correct choice.

Which characters do I actually need to encode?

Only A-Z, a-z, 0-9 and the four characters - . _ ~ are always safe unencoded. Everything else, including spaces, accented letters, and reserved symbols like &, =, ?, # and /, should be percent-encoded when it appears inside a value rather than as URL structure.

My encoded text looks wrong with %25 everywhere. What happened?

That is double-encoding: a string that was already encoded got encoded again, so each existing % turned into %25. Run it through the decoder once (or twice if needed) to recover the original, then encode the raw text only a single time.

Is it safe to paste a URL with a token or private data?

Yes. Encoding and decoding happen entirely in your browser with native JavaScript functions, so nothing is sent to a server or stored. You can safely process links that contain access tokens, IDs, or personal information.

From our blog

How to Build Realistic CSS Box-Shadows: From Flat to Layered Depth

By the Super Simple Digital Tools Team · Updated June 2026

A single default box-shadow tends to look flat and a little generic because real shadows are not one solid blob. In the physical world, light casts a sharp close shadow and a softer, wider one at the same time, plus a faint ambient darkening underneath. Replicating that in CSS is the difference between a card that looks pasted on and one that looks like it is genuinely floating above the page. The good news is that the property gives you all the controls you need; you just have to understand what each value contributes before you start combining them.

Start with the two required offsets. Think of them as the position of the light source: a shadow that falls down and slightly right (positive offset-y, small positive offset-x) reads as overhead light, which is what users expect. Keep vertical offset larger than horizontal for most interface elements, since lighting in apps is usually treated as coming from above. Once the direction feels right, add blur to control softness. Higher elevation surfaces cast softer, more spread-out shadows, so a tooltip hovering close to the page should have a tighter shadow than a modal floating well above it.

Spread is the value people most often forget, yet it changes the whole character of a shadow. A positive spread grows the shadow outward before blurring, which is useful for glow effects and chunky elevation. A negative spread pulls the shadow in, which is perfect when you want the shadow to peek out only at the bottom of an element rather than haloing all four sides. Pairing a small negative spread with a downward offset is a quick way to get a grounded, weighted look instead of a uniform floating ring.

The biggest upgrade comes from layering. Stack two or three comma-separated shadows in one declaration: a small, low-blur shadow for the crisp contact edge, and a larger, higher-blur shadow at lower opacity for the soft ambient cast. This mirrors how design systems handle elevation, where each level is built from multiple light contributions rather than a single shadow. Three layers is almost always enough; past that the visual gain is negligible and every extra shadow is more work for the browser to paint, especially during animation.

Finally, mind your color. Pure black shadows look muddy and artificial against colored or off-white backgrounds. Use a dark, slightly desaturated version of the background hue with a low alpha, often in the 0.1 to 0.25 range, so the shadow tints naturally rather than smearing gray over everything. When you want a focus ring or a hairline divider that will not shift your layout, set blur to zero and use spread alone, for example 0 0 0 3px of a brand color. Tune all of this live in the generator, then copy the finished declaration straight into your stylesheet.

  • Keep vertical offset larger than horizontal so shadows read as overhead light, which matches how most interfaces are lit.
  • Layer a tight low-blur shadow with a wider soft one in the same declaration to get convincing depth instead of a flat single shadow.
  • Use rgba or hsla with low alpha (around 0.1 to 0.25) and a dark, slightly desaturated hue rather than solid black for natural-looking shadows.
  • For a focus ring or border that never causes layout shift, set blur to 0 and use spread only, such as 0 0 0 3px color, since box-shadow does not change element size.

Read the full guide →

Tool by the Super Simple Digital Tools Team. Reviewed by our editorial team. Free to use, no signup required.

Related tools