Quoted-Printable Encoder & Decoder

Convert text to Quoted-Printable — the email-safe encoding where non-ASCII bytes become =XX escapes and long lines get soft breaks — or decode a Quoted-Printable string back to readable text. It handles UTF-8, the literal equals sign, and 76-column wrapping. Everything runs locally as you type.

How to use the Quoted-Printable Encoder & Decoder

Pick Encode to turn text into Quoted-Printable, or Decode to read it back, then type or paste into the input. The result updates live and Copy output places it on your clipboard. In encode mode the text is first converted to its UTF-8 bytes; any byte that is not a safe printable ASCII character is written as an equals sign followed by two uppercase hex digits, so an accented "é" becomes =C3=A9 and a literal equals sign becomes =3D.

Spaces and tabs are kept as-is except at the end of a line, where they are encoded (=20, =09) so that mail servers cannot silently strip them. Lines longer than 76 characters are split with a soft line break — a trailing equals sign before the newline — which decoders remove to rejoin the line, while real newlines in your text are preserved as hard breaks. Decode mode reverses all of this: it drops soft breaks, turns every =XX back into its byte, and reassembles the UTF-8 text.

It all runs in your browser, so it is instant, works offline, and nothing you encode or decode is sent anywhere.

Quoted-Printable and the 7-bit email problem

Quoted-Printable is one of the two main Content-Transfer-Encodings defined by MIME (RFC 2045), the standard that lets email carry more than plain English text. It exists because of a historical constraint: the original email infrastructure was designed for 7-bit ASCII, and many mail servers could not be trusted to pass bytes with the high bit set, to preserve trailing spaces, or to leave very long lines intact. Any message containing accented letters, non-Latin scripts, or binary-ish content therefore needed to be re-expressed using only safe characters. Quoted-Printable does exactly that while keeping the result mostly human-readable — which is its key selling point over Base64 for text that is "mostly ASCII with a few special characters."

The encoding rule is simple and reversible. Characters that are already safe printable ASCII are left exactly as they are, so an English sentence looks almost untouched. Everything else — high bytes, control characters, and the equals sign itself (which becomes the escape character) — is written as = followed by two hexadecimal digits giving the byte value. Because text is encoded at the byte level after UTF-8 conversion, a single multibyte character like "—" (an em dash) expands into several =XX escapes, one per UTF-8 byte. Two further rules handle the awkward cases that broke naive transmission: trailing spaces and tabs are encoded so they survive servers that trim whitespace, and lines are kept under 76 characters using soft line breaks, an equals sign at the very end of a line that the decoder discards when stitching the line back together.

Understanding the soft line break is the key to reading Quoted-Printable correctly. A bare equals sign at the end of a line means "this line continues" and is removed on decoding, whereas a normal newline is a genuine line break in the content. That distinction is why you cannot just strip every equals sign — the position matters. The encoding is still everywhere today: open the raw source of almost any email with a non-ASCII subject or body and you will see =XX sequences and trailing = soft breaks, and the same scheme appears in the encoded-word syntax used for headers. Being able to encode and decode it on demand is handy whenever you are debugging mail, inspecting a .eml file, or generating MIME parts by hand, and doing it in the browser keeps potentially private message content off any server.

Common use cases

  • Email debugging. Decode a Quoted-Printable body or subject from a raw message to read it.
  • Building MIME. Encode a text part with the correct =XX escapes and soft breaks by hand.
  • Inspecting .eml files. Turn the =XX soup in a saved email back into legible text.
  • Learning MIME. See exactly how UTF-8 bytes and trailing whitespace are encoded.

Frequently asked questions

Why does one accented character become several =XX codes?

Because encoding happens on UTF-8 bytes, and many characters are multiple bytes. For example é is two bytes (C3 A9), so it encodes as =C3=A9. Decoding reassembles the bytes into the character.

What is the trailing equals sign at the end of a line?

It is a soft line break, used to keep lines under 76 characters. The decoder removes it and joins the line to the next one. A normal newline without a preceding equals sign is a real line break.

Why are trailing spaces encoded as =20?

Some mail servers strip whitespace at the end of a line. Encoding a trailing space or tab as =20 or =09 guarantees it survives transmission intact.

How is this different from Base64?

Quoted-Printable leaves safe ASCII readable and only escapes special bytes, so it is ideal for mostly-text content. Base64 encodes everything into a compact but unreadable form, better suited to binary data.