URL Encoder, Decoder & Inspector

Encode a query value, decode percent escapes, or inspect an HTTP URL without opening it. Processing stays in this tab.

Component encoding is for a value inside a URL, not the whole address.

How URL encoding keeps data intact

URLs transport data through limited character sets. Reserved characters such as &, ?, or spaces can break query strings unless they are percent-encoded. Encoding converts them into safe byte sequences so servers can reconstruct the original text.

Reserved characters

  • ? separates the path from the query string.
  • & divides query parameters.
  • # introduces the fragment that browsers treat as client-side state.
  • Spaces become %20 or + depending on context.

When to encode

  • Always encode values placed in query strings or form data.
  • Encode path segments when they contain spaces or Unicode characters.
  • Signed URLs (S3, CDN) require deterministic encoding and parameter order.
  • Never double-encode; decode first if you suspect layered encoding.

Avoid URL encoding mistakes

This tool encodes a component or inspects an address locally. It does not follow redirects or verify that a destination is safe.

Encode values, not full addresses

Encode a query value before appending it to a URL. Encoding the whole address also escapes its separators and changes its meaning.

Avoid double encoding

A value containing %20 becomes %2520 if encoded again. Decode once only when you know the source format.

Preserve signed URLs

Changing a signed URL's path, parameter order or escaping can invalidate its signature. Inspect a copy and keep the original for requests.

Understand component encoding and query parsing

Encode email@example.com as email%40example.com. In form-style query strings, + means a space; Decode component preserves a literal +, while Inspect URL uses query-string rules. Inspect does not follow redirects or verify a destination.

JavaScript (URL API)

const url = new URL('https://example.com/callback?code=abc123&state=xyz');
console.log(url.searchParams.get('code'));
console.log(encodeURIComponent('email@example.com'));

Python (urllib)

from urllib.parse import urlencode, urlparse, parse_qs

params = {'code': 'abc123', 'state': 'xyz'}
query = urlencode(params)
print(query)  # code=abc123&state=xyz

parsed = urlparse('https://example.com/callback?code=abc123&state=xyz')
print(parse_qs(parsed.query))

URL tool FAQ

What does URL encoding do?

URL encoding replaces reserved characters with percent-encoded bytes so data stays intact when transmitted through query strings, form submissions, or HTTP headers.

Does this tool shorten URLs or follow redirects?

No. It transforms text and parses HTTP or HTTPS URLs locally. It does not create hosted short links or contact the destination.

How do I analyze query parameters?

Choose Inspect URL. The result lists the scheme, hostname, path, fragment and parameter pairs. Repeated keys are preserved as separate pairs, and query + characters decode as spaces.

Does this tool send URLs to a server?

No. HashyTools performs all encoding and decoding locally, so sensitive callback URLs, tokens, and credentials stay on your device.

Does inspection prove that a URL is safe?

No. Parsed fields describe the supplied address, not the content behind it. HTTPS encrypts the connection but does not establish that the destination is trustworthy.

Choose a developer tool

More tools for data, text and testing

Run the AES interoperability guide or read how these tools are checked.