Understanding Quoted-Printable Encoding
Learn how Quoted-Printable encoding works and when it is preferable to Base64 for mostly-ASCII text.
Problem
You have text that is mostly ASCII with a few non-ASCII characters and want an efficient encoding that keeps readable text intact.
Prerequisites
- Basic email/MIME knowledge
- Understanding of ASCII
Steps
-
1. Understand the encoding rule
Quoted-Printable leaves printable ASCII characters (33-126) as-is, except = which becomes =3D. Non-ASCII bytes and control characters are encoded as =XX where XX is the hex value. This keeps mostly-ASCII text readable and compact.
InputCaféOutputCaf=E9 -
2. Handle line wrapping
Quoted-Printable limits line length to 76 characters. If a line exceeds this, a soft line break (= at end of line) is inserted. The decoder removes these soft breaks to reconstruct the original line.
Inputlong line of text...Output...text= ...continued -
3. Decode back to original
The decoder scans for =XX sequences and converts them back to bytes. Soft line breaks (= at end of line) are removed. Hard line breaks (CRLF without a preceding =) are preserved as actual line breaks.
InputCaf=E9OutputCafé
Expected result
Compact encoded text where ASCII portions remain readable and non-ASCII bytes are hex-escaped.
Common errors
- Forgetting to encode the = sign itself
- The = character must always be encoded as =3D, otherwise the decoder will misinterpret it as an escape prefix.
- Lines exceed 76 characters
- Insert soft line breaks (=CRLF) before the 76-character limit. Some mail servers reject overly long lines.
Troubleshooting
- If decoded text shows stray = characters, the encoder failed to encode = as =3D.
- If lines are joined incorrectly, check that soft breaks (= at EOL) are distinguished from hard breaks.
Security limits
- Quoted-Printable is a transport encoding with no security properties.