Read decimal codes by hand
Three anchor numbers cover most English text. Learn them once and short codes stop needing a lookup.
48is the digit 0. Add the digit you want:55is 7.65is capital A. Subtract 64 for the letter's place in the alphabet:84minus 64 is 20, the letter T.97is lowercase a. Subtract 96 the same way:111minus 96 is 15, the letter o.
Upper and lower case sit exactly 32 apart. 72 is H, 104 is h. Space is also 32, so a stray 32 at the end of a list means a trailing space in the original string.
Try 84 111 111 108 on paper. 84 is T. 111 is o, twice. 108 minus 96 is 12, the letter l. The word is Tool. Click those four cells in the table to check your answer.
Where decimal lists come from
Nobody types decimal codes for fun. They fall out of code, spreadsheets, or markup, each with its own wrapping. Paste them as they are.
| Source | Typical output | Paste as-is? |
|---|---|---|
JavaScript charCodeAt() in a loop | [84, 111, 111, 108] | Yes, brackets get stripped |
Python list(b"Tool") | [84, 111, 111, 108] | Yes |
Excel or Google Sheets =CODE(A1) column | One number per line | Yes, line breaks count as separators |
| HTML decimal entities | Tool | Yes, the &# and semicolon get removed |
| C or Java char arrays | {84, 111, 111, 108} | Yes |
| Windows Alt codes | Alt+0150 | Type 150, then pick Windows-1252 |
| Hex dumps | 54 6F 6F 6C | No, use Byte to ASCII |
Accepted separators: spaces, commas, semicolons, pipes, tabs, line breaks. Mixing them in one paste works fine.
128 to 255: one number, two characters
ASCII ends at 127. Above 127, the character depends on the system which produced the number. Unicode reads 233 as é. So does Windows-1252, the default code page on older Windows setups. The two agree everywhere from 160 to 255. They disagree on 128 to 159.
| Decimal | Unicode | Windows-1252 |
|---|---|---|
128 | Invisible control, U+0080 | € |
146 | Invisible control, U+0092 | ’ (curly apostrophe) |
150 | Invisible control, U+0096 | – (en dash) |
153 | Invisible control, U+0099 | ™ |
233 | é | é |
Pick Windows-1252 when the numbers came from Excel CHAR() on Windows, Alt codes, or a legacy database export. Keep Unicode for JavaScript, Python chr(), Java, or any list of code points.
HTML entities are the odd case. The HTML spec tells browsers to read € through Ÿ as Windows-1252, so – renders as an en dash on every web page. Switch to Windows-1252 for entity lists in this range. The status line flags any number between 128 and 159, so a wrong guess never lands in your clipboard unnoticed.
Emoji show up as two numbers
JavaScript strings store text as UTF-16. charCodeAt() reads one 16-bit unit at a time, so the thumbs up emoji comes out as 55357 56397, a surrogate pair. codePointAt() returns the real code point, 128077.
Paste either form. Pairs get joined into one emoji, and the status line reports how many. A lone half of a pair, such as 55357 on its own, gets skipped with a note, since no character exists for half a pair.
Where this converter falls short
- Decimal only. Hex such as
4Aor0x4Agets skipped. ASCII to Text reads hex or binary codes. - UTF-8 bytes do not merge into characters.
195 169is the UTF-8 byte pair for é, but here each number counts as its own code point, so you get é. Paste byte lists into Byte to ASCII with UTF-8 decoding on. - Leading zeros read as decimal.
072is 72, the letter H, not octal 58 as in old C or JavaScript literals. - Negative numbers, fractions, and values above 1,114,111 get skipped and listed with the reason.
- The table stops at 127. Codes above show as a list under the table, not as cells.
- Names mode copies the tags.
[LF]lands in the clipboard as four characters. Set control codes to real characters for a clean copy.
Decoding runs in your browser. Nothing you paste leaves the page.
