application/x-www-form-urlencoded is the wire format browsers use when you submit an HTML form. This tool converts key/value pairs into that body and parses a body back into readable pairs, in your browser.
How it works
Form encoding builds key=value&key2=value2:
- Each key and value is encoded independently. Letters, digits, and
* - . _pass through. - A space becomes
+(this is the historic form-urlencoded rule, not%20). - Every other character is converted to UTF-8 bytes and each byte is percent-encoded as
%XX, so=,&,+, and non-ASCII are all safe. - Pairs are joined with
&and each pair iskey=value.
Decoding reverses this: split on &, then on the first =, turn every + back into a space, then percent-decode each %XX byte and UTF-8 decode the result.
Tips and examples
Given the pairs:
name=Ada Lovelace
note=1 + 1 = 2
the encoded body is name=Ada+Lovelace¬e=1+%2B+1+%3D+2. Note how the literal + and = inside the note value are escaped as %2B and %3D so they are not mistaken for a space or a separator. When decoding, the + between words is restored to a space before any percent-decoding happens — getting that order wrong is the classic form-decoding bug.