This document describes the internal architecture, JavaScript mechanics, privacy guarantees,
and security boundaries of e2e — a tool that converts emojis and Unicode
characters into decimal HTML entities (&#xxxx;) with full support for
skin tones and ZWJ sequences.
e2e is a precision character‑conversion tool that serves two primary purposes:
&#xxxx;). The result is
immediately displayed in a separate output field.
The tool is designed for web developers, content creators, and technical writers who need to embed emojis in HTML, XML, RSS feeds, or API payloads without relying on inconsistent font rendering or risking encoding corruption. It also serves as a debugging aid for Unicode inspection.
codePointAt() and String.fromCodePoint() methods.
No data is ever transmitted.
Every operation in e2e is executed 100% inside the browser's memory. No user input — not even a single character — ever leaves the client.
convert() function is triggered. It iterates over
every character in the string using a for...of loop (which correctly
handles Unicode code points, unlike for...in or index‑based loops).
codePointAt(0)
retrieves the full Unicode code point value (up to 21 bits). This value is then
wrapped as &#value; — the standard
decimal HTML entity syntax.
for...of, each grapheme cluster (including ZWJ sequences) is
processed as a single unit. Skin tone modifiers are automatically included
in the same code point range, so 👍🏿 becomes
👍🏿 — preserving the full sequence.
String and
Number APIs. There are no fetch(), XMLHttpRequest,
or WebSocket calls of any kind.
// Core conversion logic
function convertToEntity(text) {
let result = '';
// for...of handles Unicode correctly
for (const char of text) {
const codePoint = char.codePointAt(0);
result += `&#${codePoint};`;
}
return result;
}
// Triggered on button click — all local, no network
convertBtn.addEventListener('click', () => {
const input = document.getElementById('inputText').value;
const output = convertToEntity(input);
document.getElementById('outputText').value = output;
});
✅ This design guarantees that all processing happens in memory — nothing is serialised, stored, or transmitted outside the browser tab.
e2e has zero external dependencies. It is built entirely with vanilla JavaScript (ES6), standard HTML5, and plain CSS.
String.codePointAt(), String.fromCodePoint(),
document DOM manipulation, addEventListener(),
and navigator.clipboard (for the copy feature).
No third‑party libraries, no npm packages, no CDN imports.
'Inter', -apple-system, BlinkMacSystemFont, ...)
to avoid any external font requests. No Google Fonts or webfont services.
e2e does not persist any data — neither on the server (there is none) nor on the client beyond the current browser session.
localStorage — The tool never writes to
localStorage, sessionStorage, or
IndexedDB. Your input text and the converted output
exist only in volatile memory (JavaScript variables and DOM elements).
document.cookie.
e2e handles no sensitive user data in the traditional sense — it only processes text that the user chooses to convert. Nevertheless, the security model is absolute: nothing ever touches the network.
<textarea> element with a click handler on the convert button.
It does not wrap a <form> and never issues a
POST or GET request.
// The only "input" is the textarea — processed locally
convertBtn.addEventListener('click', () => {
// value stays in the browser — never sent anywhere
const text = document.getElementById('inputText').value;
// … local conversion, DOM update …
});
// No fetch(), no XMLHttpRequest, no WebSocket
// No cookies, no localStorage, no IndexedDB
🛡️ Absolute input security is guaranteed by the architecture: the browser never initiates any outbound request containing user‑derived data. Your interaction with e2e is completely offline after the initial page load.
Paste any text with emojis and get decimal HTML entities instantly — private, free, and lightning‑fast.