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.