Unicode ⇄ Code Points Converter

See the code point behind every character, and turn code points back into text.

Unicode Code Points Converter

Unicode ⇄ Code Points Converter shows the numeric code point of every character:
in hexadecimal, decimal, octal, binary, U+XXXX notation or a custom base.
Switch direction and it reads a list of code point values back into real text.


Load an example

Conversion direction

Text → Code Points lists the value of every character. Code Points → Text rebuilds characters from a list of values.

Code point format

How each code point is written. Digits above 9 use A–Z.

Text placed between code points. A space is the default.

Padding lines values up; prefixes apply to binary, octal and hex.

Grouping keeps emoji and joined marks together; whitespace controls spaces and line breaks.

Unicode normalization

Applied to the text before listing code points, or to the result after decoding.

Input: 0 code points · 0 graphemes
Ready to convert text and code points.


Overview

The Unicode ⇄ Code Points Converter is a free, browser-based tool that translates between readable text and the numbers behind it. Every character in Unicode has a unique number called a code point, usually written in hexadecimal as U+0041. This tool lists those numbers for any text you paste, and it can also take a list of numbers and rebuild the original characters.

It is useful whenever you need to know exactly what a string is made of. When a file shows garbled characters, a code point list reveals which letters are actually present. When you document an API, test a parser, prepare a font, or compare two strings that look identical, the code points make the difference visible. It is equally helpful for learning: seeing Café become U+0043 U+0061 U+0066 U+00E9 makes the idea of a Unicode number click immediately.

The page is written in plain HTML, CSS and JavaScript, and the conversion uses the browser's own Unicode support — codePointAt, fromCodePoint and, where available, Intl.Segmenter for grapheme grouping. There is no server, no upload and no third-party library, so you can paste sensitive strings with confidence.


What Is a Code Point?

Unicode gives every character a single non-negative integer called a code point. The letter A is U+0041, which is the decimal number 65; the check mark is U+2713; the coffee symbol is U+2615; and the grinning face 😀 is U+1F600. The U+ prefix simply means "this is a Unicode code point" and the digits after it are hexadecimal.

Code points are organized into planes of 65,536 values each. The first plane, from U+0000 to U+FFFF, is the Basic Multilingual Plane and holds most everyday scripts. Characters above U+FFFF, such as many emoji and rarer scripts, live in the higher planes; the tool reports which plane the highest character in your text belongs to.


What This Tool Does

Text to code points: walks the input one code point at a time and writes each value in the notation you choose. Emoji and rare characters are never split into the wrong pieces because the tool reads whole code points, not 16-bit halves.

Choose the notation: output can be hexadecimal, decimal, octal, binary, the standard U+XXXX form, or any base from 2 to 36. Hex digits can be upper or lower case, and values can be zero-padded so every column lines up.

Code points to text: the reverse direction reads a list of values separated by spaces, commas or line breaks and rebuilds the characters. It understands the U+, 0x, 0b and 0o prefixes, and can auto-detect the base of each value.

Text handling: you can group a multi-code-point grapheme such as a flag or a family emoji inside parentheses so it stays together, leave whitespace in place, skip it, or collapse runs of it to a single space. An optional Unicode normalization form is applied before or after conversion.

Error handling: when decoding, an invalid value does not ruin the whole result. By default the good characters are produced and the bad values are counted; strict mode clears the output instead.


Features

Six output notations: the same character can be written in several ways, and the Output base setting picks one. U+XXXX is the standard documentation form, hex and binary are common in code, decimal is easy to read, and octal appears in older systems. A custom base from 2 to 36 covers anything else.

Example: the letter A is U+0041 in the standard form, 41 in hex, 65 in decimal, 101 in octal and 1000001 in binary.

Delimiter: choose the text placed between code points. A space is the default and the easiest to read; a comma suits a spreadsheet, a new line gives one value per row, and None joins everything with no separator at all.

Example: Café with a space gives U+0043 U+0061 U+0066 U+00E9, and with a comma and a space gives U+0043, U+0061, U+0066, U+00E9.

Padding, prefix and case: padding writes every value with the same number of digits, so columns align when the numbers are different lengths. A prefix tags binary, octal and hex values with 0b, 0o or 0x, and the case setting controls whether hex letters are upper or lower case.

Example: Hi in decimal is 72 105, padded to 072 105; in hex with a prefix it is 0x48 0x69.

