Home Tools Blog About

Convert Decimal to UTF-8

In short

online decimal to UTF-8 text decoder. Byte-mode (raw UTF-8 bytes) and codepoint-mode. Client-side, instant, secure.

  • Runs in your browser
  • Nothing uploaded
  • Free, no sign-up

Decode decimal numbers as UTF-8 text in one of two modes: raw bytes (e.g. 240 159 152 128😀) or Unicode code points (e.g. 128512😀). Pick the interpretation that matches your input.

🛡
100% PrivateNo server uploads, ever
InstantRuns in your browser
💧
No WatermarksClean output, always
🆓
Free ForeverNo accounts, no limits

How to Use Convert Decimal to UTF-8

  1. Paste decimal numbers separated by any whitespace, comma, semicolon, or pipe. Mixed separators work fine.
  2. Pick the interpretation mode. This is the key decision:
    • Bytes (default) - each decimal is a UTF-8 byte in 0-255. 240 159 152 128 (F0 9F 98 80) decodes to 😀 via the multi-byte UTF-8 rules.
    • Code points - each decimal is a Unicode code point directly. 128512 (U+1F600) becomes 😀 in one step via String.fromCodePoint.
  3. Optional: Fatal mode (bytes only). When on, invalid UTF-8 sequences throw a specific error instead of silently becoming U+FFFD replacement characters. Use this when debugging byte dumps.
  4. Enable the breakdown to see each token annotated with its byte (0xNN) or code point (U+NNNN) interpretation.
  5. Press Convert (or Ctrl+Enter). Live preview runs with 150ms debounce. Stats report token counts, byte/char counts, and any U+FFFD replacements.
  6. Copy or download - the plain-text decoded output. Invalid tokens are listed in the breakdown with specific reasons; they're never silently dropped.

Frequently Asked Questions

Why do I need to choose between “bytes” and “code points”?

Because “decimal to UTF-8” is ambiguous. If your source gave you raw UTF-8 bytes (like Wireshark packet dumps, hexdump -d, or Python .encode('utf-8') output), each decimal is one byte. If your source gave you Unicode code points (like hex(ord(c))), each decimal is one character. The tool would produce different outputs for the same input in each mode, so you pick.

How does bytes-mode decode 240 159 152 128 into a single emoji?

Those four bytes are the UTF-8 encoding of U+1F600 😀. In binary: 11110000 10011111 10011000 10000000. UTF-8’s 4-byte form packs 21 bits: 000 011111 011000 000000 = 0x1F600. The tool’s TextDecoder('utf-8') handles the byte grouping and returns the single character.

When should I enable fatal mode?

When you want the decoder to complain on invalid UTF-8 instead of silently substituting replacement characters. Non-fatal mode (the default) is forgiving – it emits U+FFFD wherever the bytes don’t form valid UTF-8, so you always get some output. Fatal mode throws a specific error, which is what you want when validating that a byte stream is actually well-formed UTF-8.

What if my decimal is out of range?

Bytes mode: 0-255. Code-points mode: 0-1114111 (0x10FFFF, the top of Unicode). Out-of-range values are reported in the breakdown as “out of byte range 0-255” or “out of Unicode range 0-1114111”, without aborting the batch.

Why doesn’t the tool accept 0x41 as input?

Because that’s hex notation, not decimal – mixing bases in a tool called “decimal-to-utf8” would just cause bugs. You get a specific error: “not a decimal number (hex prefix 0x not accepted)”. For hex input, use the hex-to-UTF-8 tool.

What’s the difference between this tool and code-points-to-utf8?

The code-points-to-utf8 tool always treats input as Unicode code points. This tool defaults to byte interpretation but has a code-points mode toggle, so both workflows fit in one page. If you always work with code points, the dedicated tool is cleaner; if you mix both, this one is more convenient.

Why does 192 160 show U+FFFD characters?

Because that’s not valid UTF-8. 0xC0 (192) is a 2-byte lead byte, and 0xA0 (160) is a valid continuation byte, but the sequence 0xC0 0xA0 would decode to U+0020 (space) – an overlong encoding, explicitly forbidden by RFC 3629 since 2003 as a security issue. The tool substitutes U+FFFD for the illegal sequence.

Does code-points mode reject surrogates?

Yes. U+D800-U+DFFF are reserved as UTF-16 surrogate halves and aren’t valid standalone Unicode code points. The tool flags them in the breakdown with a specific error. If you need to emit lone surrogates (for WTF-8 study or similar), use a tool that explicitly allows them.

Can I go the other way (UTF-8 text to decimal bytes)?

Yes – use the UTF-8-to-decimal encoder. The pair is lossless: encode with one tool, decode with this one, and you get back the original bytes. The same round-trip works for code-points mode with the decimal-to-code-points and code-points-to-decimal tools.

Is the tool free, offline, and private?

Yes. Uses the browser’s native TextDecoder and String.fromCodePoint. No upload, no tracking, no account. Load once and it works offline indefinitely.

Keep going

Related Tools

All Utf8 tools →

Convert UTF-8 to Decimal

Convert UTF-8 text to decimal bytes or codepoints with padding and separators. Bidirectional. Free,…

Binary to UTF-8 Decoder

Binary to UTF-8 Text Decoder handles emoji, CJK, accents, strips BOM, counts replacement chars.…

Convert Arbitrary Base to UTF-8

Decode numeric tokens in any base (2-36) as UTF-8 bytes - multi-byte emoji and…

Base64 to UTF-8 Decoder

Decode Base64 to UTF-8 text - handles emoji, CJK, BOM-stripping, URL-safe variants. Free, client-side,…

Convert Bytes to UTF-8

Convert Bytes to UTF-8 Decode decimal/hex/binary byte values to UTF-8 text - emoji, CJK,…

Code Points to UTF-8 Converter Free

Free online Unicode code points to UTF-8 converter. Shows actual UTF-8 byte sequences per…

Convert Data URI to UTF-8

online Data URI to UTF-8 decoder with byte-breakdown panel for emoji and CJK. Client-side,…

Convert Hexadecimal to UTF-8

Decode hex to UTF-8 text with byte-structural breakdown. Handles ASCII, Latin, CJK, emoji. Batch…

Convert HTML Entities to UTF-8

Decode HTML entities to UTF-8 with per-character byte breakdown. Named, decimal, hex. Free, offline,…

Convert Octal to UTF-8

Decode octal byte sequences to UTF-8 text, encode UTF-8 to octal. C-escape support, multi-byte.…

Convert UTF-16 to UTF-8

Convert UTF-16 code units to UTF-8 text and bytes. 3 formats, BE/LE, BOM, surrogate…

Convert UTF-32 to UTF-8

Convert UTF-32 code points to UTF-8 text and bytes. 3 formats, BE/LE, BOM, strict…

Share

Embed this tool

Add this free tool to your website. Copy and paste the code: