Skip to content
Blog

Unescape HTML Entities Online: Fix Encoded Strings Fast

Need to unescape HTML entities online without uploading data? Decode &, <, ' and Unicode entities in your browser with a free developer tool.

Share:Twitter/XLinkedIn

Unescape HTML Entities Online: A Developer's Debugging Guide

When you need to unescape HTML entities online, you usually hit one of two walls. Either your API is returning " instead of ", or your CMS double-encoded a string and now your page renders <div> as visible text instead of a tag. This guide shows the browser-native way to decode entities, the bugs that cause encoded strings to leak into UI, and the checks worth running before you ship a fix.

Every example here runs locally. Your encoded strings never leave your machine, which matters when you are debugging production payloads that might contain user data or session tokens.

Unescape HTML entities online

What Are HTML Entities in Web Dev

HTML entities are escape sequences that represent characters with reserved meaning in HTML. The five characters that always need escaping are <, >, &, ", and '. They become &lt;, &gt;, &amp;, &quot;, and &#x27; respectively.

There are two valid forms. Named entities like &copy; map to a specific Unicode code point. Numeric entities like &#169; or hex entities like &#xA9; reference Unicode directly and work even for characters with no named alias.

Understanding the difference between escaping (encoding) and unescaping (decoding) is the first step. Escaping converts <script> to &lt;script&gt; to prevent XSS. Unescaping converts it back when you need the original characters, typically for display in a <textarea>, comparison logic, or downstream parsing.

Why You Need to Unescape HTML Entities Online

The most common reason is that an API returned a string you cannot use directly. Imagine a CMS endpoint returns a blog title as She said &quot;hello&quot; &amp; left. If you drop that into a React component using {title}, React will render the ampersand-quote sequences literally because React escapes its own output by default.

The second reason is double encoding. Some systems run a string through htmlspecialchars once on the way in and again on the way out. You end up with &amp;amp;quot; instead of &quot;, which renders as &quot; on the page instead of a quote. Pasting the value into a decoder shows how many encoding layers were applied.

Browser-local decoding also avoids a privacy problem. You do not have to paste production payloads, user data, or session-adjacent strings into a server-side tool that may log requests.

How to Unescape an HTML String in JavaScript

The cleanest browser-native approach uses the DOM parser. Set the encoded string as the innerHTML of a detached element, then read back the textContent.

function unescapeHtml(encoded) {
  const doc = new DOMParser().parseFromString(encoded, 'text/html');
  return doc.documentElement.textContent;
}

unescapeHtml('She said &quot;hi&quot; &amp; left');
// Returns: She said "hi" & left

unescapeHtml('&lt;div class=&quot;box&quot;&gt;');
// Returns: <div class="box">

unescapeHtml('caf&eacute; &#x1F600;');
// Returns: café 😀

The function handles named entities, decimal numeric entities, and hex numeric entities in one pass, including Unicode entities like &#x1F600; for emoji.

For the inverse operation, escape HTML special characters in JavaScript before injecting them into the DOM as a string:

function escapeHtml(raw) {
  return raw.replace(/[&<>"']/g, (ch) => ({
    '&': '&amp;',
    '<': '&lt;',
    '>': '&gt;',
    '"': '&quot;',
    "'": '&#x27;',
  })[ch]);
}

escapeHtml('<script>alert(1)</script>');
// Returns: &lt;script&gt;alert(1)&lt;/script&gt;

Notice that & is replaced first in the lookup map. If you replace it last, you re-escape the ampersands you just introduced. The regex character class avoids that ordering bug entirely.

Decode HTML Entities in Browser DevTools

You can verify any decoder result without leaving the browser. Open DevTools, switch to the Console tab, and paste this one-liner with your encoded string.

new DOMParser().parseFromString('&lt;p&gt;hi&lt;/p&gt;', 'text/html').documentElement.textContent

The console returns the decoded value immediately. Use this when you are already inspecting a Network response and need to confirm whether the bug is in the API value, the renderer, or a copy-paste step from your CMS.

HTML Entities Cheat Sheet for Developers

Memorize the five reserved characters first: &, <, >, ", and '. They encode to &amp;, &lt;, &gt;, &quot;, and &#x27;. Everything else can be looked up or expressed numerically with &#DECIMAL; or &#xHEX;, such as &#169; for a copyright symbol.

Common Bugs an HTML Entity Encoder Decoder Tool Catches

Double encoding is the worst because it compounds invisibly. A user types Tom & Jerry. Layer one converts it to Tom &amp; Jerry. Layer two converts the ampersand again to Tom &amp;amp; Jerry. The page renders Tom &amp; Jerry literally. Pasting into a decoder twice reveals the original value.

Inconsistent quoting between named and numeric entities trips up string comparisons. &#x27; and &apos; and &#39; all decode to the same apostrophe, but a naive string equality check will flag them as different. If you are diffing user-submitted HTML, decode both sides before comparing.

For API responses, run the payload through a JSON formatter first to confirm the entity is in the value and not an artifact of malformed JSON quoting.

Building Entity Patterns With Regex

When you need to find or transform entities programmatically, a regex tester saves you from edge cases. A pattern like &(?:#x?[0-9a-fA-F]+|[a-zA-Z]+); matches all three entity forms in one expression. Test it against real inputs in the regex tester before shipping, especially if your data contains entities without a trailing semicolon.

Try the Toolblip HTML Entity Decoder

If you need a free online tool to unescape HTML entities online without copying anything to a server, Toolblip's HTML entity encoder and decoder runs entirely in your browser. Paste your encoded string, see the decoded output instantly, and verify the result against the DOMParser approach shown earlier in your DevTools console.

Open the HTML entity encoder and decoder for the string itself, use the JSON formatter when the encoded HTML lives inside an API response, or jump into the regex tester to build patterns that detect entities in your data pipeline.

Decode locally, verify in DevTools, and ship the fix.

More in Developer Tools
How to Optimize Images Without Uploading
4 min read
Top 5 Developer Tools You Should Bookmark
5 min read
Why Browser-Based Tools Are the Future
4 min read