Free URL Encoder

Type or paste text and get its percent-encoded form as you type, ready to drop into a URL, query string or form body. Spaces become %20 (or +), symbols such as & and ? become %26 and %3F, and accented letters, other scripts and emoji are encoded as UTF-8 bytes. Use Component mode for a single value and Full URL mode for a whole address. Everything runs in your browser; your text is not uploaded.

Encoding Mode

For one query value, path segment or form field, or for a whole URL you are putting inside another URL: encodes / ? & = # : and nearly every other reserved character (Strict RFC 3986 adds ! ' ( ) *).

Characters: 0 | Lines: 0Encodes as you type
Output: 0 characters

Quick Guide

  • โ€ข Component mode: for a single query value, path segment or form field, and for a URL you pass as a parameter of another URL (most common)
  • โ€ข Full URL mode: keeps the URL structure (: / ? & # =) and encodes only characters that are not allowed in a URL. It also encodes %, so decode an already-encoded URL first
  • โ€ข Space encoding: %20 works everywhere; + is the form-data (application/x-www-form-urlencoded) convention. With +, a literal plus sign is always written as %2B
  • โ€ข Strict RFC 3986: also escapes ! ' ( ) *, which encodeURIComponent leaves as they are
  • โ€ข Batch encoding: enter one item per line and keep "Encode each line separately" on

URL encoder: percent-encode text for URLs, free and private

A URL encoder converts text into percent-encoded form so it can sit safely inside a web address: a space becomes %20, an ampersand becomes %26 and รฉ becomes %C3%A9. To encode a URL free and privately, type or paste your text into Input URL or Text and copy the result from Encoded Output, which updates as you type. The encoding runs in your browser and nothing is uploaded; you can check that in the Network tab of DevTools.

The choice that matters is the Encoding Mode. Component (encodeURIComponent), the default, escapes every reserved character except ! ' ( ) * (tick Strict RFC 3986 to escape those as well), so it suits a single query value, path segment or form field, and also a whole URL that you are passing as a parameter of another URL. Full URL (encodeURI) keeps : / ? # & = as they are, so it suits tidying a complete address that contains spaces or accents.

To reverse the process, paste the result into the URL decoder. Text that is headed for an HTML page rather than a URL needs the HTML entity encoder, and binary-safe text for an email or a data field is a job for the Base64 encoder.

Table of Use: text in, encoded URL out

Example inputs, the settings used, and the encoded text the tool returns
You pasteSettingsYou get
hello worldComponent, %20 (the defaults)hello%20world
hello worldComponent, Space Encoding set to +hello+world
Sports & RecreationComponentSports%20%26%20Recreation
1+1=2Component1%2B1%3D2
cafรฉComponent (UTF-8)caf%C3%A9
๐Ÿ‘‹Component (UTF-8, four bytes)%F0%9F%91%8B
it's (fine)!Componentit's%20(fine)!
it's (fine)!Component, Strict RFC 3986 tickedit%27s%20%28fine%29%21
https://example.com/search?q=hello world&lang=enComponenthttps%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world%26lang%3Den
https://example.com/search?q=hello world&lang=enFull URLhttps://example.com/search?q=hello%20world&lang=en
https://example.com/a%20bFull URL: the % itself is encodedhttps://example.com/a%2520b

URLs have practical length limits, so a JSON value in a parameter is worth shrinking before you encode it: run it through the JSON minifier first. If the link starts life as a headline, make the path with the slug generator and encode only the query values.

Features

  • Encodes as you type. There is no Encode button; Encoded Output is recalculated on every change.
  • Two modes. Component (encodeURIComponent) for values, Full URL (encodeURI) for complete addresses. The line under the buttons explains the active mode.
  • Space Encoding. %20 (Standard) or + (Form data). With +, a real plus sign is always written as %2B.
  • Strict RFC 3986. Also encodes ! ' ( ) * as %21 %27 %28 %29 %2A. It is available in Component mode only, and the checkbox is disabled in Full URL mode.
  • Encode each line separately. On by default, so a list of values keeps its line breaks. Untick it to encode multi-line text as one value, where a line break becomes %0A.
  • UTF-8 for any script. Accented letters, Chinese, Arabic, Hindi and emoji become several %XX codes. A broken half-emoji becomes the replacement character and triggers a notice.
  • Show Reference. A table of 23 characters, from space to the euro sign, with the percent code and the result under your current settings.
  • Copy, Download, Undo, Redo and Clear. Download saves a text file named encoded-url followed by a timestamp.
  • Counters. Characters and lines in, characters out, and the percentage increase when the output is longer.

It only percent-encodes. It does not shorten links, check that a URL works, or build query strings for you. To see the bytes behind a %XX code, set the text to ASCII converter to hexadecimal output and UTF-8 bytes: รฉ shows as C3 A9, the two bytes that this page writes as %C3%A9.

How to URL-encode text, step by step

  1. Paste or type your text, query value or URL into Input URL or Text.
  2. Under Encoding Mode, keep Component (encodeURIComponent) for a value, a path segment or a URL going inside another URL. Choose Full URL (encodeURI) for a complete address that you only want to repair.
  3. In Space Encoding, pick %20 (Standard), or + (Form data) if you are building form-encoded data.
  4. Tick Strict RFC 3986 if the receiving system needs ! ' ( ) * escaped. This works in Component mode only.
  5. For a list, leave Encode each line separately ticked. Untick it to encode everything as a single value.
  6. Read Encoded Output. Click Show Reference if you want to check a character against the table.
  7. Click Copy to put the result on your clipboard, Download to save it, or Clear to start over. Undo and Redo step through your recent inputs and option changes.

Who can use it

  • Web developers building query strings, redirect targets and REST paths, then checking the output with the URL decoder.
  • Marketers adding campaign parameters whose names contain spaces, ampersands or accents, so a UTM link survives email clients and chat apps.
  • API testers and integrators preparing signed requests, where Strict RFC 3986 gives the stricter escaping that OAuth 1.0 and AWS signing expect.
  • Spreadsheet and CMS editors fixing links with raw spaces or non-English characters before a bulk find and replace.
  • Students learning how reserved characters work, with the reference table and the ASCII to text converter side by side.

FAQs

How do I URL-encode text online?

Type or paste the text into Input URL or Text. The encoded version appears in Encoded Output as you type, with spaces as %20, symbols such as & and ? as %26 and %3F, and accented letters as UTF-8 byte codes. Keep Encoding Mode on Component for a single value, or switch to Full URL for a whole address. Then click Copy.

What is the difference between encodeURI and encodeURIComponent?

encodeURIComponent, the Component mode, escapes all reserved characters except ! ' ( ) *, including / ? & = # : and @, so the result is safe as one value inside a URL. encodeURI, the Full URL mode, keeps those structural characters and only escapes characters that may not appear literally in a URL, such as spaces, double quotes, brackets, % and non-ASCII text.

Should I use %20 or + for spaces in a URL?

%20 is understood everywhere: paths, query strings and form bodies. A + means a space only in query strings and HTML form data (application/x-www-form-urlencoded); in a path it is a literal plus sign. Use %20 unless the receiving side expects form encoding. When you pick + in Space Encoding, the tool writes real plus signs as %2B so they are not read back as spaces.

Why are ! ' ( ) and * not encoded, and what does Strict RFC 3986 do?

JavaScript's encodeURIComponent leaves ! ' ( ) * as they are, and most servers accept them. RFC 3986 treats them as reserved, and some signing schemes, such as OAuth 1.0 and AWS request signing, expect them escaped. Tick Strict RFC 3986 in Component mode and the tool writes them as %21 %27 %28 %29 %2A.

Can I URL-encode non-English characters and emoji?

Yes. Characters outside ASCII are converted to UTF-8 bytes and each byte is written as %XX, so รฉ becomes %C3%A9, the euro sign becomes %E2%82%AC and the waving-hand emoji becomes %F0%9F%91%8B. Half of an emoji left over from a bad copy and paste is encoded as the replacement character, %EF%BF%BD, and the tool shows a notice.

Why is my encoded URL full of %25 or %2520?

The text was already encoded when you encoded it again. Every % in an existing code is itself encoded as %25, so a space written as %20 turns into %2520. Both modes do this to any text that already contains percent codes. Decode the text first with the URL decoder, then encode it once.

Is my text sent to a server when I encode it?

No. The encoding runs as JavaScript in your browser, and the text you paste is not uploaded, logged or stored by ZipConvert. You can check this by opening the Network tab in your browser DevTools while you type: no request carries your text.