HTML Entity Encoder/Decoder — Developer Code Samples
HTML entity encoding converts characters like <, >, &, and " into safe HTML representations (<, >, &, "). 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 " (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: <script>alert("XSS")</script> & "quoted" 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 = "<b>Hello & World</b>"
decoded = html.unescape(encoded_text)
print(decoded)
# Output: <b>Hello & World</b>
# Named HTML entities
entities = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
'©': '©',
'®': '®',
'™': '™',
'€': '€',
'£': '£',
}
# 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 © World 2024