Grapheme grouping: a single visible character can be built from several code points. A flag is two regional indicators, and some emoji join several people with a zero-width joiner. Grouping wraps the code points of one grapheme inside parentheses so the unit stays easy to see.

Example: the flag 🇯🇵 becomes (1F1EF 1F1F5) when grouping is on, and 1F1EF 1F1F5 when it is off.

Whitespace handling: spaces, tabs and line breaks are ordinary code points. Keep them to see the full picture, skip them for a compact list of visible characters, or collapse long runs of whitespace into one space first.

Example: A B with whitespace included is U+0041 U+0020 U+0042, and with whitespace skipped it is U+0041 U+0042.

Unicode normalization: the same accented letter can be stored as one code point or as a base letter followed by a combining mark. Normalization lets you pick the form you want before the code points are listed, which is essential when comparing two strings that look the same.

Example: é is the single value U+00E9 in NFC, but the two values U+0065 U+0301 in NFD.

Live conversion, stats, file upload, copy and download: the result updates as you type or change an option, the stats line reports code points, graphemes and the highest value, and you can load a .txt file, copy the output or download it as a file.


How to Convert Unicode to Code Points

Converting takes a few seconds:

  1. Pick the direction. Leave it on Text → Code Points to list values, or switch to Code Points → Text to rebuild characters.
  2. Paste your input. In the first direction that is ordinary text; in the second it is a list of values separated by spaces, commas or new lines.
  3. Choose the output base. Use U+XXXX for documentation, decimal for readability, or hex and binary for code. A custom base covers anything from 2 to 36.
  4. Fine-tune the format. Set the delimiter, turn zero-padding or prefixes on, and pick upper or lower case.
  5. Handle special text. Group multi-code-point graphemes, decide how whitespace is treated, and apply a normalization form if the text has accented letters.
  6. Read the stats. The line below the buttons reports the code point count, the grapheme count and the highest code point in the input.
  7. Copy or download. Use the copy icon for the clipboard or download the result as a text file.

Code Point vs Byte vs Grapheme

These three ideas are often mixed up, and the difference explains many confusing bugs. A code point is the number Unicode assigns to a character. A byte is how that number is stored on disk or sent over a network, which depends on the encoding. A grapheme is what a reader sees as one character, and it may be made of several code points.

Code point: the abstract value, written U+XXXX. It never changes, no matter which encoding is used. For example, the euro sign is U+20AC.

Byte: the encoded form. In UTF-8 the euro sign is three bytes, E2 82 AC; in UTF-16 it is two bytes. Use the Unicode to UTF Converter to see those byte values.

Grapheme: the user-perceived character. The family emoji 👨‍👩‍👧 is several code points and many bytes, but a reader sees one symbol. Grouping in this tool uses the same grapheme boundaries your phone and browser use.

In short: use code points to describe what a string contains, bytes to describe how it is stored, and graphemes to describe what a person sees.


Common Use Cases

Debugging garbled text: when a file or web page shows strange symbols, a code point list shows which characters are really there. A missing or mis-decoded byte is much easier to spot as a number than as a smudge.

Documenting and testing: put exact code points in API docs, test cases and bug reports so another developer can reproduce the string without guessing which lookalike character you meant.

Generating data: turn text into decimal, hex or binary values to paste into a script, a database seed, a regular expression or a config file, and turn a list of values back into readable text.

Learning Unicode: see how ASCII, accented letters, CJK characters and emoji differ in their code point ranges and understand why "one character" is not always one number.

Emoji and grapheme analysis: break a flag, a skin-tone modifier or a joined emoji into its parts, which is useful when building forms, counters or text-truncation features.

Security checks: code points reveal lookalike characters that could disguise a domain or username. Pair this with the Homoglyph Detector when inspecting untrusted text.


Examples

Click Try it on any example to load it into the tool. Each example also picks the direction and options it demonstrates, and the text on the right is the exact output the tool produces.

Example 1: An accented word in U+ notation
Input
Café
Output (U+XXXX, space delimiter)
U+0043 U+0061 U+0066 U+00E9

Each letter becomes one code point. The plain letters sit in the low range, while the accented é is U+00E9. This is the form to use in documentation.

Example 2: Short text in decimal
Input
Hi
Output (Decimal, comma and space delimiter)
72, 105

Decimal values are the easiest to read and compare. H is 72 and i is 105, so the pair maps one-to-one.

