URL Encoding in Python

Learn how to perform URL encoding and decoding in Python using libraries like urllib.parse. Understand how to handle special characters in URLs, work with query strings, and ensure that your applications generate clean and reliable links. With Python’s built-in tools, you can easily encode and decode URLs for web development, APIs, and data processing tasks.

Programming September 15, 2025 8 min read

URL Encoding in Python

When working with web applications or APIs in Python, you’ll often need to encode URLs to handle spaces, special characters, or non-ASCII text. Python’s urllib.parse module makes this process simple and reliable.

Why Use URL Encoding in Python?

Without encoding, URLs containing characters like &, spaces, or symbols could break or lead to errors. Proper encoding ensures your data is safely transmitted and understood by browsers, servers, and APIs.

Basic Encoding with quote()

The quote() function encodes a string by replacing unsafe characters with percent-encoded equivalents.

from urllib.parse import quote

text = "Hello World! &?=+"
encoded = quote(text)
print(encoded)  
# Output: Hello%20World%21%20%26%3F%3D%2B
  

Form-Style Encoding with quote_plus()

If you’re dealing with form submissions or query strings, use quote_plus(). This encodes spaces as + instead of %20.

from urllib.parse import quote_plus

text = "Hello World! &?=+"
encoded_plus = quote_plus(text)
print(encoded_plus)  
# Output: Hello+World%21+%26%3F%3D%2B
  

Decoding with unquote()

To convert an encoded string back into its readable form, use unquote() or unquote_plus().

from urllib.parse import unquote, unquote_plus

encoded = "Hello%20World%21%20%26%3F%3D%2B"
decoded = unquote(encoded)
print(decoded)  
# Output: Hello World! &?=+

encoded_plus = "Hello+World%21+%26%3F%3D%2B"
decoded_plus = unquote_plus(encoded_plus)
print(decoded_plus)  
# Output: Hello World! &?=+
  

When to Use Which Function?

  • quote(): Best for general URL components like paths.
  • quote_plus(): Ideal for query parameters and form data.
  • unquote(): Decodes %20 back to spaces.
  • unquote_plus(): Decodes both + and %20 into spaces.

Final Thoughts

Python’s urllib.parse module gives you all the tools you need to handle URL encoding and decoding safely. By using the right function for the right context, you can avoid broken links, ensure secure data transmission, and build more reliable web applications.