Skip to main content

URL Encoder and Decoder Tool

Percent-encodes or decodes URL strings, treating each line as an independent value so multi-line input is processed in bulk. A Form Mode toggle switches between %20 and + for spaces (application/x-www-form-urlencoded); Encode All applies percent-encoding to every non-unreserved character; Force Double-Encode re-encodes existing %HH sequences. Outputs appear as an original/transformed pair with per-row copy buttons and an optional character-map view that highlights differences.

Runs entirely in your browser

This tool sends nothing over the network. Everything you enter is processed on your device and never reaches our servers.

Web Development
Security
API
Data Transmission
Loading the tool
Reference

Documentation

URL encoding converts text and URLs to safe, percent-encoded formats; decoding restores an encoded string to readable text. Percent-encoding protects query strings, form data, and API parameters from characters that would otherwise break a URL, and applying it consistently improves reliability across browsers, scripts, and server-side code.

Single values and large lists both process in one pass. Form mode matches application/x-www-form-urlencoded data, encoding all non-unreserved characters suits strict scenarios, and forced double-encoding produces %25HH sequences for a downstream system that expects them. Results export as CSV as well as plain text, and a character-difference view speeds up auditing a conversion.

  • Reserved characters (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) may need encoding depending on context.
  • Unreserved characters (A-Z a-z 0-9 - . _ ~) are never encoded.
  • Spaces become %20 in standard encoding or + in form mode (application/x-www-form-urlencoded).
  • Encoding an already-encoded URL a second time encodes the percent signs themselves, turning %2F into %252F, which is usually not the intended result unless double-encoding is deliberately required.
  • Multiple URLs in the same input are each detected and processed independently.
  • UTF-8 encoding represents international characters as multiple percent-encoded bytes: café becomes caf%C3%A9.
  • Encoding reserved characters that are normally left alone is available as a stricter, non-default setting for cases that require it.

Text and URLs convert to safe web formats, or percent-encoded strings restore to human-readable form, matching the behavior browsers, APIs, and forms expect.

  • Encode percent-encodes text; decode converts %HH sequences back to text. Auto-detect switches between the two when the input clearly indicates the opposite action.
  • Form mode replaces spaces with + for application/x-www-form-urlencoded data; leaving it off encodes spaces as %20.
  • Processing each line separately converts a list line by line, which matters when handling bulk URLs or parameters rather than a single value.
  • Encoding all non-unreserved characters encodes reserved symbols that are usually preserved in URLs, for contexts requiring strict encoding.
  • Force double-encoding re-encodes an existing %HH sequence as %25HH, for a downstream system that expects double encoding.
  • Swapping input and result feeds the output back into the input, useful for chained conversions or for confirming a round trip.
  • Results export as a .txt file for a single value or a .csv file for multiple items.
  • A character map and differences view shows exactly which characters changed and where, useful for a quick audit of a conversion.

Formulas and logic:

  • Unreserved characters stay unchanged: A-Z a-z 0-9 - . _ ~.
  • Spaces encode as %20 by default or as + in form mode.
  • Each byte is written as %HH using uppercase hexadecimal during percent-encoding.
  • Non-ASCII characters encode as UTF-8 bytes first, and each byte is then percent-encoded.
  • Decoding optionally converts + to a space in form mode, then maps each valid %HH to its byte before UTF-8 decoding reconstructs the character.
  • Force double-encoding turns an existing %HH into %25HH.
  • Encoding all non-unreserved characters encodes the reserved symbols :/?#[]@!$&'()*+,;= when strict encoding is required.

Prepare, validate, and troubleshoot URLs and text for web development, SEO, analytics, and system integration.

  • Build clean query strings for GET requests, encoding keys and values safely before sending requests to APIs and microservices.
  • Prepare form payloads for application/x-www-form-urlencoded workflows by converting spaces to + and encoding special characters.
  • Decode URLs in server logs to investigate redirects, missing pages, parameter corruption, and security filters.
  • Bulk-convert lists from TXT or CSV during SEO audits, site migrations, and marketing tag cleanups.
  • Handle Unicode in paths and parameters by confirming correct UTF-8 percent-encoding for internationalized content.
  • Sanitize user input in scripts and low-code automations to prevent broken requests and inconsistent link handling.
  • Verify webhook callback URLs and third-party redirect targets during QA, CI checks, and monitoring.
  • Normalize links in analytics exports to consolidate metrics and reduce duplicate URL variants.

Encoded output reads as a sequence of %HH bytes where HH is uppercase hexadecimal. A space reads as %20, or as + in form mode. Non-ASCII characters appear as multiple %HH bytes because UTF-8 represents them with multibyte sequences. Encoding all non-unreserved characters confirms strict encoding by percent-encoding reserved symbols as well. The character map shows exactly which characters changed and where.

  • Encode example: https://example.com/search?q=coffee & cream / café becomes https://example.com/search?q=coffee%20%26%20cream%20%2F%20caf%C3%A9.
  • Decode example: name%3DJohn+Doe%26city%3DZ%C3%BCrich with form mode becomes name=John Doe&city=Zürich.
  • Double-encode example: Force double-encode turns %2F into %252F for systems that expect a second encoding pass.

When should form mode be used? Form mode suits data submitted as application/x-www-form-urlencoded, such as classic HTML forms and many OAuth flows, because spaces become + instead of %20.
Why do some characters stay unencoded? Unreserved characters A-Z a-z 0-9 - . _ ~ do not need encoding under RFC 3986. Encoding all non-unreserved characters enforces stricter output when required.
Why do non-ASCII characters expand? UTF-8 represents them with multiple bytes, so each byte becomes a %HH sequence. This is correct and ensures cross-system compatibility.
What does double-encoding do? It converts an existing %HH to %25HH for pipelines that intentionally require a second encoding layer.

Inputs, outputs, and what the URL Encoder and Decoder Tool computes

What the URL Encoder and Decoder Tool asks for and what it returns, as a plain list. Defaults, units, and ranges are the ones the form loads with.

Inputs

  • Mode · default: Encode
  • Enter URL or text
  • Original input text for Encode (text input)
  • Encoded result text (text input)
  • Original input text for Decode (text input)
  • Decoded result text (text input)

Controls

Encode · Clear · Copy · Download .txt Result · Download .csv Result · Clear All Saved Data

Example

Encode example: https://example.com/search?q=coffee & cream / café becomes https://example.com/search?q=coffee%20%26%20cream%20%2F%20caf%C3%A9 .