Charcode encode
Charcode encode. Runs on your device, nothing is uploaded.
Runs on your device. The file is never uploaded.
Charcode encode decodes a file as UTF-8 text and prints one decimal code point per character, spaces between them. The letter A comes out 65, and a whole emoji gives one number rather than a surrogate pair. Bytes that are not valid UTF-8 collapse into 65533, the replacement character, so a binary file loses data here.
Questions
What are these numbers?
Unicode code points in decimal, one per character, separated by spaces. The letter A gives 65, e-acute gives 233, and a character outside the basic multilingual plane gives a single number above 65535. The file is decoded as UTF-8 text first, then walked character by character.
How does it handle emoji?
One number per emoji, not two. The tool iterates by code point and reads codePointAt, so a face emoji gives a single value such as 128512 rather than the surrogate pair a JavaScript charCodeAt loop would produce. An emoji built from several joined code points still gives one number per part, including the joiner.
Why does it differ from Decimal encode?
Because it counts characters, not bytes. Decimal encode writes each UTF-8 byte, so a non-ASCII character spreads across two to four numbers. Charcode writes the character itself as one number. Use Decimal when you care about the file on disk, and Charcode when you care about the text.
What if my file is not text?
It is still decoded as UTF-8, and any byte sequence that is not valid UTF-8 becomes the replacement character, which shows up as 65533. Several bad bytes in a row can collapse into fewer numbers than you expected, so run a binary file through Hex encode or Decimal encode instead.
Is anything hidden by this?
No. Code points are how the text is defined, so writing them as numbers is a change of notation that reverses in one step with any lookup table. It is useful for spotting an invisible character, a zero-width space or a stray control code in text that looks normal, not for hiding anything.
Does the file get uploaded?
No. Decoding and conversion happen in a Web Worker in this tab, with nothing sent to a server and nothing stored. Long results are shown up to the first 100,000 characters in the panel, but the Copy button always copies the full list, so nothing is lost when the text is trimmed on screen.