ToolDeck

HTML Escape / Unescape

Escape och unescape HTML-entiteter (& < > " osv.)

Prova ett exempel

Indata

Utdata

Körs lokalt · Säkert att klistra in hemligheter
Resultatet visas här…

Vad är HTML-escaping?

HTML-escaping är processen att ersätta tecken med särskild betydelse i HTML med deras motsvarande entitetsreferenser. De fem tecken som måste escapas är et-tecken (&), less-than (<), greater-than (>), dubbelt citattecken (") och enkelt citattecken ('). Utan escaping tolkar webbläsaren dessa tecken som uppmärkningsinstruktioner i stället för visningsbar text, vilket bryter sidans rendering och öppnar dörren för injektionsattacker.

HTML-specifikationen (underhållen av WHATWG) definierar två former av teckensreferenser: namngivna entiteter som &amp; och numeriska entiteter som &#38; eller &#x26;. Namngivna entiteter är lättare att läsa i källkod. Numeriska entiteter (decimala eller hexadecimala) kan representera vilken Unicode-kodpunkt som helst, vilket gör dem användbara för tecken som saknar ett namngivet alias. Båda formerna ger identisk utdata i webbläsaren.

Unescaping (även kallat avkodning) är den omvända operationen: att konvertera entitetsreferenser tillbaka till deras literala tecken. Detta är vanligt vid extraktion av text från HTML-källa, migrering av innehåll mellan system, eller felsökning av mallar som dubbelkodar entiteter. Det här verktyget hanterar båda riktningarna i webbläsaren, så du kan verifiera din escaping-logik eller återskapa klartext från en HTML-tung källa på några sekunder.

Varför använda ett HTML escape-verktyg?

Att manuellt ersätta vinkelparenteser och et-tecken i stora textblock är tidskrävande och felbenäget. Ett dedikerat verktyg konverterar din indata i ett steg utan att du behöver installera något.

⚡
Omedelbar konvertering
Klistra in text eller HTML och få escapad eller unescapad utdata direkt. Ingen väntan på ett serveranrop eftersom all bearbetning sker lokalt i JavaScript.
🔒
Integritetsfokuserad bearbetning
Din indata lämnar aldrig webbläsaren. Ingenting skickas till en server eller lagras någonstans, så du kan tryggt escapa uppmärkning som innehåller inloggningsuppgifter, API-nycklar eller intern kod.
📋
Inget konto eller installation krävs
Öppna sidan och börja klistra in. Det finns ingen inloggningsspärr, ingen e-postverifiering och ingen programvara att installera. Fungerar på valfri enhet med en modern webbläsare.
🌐
Full entitetstäckning
Hanterar de fem obligatoriska HTML-specialtecknen samt numeriska entiteter (decimala och hexadecimala). Stöder tur-och-retur-konvertering: escape följt av unescape returnerar den ursprungliga strängen.

Användningsområden för HTML escape

Frontend-utvecklare: visa användarindata
När du renderar användarskickad text inuti en sida, escapa den först för att förhindra att webbläsaren tolkar den som HTML-taggar. Detta är det primära skyddet mot lagrad XSS i mallar som skriver ut råa strängar.
Backend-ingenjör: generera HTML-svar
Serversideskod som sammanfogar strängar till HTML måste escapa dynamiska värden innan de infogas. Använd det här verktyget för att verifiera att din escape-funktion ger korrekt utdata för kantfall som nästlade citattecken.
DevOps: bädda in konfiguration i HTML
Inline-JSON eller shell-kommandon inuti en HTML-sida (t.ex. i en script-tagg eller ett data-attribut) kräver escaping. Kontrollera att vinkelparenteser och et-tecken i dina konfigurationskodsnuttar är korrekt kodade.
QA-ingenjör: testa XSS-vektorer
Klistra in vanliga XSS-nyttolaster i verktyget för att bekräfta att din applikations utdata matchar den korrekt escapade versionen. Jämför den escapade utdatan tecken för tecken mot vad din app producerar.
Teknisk skribent: kodexempel i dokumentation
Att publicera kodsnuttar i HTML-baserad dokumentation (Jekyll, Hugo, anpassade CMS:er) kräver escaping av vinkelparenteser för generisk typsyntax och mallplatshållare. Klistra in ditt kodexempel och varje specialtecken kodas omedelbart.
Student: lär dig HTML-entiteter
Skriv eller klistra in valfritt tecken och se dess namngivna och numeriska entitetsformer. Experimentera med kantfall som icke-brytande mellanslag, em-tankar och Unicode-symboler för att förstå hur HTML-teckenkodning fungerar.

Referenstabell för HTML-entiteter

Tabellen nedan listar vanligt använda HTML-entiteter. De fem specialtecknen (& < > " ') måste alltid escapas i HTML-innehåll och attributvärden. Övriga entiteter är valfria men användbara för tecken som är svåra att skriva eller tvetydiga i källkod.

TeckenBeskrivningNamngiven entitetNumerisk entitet
&Ampersand&amp;&#38;
<Less-than sign&lt;&#60;
>Greater-than sign&gt;&#62;
"Double quote&quot;&#34;
'Single quote / apostrophe&apos;&#39;
 Non-breaking space&nbsp;&#160;
©Copyright sign&copy;&#169;
®Registered sign&reg;&#174;
—Em dash&mdash;&#8212;
’Right single quote&rsquo;&#8217;
€Euro sign&euro;&#8364;

Escaping vs. unescaping: när du ska använda respektive

De två operationerna är varandras inverser. Att välja fel riktning ger dubbelkodad eller oskyddad utdata.

Escape (kodning)
Använd när du infogar opålitlig eller dynamisk text i HTML. Konverterar literalt < till &lt; så att webbläsaren visar tecknet i stället för att starta en tagg. Tillämpa innan du renderar användarindata, loggposter eller valfri sträng som kan innehålla uppmärkning.
Unescape (avkodning)
Använd när du extraherar klartext från en HTML-källa. Konverterar &lt; tillbaka till <. Tillämpa vid migrering av innehåll från ett CMS, parsning av skrapad HTML eller korrigering av dubbelkodade strängar som &amp;amp; som visar entitetsnamn i stället för tecken.

Kodexempel

Nedan finns fungerande exempel på HTML-escaping och unescaping i fyra språk. Varje kodsnutt täcker båda riktningarna och hanterar kantfall som nästlade citattecken och numeriska entiteter.

JavaScript (browser / Node.js)
// Escape HTML entities manually
function escapeHtml(str) {
  return str
    .replace(/&/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;')
    .replace(/'/g, '&#39;')
}

escapeHtml('<img src="x" onerror="alert(1)">')
// → "&lt;img src=&quot;x&quot; onerror=&quot;alert(1)&quot;&gt;"

// Unescape using DOMParser (browser only)
function unescapeHtml(str) {
  const doc = new DOMParser().parseFromString(str, 'text/html')
  return doc.documentElement.textContent
}

unescapeHtml('&lt;div&gt;Hello&lt;/div&gt;')
// → "<div>Hello</div>"
Python
import html

# Escape special characters
html.escape('<script>alert("XSS")</script>')
# → '&lt;script&gt;alert(&quot;XSS&quot;)&lt;/script&gt;'

# Escape including single quotes (quote=True is default in Python 3.8+)
html.escape("It's <b>bold</b>", quote=True)
# → 'It&#x27;s &lt;b&gt;bold&lt;/b&gt;'

# Unescape entities back to characters
html.unescape('&lt;p&gt;Price: &euro;10&lt;/p&gt;')
# → '<p>Price: €10</p>'

# Unescape numeric entities
html.unescape('&#60;div&#62;&#38;amp;&#60;/div&#62;')
# → '<div>&amp;</div>'
Go
package main

import (
    "fmt"
    "html"
)

func main() {
    // Escape HTML special characters
    escaped := html.EscapeString(`<a href="page?id=1&sort=name">Link</a>`)
    fmt.Println(escaped)
    // → &lt;a href=&quot;page?id=1&amp;sort=name&quot;&gt;Link&lt;/a&gt;

    // Unescape back to original
    original := html.UnescapeString("&lt;b&gt;Go &amp; HTML&lt;/b&gt;")
    fmt.Println(original)
    // → <b>Go & HTML</b>
}
PHP
<?php
// Escape HTML entities (ENT_QUOTES escapes both " and ')
echo htmlspecialchars('<p class="info">Tom & Jerry's</p>', ENT_QUOTES, 'UTF-8');
// → &lt;p class=&quot;info&quot;&gt;Tom &amp; Jerry&#039;s&lt;/p&gt;

// Convert all applicable characters to HTML entities
echo htmlentities('Price: 10€ — 50% off', ENT_QUOTES, 'UTF-8');
// → Price: 10&euro; &mdash; 50% off

// Decode entities back
echo html_entity_decode('&lt;div&gt;&amp;copy; 2026&lt;/div&gt;');
// → <div>&copy; 2026</div>

Vanliga frågor

Vad är skillnaden mellan HTML-escaping och URL-kodning?
HTML-escaping ersätter tecken som är speciella i HTML (< > & " ') med entitetsreferenser som &lt; så att de visas som text. URL-kodning (percent-encoding) ersätter tecken som är osäkra i URL:er med %XX-hexsekvenser. De skyddar olika kontexter: HTML-escaping förhindrar uppmärkningsinjektion, medan URL-kodning säkerställer giltiga frågesträngar och sökvägssegment.
Vilka tecken måste escapas i HTML?
De fem tecken som alltid måste escapas är: & (et-tecken), < (less-than), > (greater-than), " (dubbelt citattecken i attribut) och ' (enkelt citattecken i attribut). Att missa att escapa något av dessa kan bryta renderingen eller skapa en sårbarhet för cross-site scripting.
Är &apos; giltig i HTML5?
Ja. Den namngivna entiteten &apos; är definierad i HTML5-specifikationen och stöds av alla moderna webbläsare. Den ingick inte i HTML 4, som bara kände igen &amp;, &lt;, &gt; och &quot;. Om du behöver stödja mycket gamla HTML 4-parsers, använd den numeriska formen &#39; i stället.
Hur åtgärdar jag dubbelkodade HTML-entiteter som &amp;amp;?
Dubbelkodning uppstår när en redan escapad sträng passerar escape-funktionen en andra gång. Lösningen är att unescape tills utdatan stabiliseras. Klistra in den dubbelkodade strängen i det här verktyget i unescape-läge och kör igen om &amp;-referenser kvarstår. För att förhindra dubbelkodning, kontrollera om indata redan är escapad innan du tillämpar escape-funktionen.
Kan jag använda HTML-entiteter inuti JavaScript-strängar?
HTML-entiteter tolkas av HTML-parsern, inte av JavaScript-motorn. Inuti ett script-block körs koden efter att HTML-parsern bearbetat sidan, så &lt; i ett script-block blir < innan JavaScript ser det. För inline-händelsehanterare (onclick osv.) HTML-avkodas attributvärdet först, sedan exekveras det som JavaScript. I externa .js-filer har entiteter ingen särskild betydelse och behandlas som literaltext.
Vad är skillnaden mellan htmlspecialchars och htmlentities i PHP?
htmlspecialchars() escapar bara de fem specialtecknen (& < > " ') som påverkar HTML-strukturen. htmlentities() escapar dessa fem plus varje tecken som har en namngiven HTML-entitet, som copyrighttecknet och accentbokstäver. För säkerhetssyften räcker htmlspecialchars() med ENT_QUOTES. htmlentities() är användbart när du behöver ASCII-säker utdata för system som inte kan hantera UTF-8.
Räcker HTML-escaping för att förhindra XSS?
HTML-escaping förhindrar XSS i det vanligaste fallet: att infoga opålitlig text i HTML-elementinnehåll eller attributvärden. Det skyddar inte andra injektionskontexter. Att infoga användardata i ett script-block kräver JavaScript-strängescaping. Infogning i ett style-attribut kräver CSS-escaping. Infogning i ett URL-attribut (href, src) kräver URL-validering plus kodning. Ett komplett XSS-skydd tillämpar kontextspecifik escaping vid varje infogningspunkt.