Encoding tools / URL

URL Encoder and Decoder

Percent-encode text, decode UTF-8 escapes and inspect query parameters in this browser. Choose the profile that matches your task.

Input

Component encoding protects a single query value or path segment. Full URI keeps structural separators.

0 UTF-16 input units.

You can also drop one text file onto this workspace. Text has a separate 262,144 UTF-16-unit limit.

Batch and advanced options
Conversion options

Batch separators keep their original line endings, including blank and trailing lines.

Repeated decoding is diagnostic inspection. It can change URL meaning; a later invalid pass blocks the whole result.

Loading an example sets its conversion options; Undo restores your prior text and options. Ctrl/Cmd+Enter runs the selected action; Escape cancels queued work.

Result

Copy and TXT download use the complete current result. Large previews are explicitly limited.

CSV adds an apostrophe to spreadsheet-sensitive cells for protection. TXT preserves exact output, with no added BOM or newline.

By default, print excludes input, parsed queries and credentials. Include result adds its full contents.

Ready. Choose an action; processing stays in this browser.

Inspect a URL or query string

Inspect the current input without editing or opening it. Parsed URL fields may normalize host spelling, ports and paths; the source above stays exact.

No current inspection.

Ordered query parameters: raw fields and strict form-decoded values
#Raw nameRaw valueDecoded nameDecoded valueHas =Issue
No current rows.

Duplicates and empty names remain separate records. Cells show bounded, escaped text previews; query CSV retains complete values with spreadsheet protection.

Encoding and decoding details

No current conversion.

Offsets refer to original UTF-16 input. Step input/output are escaped for display; later passes may have different intermediate text. UTF-8 bytes describe the scalar being encoded or decoded. Newline changes follow your selected policy.

Scalar changes and escaped UTF-8 sequences
Original offsetPassStep inputStep outputUTF-8 bytes
No current rows.
Batch records and passes

Record previews show up to 256 units per cell; batch CSV contains complete record data. Outer separators remain in the full TXT output.

Current conversion records, including empty records
#InputOutputPasses
No current rows.
URL encoding reference
UTF-8 encoding of individual characters in each profile
CharacterComponentFull URIRFC 3986Form value
Space%20%20%20+
!!!%21%21
"%22%22%22%22
#%23#%23%23
$%24$%24%24
%%25%25%25%25
&%26&%26%26
'''%27%27
(((%28%28
)))%29%29
***%2A*
+%2B+%2B%2B
,%2C,%2C%2C
/%2F/%2F%2F
:%3A:%3A%3A
;%3B;%3B%3B
<%3C%3C%3C%3C
=%3D=%3D%3D
>%3E%3E%3E%3E
?%3F?%3F%3F
@%40@%40%40
[%5B%5B%5B%5B
\%5C%5C%5C%5C
]%5D%5D%5D%5D
^%5E%5E%5E%5E
`%60%60%60%60
{%7B%7B%7B%7B
|%7C%7C%7C%7C
}%7D%7D%7D%7D
~~~~%7E
Tab%09%09%09%09
LF newline%0A%0A%0A%0A
CR newline%0D%0D%0D%0D
é%C3%A9%C3%A9%C3%A9%C3%A9
€%E2%82%AC%E2%82%AC%E2%82%AC%E2%82%AC
😀%F0%9F%98%80%F0%9F%98%80%F0%9F%98%80%F0%9F%98%80

ASCII letters, digits and -._ remain unescaped in all four profiles. The table highlights where punctuation, plus signs and whitespace differ.

URL decoder and URL encoder: what this does

As a URL decoder this turns percent-escaped text back into what it stood for, so hello%20world%3F reads as hello world? again. Run the other way it is a URL encoder, replacing the characters that would otherwise end a path or split a query. Both directions are percent encoding, sometimes written urlencode after the function many languages give it. To URL decode or URL encode here, pick the direction, paste your text, and read the result — nothing is uploaded.

Choose the profile for your data

JavaScript component matches encodeURIComponent and decodeURIComponent for one value. Full URI preserves URL structure and escaped reserved delimiters while decoding. RFC 3986 component uses the stricter unreserved set. Form value uses plus for spaces and a distinct punctuation set; it encodes a single value, rather than assembling a full form body.

Why %20, plus and %25 differ

A space becomes %20 in component encoding and + in form encoding. A literal plus becomes %2B. Decoding + outside form mode keeps the plus. Encoding an existing percent escape encodes its percent sign again, so %20 becomes %2520. The tool offers an explanation rather than silently repairing your input.

Unicode and precise errors

Percent escapes represent UTF-8 bytes. The character é uses %C3%A9; an emoji can use four bytes and two UTF-16 units. Counts distinguish scalars, UTF-16 units and UTF-8 bytes. Invalid escapes and malformed Unicode stop conversion while preserving input. Error line/column uses UTF-16 columns; CRLF counts as one line break. Later-pass errors name their intermediate coordinate space.

Inspecting query parameters

Query separators are split before decoding, so %26 stays inside one value. Repeated names, empty names, empty values and flags without an equals sign remain visible. Malformed cells retain their raw text and an error, while conversion results remain all-or-nothing. Parsed URL display describes browser parsing, not whether a destination exists or is safe.

URL decode and encode in code

The same conversion in the languages people usually reach for: JavaScript (js) decodeURIComponent(s) and encodeURIComponent(s); Python urllib.parse.unquote(s) and quote(s); PHP rawurldecode($s) and rawurlencode($s); Java URLDecoder.decode(s, UTF_8). Each matches a profile above — pick the form-encoded variant when a plus sign should mean a space, as it does in a submitted form but not in a path.

Local processing and limits

Text stays in browser memory. Copy, downloads and optional result printing are explicit actions. The source limit is 262,144 UTF-16 units; files are UTF-8 text up to 1 MiB, subject to that source limit. Batches and query tables support 1,000 records; repeated decoding is limited to five passes. Undo is bounded to 20 snapshots and 1,048,576 source units. Large output uses a labelled preview and complete copy/TXT. URL encoding is reversible representation, not encryption.

Standards: ECMAScript URI functions, RFC 3986 and WHATWG form encoding.

Base64 encoder and decoder · JSON formatter and validator

Updated