ToolDeck

HTML Escape / Unescape

Escape en unescape HTML-entiteiten (& < > " enz.)

Probeer een voorbeeld

Invoer

Uitvoer

Draait lokaal · Veilig om secrets te plakken
Resultaat verschijnt hier…

Wat is HTML-escaping?

HTML-escaping is het proces waarbij tekens met een speciale betekenis in HTML worden vervangen door de bijbehorende entiteitsreferenties. De vijf tekens die altijd geëscapet moeten worden zijn het ampersand (&), kleiner-dan (<), groter-dan (>), dubbel aanhalingsteken (") en enkel aanhalingsteken ('). Zonder escaping interpreteert de browser deze tekens als opmaaksinstructies in plaats van weer te geven tekst, waardoor de paginaopmaak breekt en de deur wordt opengezet voor injectieaanvallen.

De HTML-specificatie (beheerd door WHATWG) definieert twee vormen van tekstreferenties: benoemde entiteiten zoals &amp; en numerieke entiteiten zoals &#38; of &#x26;. Benoemde entiteiten zijn makkelijker leesbaar in broncode. Numerieke entiteiten (decimaal of hexadecimaal) kunnen elk Unicode-codepunt representeren, wat ze nuttig maakt voor tekens zonder een benoemde alias. Beide vormen produceren identieke uitvoer in de browser.

Unescaping (ook wel decoderen genoemd) is de omgekeerde bewerking: het terugzetten van entiteitsreferenties naar hun letterlijke tekens. Dit is gebruikelijk bij het extraheren van tekst uit HTML-broncode, het migreren van inhoud tussen systemen, of het debuggen van sjablonen die entiteiten dubbel coderen. Dit hulpmiddel verwerkt beide richtingen in de browser, zodat u uw escapinglogica kunt verifiëren of in seconden platte tekst kunt herstellen uit een HTML-zware bron.

Waarom een HTML-escapetool gebruiken?

Het handmatig vervangen van punthaken en ampersands in grote tekstblokken is omslachtig en foutgevoelig. Een speciaal hulpmiddel converteert uw invoer in één stap zonder installatie.

Directe conversie
Plak tekst of HTML en ontvang onmiddellijk geëscapete of geunescapete uitvoer. Geen wachten op een serverronde-trip omdat alle verwerking lokaal in JavaScript plaatsvindt.
🔒
Privacy-first verwerking
Uw invoer verlaat de browser nooit. Er wordt niets naar een server verzonden of ergens opgeslagen, zodat u veilig opmaak met inloggegevens, API-sleutels of interne code kunt escapen.
📋
Geen account of installatie
Open de pagina en begin met plakken. Er is geen inlogscherm, geen e-mailgate en geen software te installeren. Werkt op elk apparaat met een moderne browser.
🌐
Volledige entiteitsdekking
Verwerkt de vijf verplichte HTML-speciale tekens plus numerieke entiteiten (decimaal en hexadecimaal). Ondersteunt round-trip conversie: escapen en vervolgens unescapen geeft de oorspronkelijke string terug.

Toepassingen van HTML Escape

Frontend-ontwikkelaar: gebruikersinvoer weergeven
Bij het renderen van door gebruikers ingediende tekst op een pagina moet u deze eerst escapen om te voorkomen dat de browser het als HTML-tags interpreteert. Dit is de primaire verdediging tegen opgeslagen XSS in elke sjabloon die onbewerkte strings uitvoert.
Backend-engineer: HTML-reacties genereren
Servercode die strings samenvoegt tot HTML moet dynamische waarden escapen vóór invoeging. Gebruik dit hulpmiddel om te controleren of uw escapingfunctie de juiste uitvoer produceert voor randgevallen zoals geneste aanhalingstekens.
DevOps: configuratie insluiten in HTML
Inline JSON of shell-opdrachten in een HTML-pagina (bijvoorbeeld in een script-tag of een data-attribuut) vereisen escaping. Controleer of punthaken en ampersands in uw configuratiefragmenten correct zijn gecodeerd.
QA-engineer: XSS-vectoren testen
Plak veelgebruikte XSS-payloads in het hulpmiddel om te bevestigen dat de uitvoer van uw applicatie overeenkomt met de correct geëscapete versie. Vergelijk de geëscapete uitvoer teken voor teken met wat uw applicatie produceert.
Technisch schrijver: codevoorbeelden in documentatie
Het publiceren van codefragmenten in op HTML gebaseerde documenten (Jekyll, Hugo, aangepaste CMS'en) vereist het escapen van punthaken voor generieke typesyntax en sjabloonplaatshouders. Plak uw codevoorbeeld en elk speciaal teken wordt direct gecodeerd.
Student: HTML-entiteiten leren
Typ of plak een willekeurig teken en zie de benoemde en numerieke entiteitsvormen. Experimenteer met randgevallen zoals vaste spaties, gedachtestreepjes en Unicode-symbolen om te begrijpen hoe HTML-tekencodering werkt.

HTML-entiteitsreferentietabel

De onderstaande tabel toont veelgebruikte HTML-entiteiten. De vijf speciale tekens (& < > " ') moeten altijd worden geëscapet in HTML-inhoud en attribuutwaarden. Andere entiteiten zijn optioneel maar nuttig voor tekens die moeilijk te typen of ambigu zijn in broncode.

TekenBeschrijvingBenoemde entiteitNumerieke entiteit
&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;

Escapen vs. unescapen: wanneer welke gebruiken

De twee bewerkingen zijn elkaars inverse. De verkeerde richting kiezen leidt tot dubbel gecodeerde of onbeveiligde uitvoer.

Escapen (coderen)
Gebruik bij het invoegen van niet-vertrouwde of dynamische tekst in HTML. Converteert het letterlijke teken < naar &lt; zodat de browser het teken weergeeft in plaats van een tag te starten. Toepassen vóór het renderen van gebruikersinvoer, logvermeldingen of elke string die mogelijk opmaak bevat.
Unescapen (decoderen)
Gebruik bij het extraheren van platte tekst uit een HTML-bron. Converteert &lt; terug naar <. Toepassen bij het migreren van inhoud vanuit een CMS, het verwerken van gescrapete HTML, of het herstellen van dubbel gecodeerde strings zoals &amp;amp; die entiteitsnamen weergeven in plaats van tekens.

Codevoorbeelden

Hieronder staan werkende voorbeelden van HTML-escaping en unescaping in vier talen. Elk fragment dekt beide richtingen en verwerkt randgevallen zoals geneste aanhalingstekens en numerieke entiteiten.

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>

Veelgestelde vragen

Wat is het verschil tussen HTML-escaping en URL-codering?
HTML-escaping vervangt tekens die speciaal zijn in HTML (< > & " ') door entiteitsreferenties zoals &lt; zodat ze als tekst worden weergegeven. URL-codering (percent-codering) vervangt tekens die onveilig zijn in URL's door %XX hexadecimale reeksen. Ze beschermen verschillende contexten: HTML-escaping voorkomt opmaakinjection, terwijl URL-codering geldige querystrings en padsegmenten garandeert.
Welke tekens moeten worden geëscapet in HTML?
De vijf tekens die altijd geëscapet moeten worden zijn: & (ampersand), < (kleiner-dan), > (groter-dan), " (dubbel aanhalingsteken in attributen) en ' (enkel aanhalingsteken in attributen). Het niet escapen van een van deze tekens kan de opmaak breken of een cross-site scripting-kwetsbaarheid veroorzaken.
Is &apos; geldig in HTML5?
Ja. De benoemde entiteit &apos; is gedefinieerd in de HTML5-specificatie en wordt ondersteund door alle moderne browsers. Het maakte geen deel uit van HTML 4, dat alleen &amp;, &lt;, &gt; en &quot; herkende. Als u zeer oude HTML 4-parsers moet ondersteunen, gebruik dan de numerieke vorm &#39; in plaats daarvan.
Hoe herstel ik dubbel gecodeerde HTML-entiteiten zoals &amp;amp;?
Dubbele codering treedt op wanneer een al geëscapete string een tweede keer door de escapingfunctie gaat. De oplossing is unescapen totdat de uitvoer stabiel is. Plak de dubbel gecodeerde string in dit hulpmiddel in unescape-modus en voer het opnieuw uit als er nog &amp; referenties overblijven. Om dubbele codering te voorkomen, controleert u of de invoer al geëscapet is voordat u de escapingfunctie toepast.
Kan ik HTML-entiteiten gebruiken in JavaScript-strings?
HTML-entiteiten worden geïnterpreteerd door de HTML-parser, niet de JavaScript-engine. Binnen een script-blok wordt de code uitgevoerd nadat de HTML-parser de pagina heeft verwerkt, dus &lt; in een script-blok wordt < voordat JavaScript het ziet. Voor inline event handlers (onclick, enz.) wordt de attribuutwaarde eerst HTML-gedecodeerd en vervolgens uitgevoerd als JavaScript. In externe .js-bestanden hebben entiteiten geen speciale betekenis en worden ze behandeld als letterlijke tekst.
Wat is het verschil tussen htmlspecialchars en htmlentities in PHP?
htmlspecialchars() escapet alleen de vijf speciale tekens (& < > " ') die de HTML-structuur beïnvloeden. htmlentities() escapet die vijf plus elk teken met een benoemde HTML-entiteit, zoals het copyrightteken en letters met accenten. Voor beveiligingsdoeleinden is htmlspecialchars() met ENT_QUOTES voldoende. htmlentities() is nuttig wanneer u ASCII-veilige uitvoer nodig heeft voor systemen die geen UTF-8 aankunnen.
Is HTML-escaping voldoende om XSS te voorkomen?
HTML-escaping voorkomt XSS in het meest voorkomende geval: niet-vertrouwde tekst invoegen in HTML-elementinhoud of attribuutwaarden. Het beschermt andere injectiecontexten niet. Voor het invoegen van gebruikersdata in een script-blok is JavaScript-stringescaping vereist. Voor invoeging in een stijlattribuut is CSS-escaping vereist. Voor invoeging in een URL-attribuut (href, src) zijn URL-validatie plus codering vereist. Een volledige XSS-verdediging past contextspecifieke escaping toe op elk invoegpunt.