Skip to content

URL Encode String

Zero-dependency Python snippets for URL encoding using the standard library.

5 snippets available in this sub-category.


Simple

Encode query string parameters

url encode query params urlencode web

Encode query string parameters

from urllib.parse import urlencode

params = {'q': 'python programming', 'lang': 'en', 'page': 1}
encoded = urlencode(params)
print(encoded)  # q=python+programming&lang=en&page=1

Notes

  • Spaces are encoded as + by default in query strings
  • Use for GET/POST data

Encode path segment

url encode path quote web

Encode path segment

from urllib.parse import quote

segment = 'Café & Bistro/2024'
encoded = quote(segment)
print(encoded)  # Caf%C3%A9%20%26%20Bistro/2024

# To encode slashes as well:
encoded_strict = quote(segment, safe='')
print(encoded_strict)  # Caf%C3%A9%20%26%20Bistro%2F2024

Notes

  • quote() encodes special and non-ASCII characters
  • Use safe='' to encode all reserved characters

Encode form data for POST

url encode form post urlencode web

Encode form data for POST

from urllib.parse import urlencode

data = {'name': 'John Doe', 'email': 'john@example.com', 'message': 'Hello!'}
encoded = urlencode(data)
print(encoded)  # name=John+Doe&email=john%40example.com&message=Hello%21

Notes

  • Use for application/x-www-form-urlencoded POST bodies

Complex

Encode with Unicode and reserved characters

url encode unicode reserved web

Encode with Unicode and reserved characters

from urllib.parse import quote, urlencode

text = 'emoji: 😃 & symbols: @#%'
encoded = quote(text)
print(encoded)  # emoji%3A%20%F0%9F%98%83%20%26%20symbols%3A%20%40%23%25

params = {'q': 'café', 'emoji': '😃'}
encoded_params = urlencode(params)
print(encoded_params)  # q=caf%C3%A9&emoji=%F0%9F%98%83

Notes

  • Unicode and emoji are percent-encoded
  • Reserved characters (e.g., @, #, %) are encoded

Edge Cases

Encode already-encoded strings and empty values

url encode edge-case double empty web

Encode already-encoded strings and empty values

from urllib.parse import quote

already_encoded = 'hello%20world'
encoded = quote(already_encoded)
print(encoded)  # hello%2520world (double-encoded)

empty = ''
print(quote(empty))  # ''

Notes

  • Double-encoding can occur if input is already percent-encoded
  • Empty strings remain empty

🔗 Cross-References

🏷️ Tags

url, encode, query, params, form, unicode, reserved, edge-case, web, quote, urlencode

📝 Notes

  • Use quote for path segments, urlencode for query/form data
  • Always encode user input before including in URLs
  • For decoding, see urllib.parse.unquote and parse_qs