Guide
Reading Quoted-Printable email text and encoded header words
Email was designed for 7-bit ASCII text, and every later extension had to fit inside that. Quoted-Printable is one of the ways a message with accents, symbols or very long lines is made to fit: readable characters stay as they are, and anything else becomes an equals sign followed by two hexadecimal digits. Open a saved message and you see the result, with words like Caf=C3=A9 and lines ending in a lone =. This page turns that back into text, and can produce it as well.
The escape rule
Every byte that is not a printable ASCII character, plus the equals sign itself, is written as = and its two-digit hexadecimal value, in upper case. The letter é is two bytes in UTF-8, C3 and A9, so it becomes =C3=A9. The euro sign takes three bytes and so three escapes, =E2=82=AC. A space or tab at the end of a line is also escaped, since trailing white space may be removed in transit.
Soft line breaks
Lines in the encoded text may not exceed 76 characters. When a line is too long, the encoder cuts it and ends it with an equals sign, a soft line break that tells the decoder to join the next line without inserting anything. That is why a decoded sentence may be one line even though the source has several. A real line break is kept as it is. The decoder on the page joins soft breaks, converts the escapes to bytes, and reads the bytes as UTF-8, falling back to Latin-1 if they are not valid.
Encoded words in headers
Header fields use another syntax, the encoded word of RFC 2047: =?charset?encoding?text?=. The encoding letter is Q for a Quoted-Printable-like form, where an underscore stands for a space, or B for Base64. A header such as From: =?UTF-8?Q?Jos=C3=A9_Garc=C3=ADa?= <[email protected]> shows José García as the sender name. The header mode decodes every such word on every line you paste and leaves the rest alone. When encoding, a Q or B choice writes the text as a UTF-8 word.
Using the page
Pick decode, encode or header words and paste the text. Decoded output appears on the right along with the number of bytes and lines. In encode mode a second box gives the same text as an RFC 2047 header word, one per line. Encoded words in character sets such as ISO-8859-1 are decoded with your browser’s built-in support; if a character set is unknown, the word is left as written.
A worked example
The Sample button loads a message whose subject is Caf=C3=A9 menu =E2=80=94 100=25 fresh. It decodes to “Café menu — 100% fresh”: =C3=A9 is é, =E2=80=94 is the em dash and =25 is the percent sign. A body line that ends in l= followed by a line beginning ong line joins into “long line”. In the other direction, the text Café = 100% — ok encodes as Caf=C3=A9 =3D 100% =E2=80=94 ok.
Limits
The page handles one block of text at a time. It does not split a full MIME message into its parts, read Content-Type or Content-Transfer-Encoding headers, or decode attachments, so paste only the text part you want to read. It cannot guess a character set that is not stated, and it will not repair messages whose escapes were damaged in transit. Everything is processed locally and nothing is uploaded.
Related tools
- Base64 Encoder decodes Base64 parts of the same messages.
- URL Encoder uses percent escapes in a similar way for addresses.
- HTML Encoder covers entities such as & in web pages.
- Ascii85 Encoder is another binary-to-text encoding.
Checked against the current version of the Quoted-Printable Decoder on .

