---
title: URL Encoder & Decoder Online — Percent-Encode Text & Links
url: https://varstatt.com/toolkit/url
description: Encode and decode URLs and query strings live, both directions. Runs in your browser.
section: Developer Toolkit (https://varstatt.com/toolkit)
tags: encoding
related: Base64 (https://varstatt.com/toolkit/base64), URL (https://varstatt.com/toolkit/url), Hash (https://varstatt.com/toolkit/hash)
---
# URL Encoder/Decoder

Encode and decode URLs and query strings live, both directions. Runs in your browser.

## How It Works

1. **Pick a mode** — Component encodes everything unsafe, for a query value or a path part. Full URL keeps the characters a link needs (: / ? # & =). Form turns spaces into + as HTML forms do.
2. **Type on either side** — Type plain text on the left to encode it, or paste an encoded string on the right to decode it. The other side updates live.
3. **Copy the result** — Copy either side. An invalid sequence, such as a lone % sign, is flagged instead of guessed.

## FAQ

### What is the difference between Component and Full URL?

Component mode (encodeURIComponent) escapes every reserved character, including / ? & = and #, so the text is safe as one value inside a URL. Full URL mode (encodeURI) leaves those characters alone, so a whole link keeps its structure. To encode a value inside a query string, use Component. To clean up a whole link, use Full URL.

### Why does a space become %20 or +?

In a URL path and in most query strings a space is %20. HTML forms use an older rule, application/x-www-form-urlencoded, where a space is +. Form mode follows that rule when it encodes and decodes.

### Why is decoding failing?

The text has a % that is not followed by two hex digits, or the bytes do not form valid UTF-8. A literal % must be written as %25. Fix the sequence the tool points at and the other side fills in.

### Does it handle Unicode and emoji?

Yes. Characters are encoded as UTF-8 bytes first, so 'zażółć' and emoji come out as %C5%BC-style sequences and decode back.

### Is anything sent to a server?

No. Encoding and decoding run in your browser. For a related encoding, try the [Base64 encoder](https://varstatt.com/toolkit/base64).

## Usage

This tool runs entirely in the browser — visit the URL above to use it.

Prefill inputs via URL parameters:

- `https://varstatt.com/toolkit/url?input=...`

## Related Tools

- [Base64](https://varstatt.com/toolkit/base64)
- [URL](https://varstatt.com/toolkit/url)
- [Hash](https://varstatt.com/toolkit/hash)
