URLEncoder.tools is a free online URL encoder and decoder that converts special characters in URLs to their percent-encoded equivalents as defined by RFC 3986. It supports five encoding modes: Standard URL Encode (encodeURIComponent), Full URL Encode (encodeURI), URL Decode, Batch Mode for multiple URLs, and Form Data Encode. All processing happens client-side in the browser with zero data sent to any server. The tool supports 12 languages and works with Unicode characters including emoji.

Free Online URL Encoder & Decoder Tool

Instantly encode or decode any URL string โ€” RFC 3986 compliant, works in your browser, no data sent to servers.

100% Client-SideNo Login RequiredGDPR Compliant
โ€”
Characters: 0Encoded sequences: 0

Tip: Press Ctrl+Enter to encode, Esc to clear

Related Tools

What is URL Encoding?

URL encoding (also called percent-encoding) is a method of converting special characters in a URL into a format that can be safely transmitted over the internet. It replaces unsafe ASCII characters with a percent sign (%) followed by two hexadecimal digits representing the character's byte value, as defined by RFC 3986.

For example, a space character becomes %20, an ampersand (&) becomes %26, and a question mark (?) becomes %3F. The unreserved characters that do not require encoding are: A-Z, a-z, 0-9, hyphen (-), underscore (_), period (.), and tilde (~).

How Does URL Encoding Work?

URL encoding works by converting each character to its UTF-8 byte sequence, then representing each byte as a percent sign followed by two hexadecimal digits. Single-byte ASCII characters like a space produce one percent-encoded triplet (%20), while multi-byte Unicode characters produce multiple triplets.

RFC 3986 divides characters into two groups: reserved characters (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) that have special meaning in URL syntax, and unreserved characters (A-Z, a-z, 0-9, -, _, ., ~) that can appear in URLs without encoding. Reserved characters must be percent-encoded when used as data rather than as delimiters.

When Do You Need to Encode a URL?

You need to encode URLs when they contain special characters like spaces, ampersands (&), equals signs (=), or non-ASCII characters. Common scenarios include: building query strings for API calls, encoding form data for submission, sharing URLs containing special characters in emails or messages, and working with internationalized domain names.

Query Strings & API Calls

When building REST API requests, query parameters containing special characters like &, =, or spaces must be percent-encoded to avoid breaking the URL structure.

Form Data Submission

HTML forms submitted via GET method encode field values as query parameters. Spaces become + or %20, and special characters are percent-encoded.

Email & Messaging Links

URLs shared in emails or chat messages often contain special characters that need encoding to remain clickable and functional.

JavaScript fetch() & AJAX

When constructing URLs dynamically in JavaScript, always use encodeURIComponent() for parameter values to prevent XSS and malformed requests.

Common URL-Encoded Characters

CharacterEncodedUnicode
(space)%20U+0020
!%21U+0021
#%23U+0023
$%24U+0024
&%26U+0026
+%2BU+002B
,%2CU+002C
/%2FU+002F
:%3AU+003A
;%3BU+003B
=%3DU+003D
?%3FU+003F
@%40U+0040
[%5BU+005B
]%5DU+005D

URL Encoding in Programming Languages

JavaScript

encodeURIComponent('hello world')
// โ†’ "hello%20world"

decodeURIComponent('hello%20world')
// โ†’ "hello world"

encodeURI('https://example.com/search?q=hello world')
// โ†’ "https://example.com/search?q=hello%20world"

Python

from urllib.parse import quote, unquote

quote('hello world')
# โ†’ "hello%20world"

unquote('hello%20world')
# โ†’ "hello world"

PHP

urlencode('hello world');
// โ†’ "hello+world"

rawurlencode('hello world');
// โ†’ "hello%20world"

urldecode('hello%20world');
// โ†’ "hello world"

Java

URLEncoder.encode("hello world", "UTF-8");
// โ†’ "hello+world"

URLDecoder.decode("hello+world", "UTF-8");
// โ†’ "hello world"

C#

Uri.EscapeDataString("hello world");
// โ†’ "hello%20world"

Uri.UnescapeDataString("hello%20world");
// โ†’ "hello world"

Ruby

require 'uri'

URI.encode_www_form_component('hello world')
# โ†’ "hello+world"

URI.decode_www_form_component('hello+world')
# โ†’ "hello world"

Frequently Asked Questions

What characters need to be URL encoded?

Characters that need URL encoding include spaces, special characters like &, =, ?, #, %, and all non-ASCII characters. The unreserved characters that do NOT need encoding are: A-Z, a-z, 0-9, hyphen (-), underscore (_), period (.), and tilde (~).

What is the difference between %20 and + in a URL?

%20 represents a space in the URL path and is the standard percent-encoding. The + sign represents a space only in query string parameters when using application/x-www-form-urlencoded format.

Is URL encoding the same as Base64 encoding?

No. URL encoding converts special characters in URLs to a %XX hex format. Base64 encoding converts binary data into a text string using 64 printable ASCII characters. They serve entirely different purposes.

How do I decode a URL in JavaScript?

Use decodeURIComponent() to decode a URL component, or decodeURI() to decode a full URL. For example: decodeURIComponent('%20') returns a space character.

What is RFC 3986?

RFC 3986 is the standard that defines the syntax of Uniform Resource Identifiers (URIs). It specifies which characters are allowed in URLs and how special characters should be percent-encoded.

Why does my URL have %3D and %26 in it?

%3D is the URL-encoded form of the equals sign (=) and %26 is the encoded form of the ampersand (&). These characters have special meaning in URLs, so they must be encoded when used as data values.

Learn More About URL Encoding

Read our in-depth guides and tutorials about URL encoding best practices.

Visit Our Blog