Example 3: Binary with a prefix and padding
Input
OK!
Output (Binary, prefix on, padded)
0b1001111 0b1001011 0b0100001

The widest value here is 79, which needs seven binary digits, so every value is padded to seven and tagged with 0b. The exclamation mark, 33, is padded as 0100001 so the columns line up.

Example 4: A flag emoji kept together
Input
🇯🇵
Output (Hexadecimal, grapheme grouping on)
(1F1EF 1F1F5)

A flag is two regional indicator letters that a reader sees as one symbol. With grouping on, the two code points are wrapped in parentheses so the flag stays a single visual unit. With grouping off the same two values are printed on their own.

Example 5: Code points back to text
Input
72, 101, 108, 108, 111
Output (Code Points → Text, auto-detect)
Hello

Auto-detect reads the plain whole numbers as decimal and rebuilds the word: 72 is H, 101 is e, 108 is l and 111 is o.


Reference Table

A few common characters with their code point in the standard, decimal, octal and binary forms, so you can see how the bases relate. Plain Latin characters sit in the low ranges, accented letters and symbols follow, and emoji sit above U+FFFF.

Character Code point Decimal Octal Binary
A U+0041 65 101 1000001
a U+0061 97 141 1100001
0 U+0030 48 60 110000
U+0020 32 40 100000
é U+00E9 233 351 11101001
© U+00A9 169 251 10101001
U+2713 10003 23423 10011100010011
U+2615 9749 23025 10011000010101
😀 U+1F600 128512 373000 11111011000000000
🌍 U+1F30D 127757 371415 11111001100001101

Tips and Best Practices

Use U+ notation in writing: it is the standard form readers recognize, and it keeps the value unambiguous. Reserve binary, octal and hex for places where code or a machine needs them.

Pick a delimiter the other tool can parse: a space is easy to read, but a comma or a new line is safer if you will paste the list into a spreadsheet or a parser.

Normalize before comparing: two strings that look identical can have different code points if one uses a composed accent and the other a combining mark. Normalize both to the same form first.

Remember emoji cost several code points: a flag or a joined emoji is not one value. If you count code points for a character limit, user-visible characters may be fewer than the raw numbers suggest.

Do not confuse a code point with a byte: a code point is the value; the byte count depends on the encoding. For byte values, use the Unicode to UTF converter.

Check the odd characters: an unexpected value in the middle of a list often points to a stray space, a non-breaking space or a lookalike letter copied from another document.


FAQs

FAQ 1: What is a code point?
Answer: A code point is the unique number Unicode assigns to a character. It is usually written in hexadecimal with a U+ prefix, so the letter A is U+0041. Every character has exactly one code point, and that number does not change when the text is stored in a different encoding.

FAQ 2: What does the U+ notation mean?
Answer: The U+ prefix marks the following digits as a Unicode code point rather than a random number. The digits are hexadecimal, so they use 0–9 and A–F, and the value is often shown with at least four digits, for example U+0041 or U+1F600.

FAQ 3: What is the difference between a code point and a byte?
Answer: A code point is the abstract number of a character; a byte is part of how that number is stored. A single code point can take one, two, three or four bytes depending on the encoding. For example the euro sign is one code point, U+20AC, but three bytes in UTF-8.

FAQ 4: Why does an emoji sometimes return more than one code point?
Answer: Many emoji are built from more than one code point. A country flag is two regional indicator letters, and a family emoji joins several people with a zero-width joiner. A reader sees one symbol, but Unicode stores it as a sequence. Turn on grapheme grouping to keep those code points together.

FAQ 5: What is the custom base option for?
Answer: It writes each code point in any base from 2 to 36. Bases above 10 use the letters A–Z for the extra digits. It is useful for niche formats, teaching number bases, or any toolchain that expects a radix other than the usual binary, octal, decimal or hex.

FAQ 6: Can I convert a list of code points back into text?
Answer: Yes. Switch to Code Points → Text, paste the values separated by spaces, commas or new lines, and the tool rebuilds the characters. It recognizes the U+, 0x, 0b and 0o prefixes and can auto-detect plain values.

FAQ 7: Is my text sent to a server?
Answer: No. Both directions run in your browser using plain JavaScript and the browser's built-in Unicode support. Your text is never uploaded and nothing is stored anywhere.


Tools Worth Trying

TextToolz

The Ultimate Text Tools

TextToolz works seamlessly to let you convert and design your text. It is fast, reliable and secure. Trusted by thousands of users.