Nifty Tools

URL encoder

Use a free url encoder in your browser. Percent-encode text for URLs with RFC 3986 strict mode. No upload, no signup.

Processing mode: Local Browser-local

Paste a readable value to encode.

How to use it

URL Encoder Online Free

  1. Paste a readable value into the input panel — a redirect URI, a query parameter value, an email address, a file path, or any string that needs percent-encoding for safe use inside a URL.
  2. Click Encode. The page runs `encodeURIComponent` with a strict RFC 3986 wrapper that additionally escapes `!`, `*`, `'`, `(`, `)`. Toggle form-encoding on if you need `application/x-www-form-urlencoded` output (space → `+`).
  3. Copy or download the encoded result. To go the other direction, toggle Decode, paste a percent-encoded value, and click Decode. Nothing leaves your browser.

Good for

Common use cases

People reach for a url encoder when they need to embed a readable value — a redirect URI, a query parameter, a file path with spaces, an email address, a JSON payload — inside a URL and the value contains characters that would break the URL's structure if left unescaped. The operation is the inverse of URL decoding: take a readable string, run it through `encodeURIComponent`, and get back a percent-encoded value where every reserved character (`/`, `?`, `&`, `=`, `#`, `+`, space, and the rest of the RFC 3986 reserved set) is replaced by its `%XX` hex representation. The encoded output is safe to drop into a query parameter value, a path segment, a `redirect_uri` field in an OAuth flow, or a `Location` header without accidentally introducing a structural separator that the URL parser on the other end would misinterpret. Doing it browser-local matters because the values you are encoding routinely contain customer email addresses, API keys, webhook secrets, unreleased feature flags, and partner identifiers that have no business transiting an arbitrary online service.

Processing mode

Browser-local

Files are processed by your browser. They never reach our servers.

Questions

URL Encoder Online Free FAQ

When do I use `encodeURI` vs `encodeURIComponent` — and which one is this page?

This page uses `encodeURIComponent` (with a strict RFC 3986 wrapper), not `encodeURI`. The two are not interchangeable. `encodeURI` is intended for whole URLs and deliberately does NOT escape the URL-syntax characters `:` `/` `?` `#` `[` `]` `@` `!` `$` `&` `'` `(` `)` `*` `+` `,` `;` `=` — because escaping them would break the URL's structure. `encodeURIComponent` is intended for individual URL components (a single query parameter value, a single path segment) and DOES escape those characters — but for backward compatibility it leaves `!` `*` `'` `(` `)` unescaped. This page wraps `encodeURIComponent` and additionally percent-encodes those five, so the output is safe in every URI parser. If you need to lightly escape stray spaces or unicode in a whole URL string, `encodeURI` is the right native call — but this page does not expose it because the boundary between "this is a whole URL" and "this is a URL component" is exactly where percent-encoding bugs come from.

What is the difference between RFC 3986 encoding and form-encoding?

RFC 3986 percent-encodes the reserved characters and writes space as `%20`. HTML's `application/x-www-form-urlencoded` (form bodies and browser-submitted query strings) writes space as `+` and any literal `+` as `%2B`. The two formats overlap on most characters but disagree on the space byte and the meaning of `+`. The toggle on this page exposes the difference explicitly: default is RFC 3986, the form-encoding switch flips to the HTML form rule. Browsers use the form rule when assembling `<form method="get">` requests, and `URLSearchParams` uses the form rule too — which is why a query string from a form looks like `?q=hello+world` rather than `?q=hello%20world`.

Why does this page encode `!` `*` `'` `(` `)` when `encodeURIComponent` does not?

Because RFC 3986 §2.2 lists those five sub-delimiter characters as reserved. The native `encodeURIComponent` leaves them unescaped for backward compatibility with the older RFC 2396 spec. Most URI parsers treat them as literal pass-through, but some — particularly OAuth signature base string builders and XML-based URL processors — treat sub-delimiters as structural. Encoding them unconditionally ensures the output round-trips safely through every parser, including the strictest ones.

Does this tool send my data to a server?

No. `encodeURIComponent`, `decodeURIComponent`, and the WHATWG `URL` constructor are all native browser APIs that run inside this tab. The input, the encoded output, and any download all stay on your device. There is no signup, no watermark, no analytics on the value itself. Safe for OAuth redirect URIs with client secrets, API keys, webhook secrets, signed S3 URLs, and any value that should not transit an arbitrary online service.

Is there a length cap?

The transform call is capped at 1 MB to keep the encoder snappy on lower-RAM devices. If you are encoding a multi-megabyte value, the right tool is a streaming approach in Node (`encodeURIComponent` on chunks) rather than a browser textarea.

Can I encode a full URL with this tool?

You can paste a full URL and click Encode, but the result will percent-encode the structural separators (`:`, `/`, `?`, `#`, `&`, `=`) — turning the URL into a single opaque string. That is the correct behavior when you are nesting a URL inside another URL's query parameter (e.g. a `redirect_uri` value). If you want to encode only the unsafe characters in a URL while preserving its structure, the native `encodeURI` function is what you need — but this page deliberately does not expose it because the boundary between "preserve structure" and "encode this component" is exactly where bugs come from.

Will this tool stay free?

Yes. The URL encode/decode workflow stays free. Optional Day and Project Passes apply to supported file-pipeline tools when you need higher file or batch limits.

Will this tool stay free?

Yes. The core workflow stays free. Optional Day and Project Passes add more file and batch headroom on supported file-pipeline tools when you hit the free limits.