HTML Entity Encoder/Decoder — Developer Code Samples

HTML entity encoding converts characters like <, >, &, and " into safe HTML representations (&lt;, &gt;, &amp;, &quot;). This is essential for preventing XSS attacks when rendering user-supplied content in HTML documents.

Try the interactive version online: Open HTML Entity Encoder Tool →

Parameters

Parameter Type Required Description
text str Yes Input string to encode or decode HTML entities
mode str No Operation mode: encode or decode (default: encode)
quote bool No Also encode double quotes as &quot; (default: True)

Returns: String with HTML entities encoded (safe for HTML output) or decoded (original characters)

Code Examples

import html

# Encode HTML entities (escape for safe HTML output)
user_input = '<script>alert("XSS")</script> & "quoted" text'
encoded = html.escape(user_input)
print(encoded)
# Output: &lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt; &amp; &quot;quoted&quot; text

# Encode but keep single quotes unescaped (default behavior)
encoded_default = html.escape(user_input, quote=True)
print(encoded_default)

# Decode HTML entities back to characters
encoded_text = "&lt;b&gt;Hello &amp; World&lt;/b&gt;"
decoded = html.unescape(encoded_text)
print(decoded)
# Output: <b>Hello & World</b>

# Named HTML entities
entities = {
    '&': '&amp;',
    '<': '&lt;',
    '>': '&gt;',
    '"': '&quot;',
    "'": '&#39;',
    '©': '&copy;',
    '®': '&reg;',
    '™': '&trade;',
    '€': '&euro;',
    '£': '&pound;',
}

# Encode all non-ASCII characters as numeric entities
def encode_all(text):
    return ''.join(
        f'&#{ord(c)};' if ord(c) > 127 else html.escape(c)
        for c in text
    )

print(encode_all("Hello © World 2024"))
# Output: Hello &copy; World 2024