Text to Binary, Hex & ASCII Translator
Multi-byte characters (accents, emoji, non-Latin scripts) are encoded as several bytes each, the same way UTF-8 stores them on disk — one emoji can legitimately produce 4 separate bytes.
ASCII table lookup
| Char | Dec | Hex | Binary |
|---|---|---|---|
| (space) | 32 | 20 | 00100000 |
| ! | 33 | 21 | 00100001 |
| " | 34 | 22 | 00100010 |
| # | 35 | 23 | 00100011 |
| $ | 36 | 24 | 00100100 |
| % | 37 | 25 | 00100101 |
| & | 38 | 26 | 00100110 |
| ' | 39 | 27 | 00100111 |
| ( | 40 | 28 | 00101000 |
| ) | 41 | 29 | 00101001 |
| * | 42 | 2a | 00101010 |
| + | 43 | 2b | 00101011 |
| , | 44 | 2c | 00101100 |
| - | 45 | 2d | 00101101 |
| . | 46 | 2e | 00101110 |
| / | 47 | 2f | 00101111 |
| 0 | 48 | 30 | 00110000 |
| 1 | 49 | 31 | 00110001 |
| 2 | 50 | 32 | 00110010 |
| 3 | 51 | 33 | 00110011 |
| 4 | 52 | 34 | 00110100 |
| 5 | 53 | 35 | 00110101 |
| 6 | 54 | 36 | 00110110 |
| 7 | 55 | 37 | 00110111 |
| 8 | 56 | 38 | 00111000 |
| 9 | 57 | 39 | 00111001 |
| : | 58 | 3a | 00111010 |
| ; | 59 | 3b | 00111011 |
| < | 60 | 3c | 00111100 |
| = | 61 | 3d | 00111101 |
| > | 62 | 3e | 00111110 |
| ? | 63 | 3f | 00111111 |
| @ | 64 | 40 | 01000000 |
| A | 65 | 41 | 01000001 |
| B | 66 | 42 | 01000010 |
| C | 67 | 43 | 01000011 |
| D | 68 | 44 | 01000100 |
| E | 69 | 45 | 01000101 |
| F | 70 | 46 | 01000110 |
| G | 71 | 47 | 01000111 |
| H | 72 | 48 | 01001000 |
| I | 73 | 49 | 01001001 |
| J | 74 | 4a | 01001010 |
| K | 75 | 4b | 01001011 |
| L | 76 | 4c | 01001100 |
| M | 77 | 4d | 01001101 |
| N | 78 | 4e | 01001110 |
| O | 79 | 4f | 01001111 |
| P | 80 | 50 | 01010000 |
| Q | 81 | 51 | 01010001 |
| R | 82 | 52 | 01010010 |
| S | 83 | 53 | 01010011 |
| T | 84 | 54 | 01010100 |
| U | 85 | 55 | 01010101 |
| V | 86 | 56 | 01010110 |
| W | 87 | 57 | 01010111 |
| X | 88 | 58 | 01011000 |
| Y | 89 | 59 | 01011001 |
| Z | 90 | 5a | 01011010 |
| [ | 91 | 5b | 01011011 |
| \ | 92 | 5c | 01011100 |
| ] | 93 | 5d | 01011101 |
| ^ | 94 | 5e | 01011110 |
| _ | 95 | 5f | 01011111 |
| ` | 96 | 60 | 01100000 |
| a | 97 | 61 | 01100001 |
| b | 98 | 62 | 01100010 |
| c | 99 | 63 | 01100011 |
| d | 100 | 64 | 01100100 |
| e | 101 | 65 | 01100101 |
| f | 102 | 66 | 01100110 |
| g | 103 | 67 | 01100111 |
| h | 104 | 68 | 01101000 |
| i | 105 | 69 | 01101001 |
| j | 106 | 6a | 01101010 |
| k | 107 | 6b | 01101011 |
| l | 108 | 6c | 01101100 |
| m | 109 | 6d | 01101101 |
| n | 110 | 6e | 01101110 |
| o | 111 | 6f | 01101111 |
| p | 112 | 70 | 01110000 |
| q | 113 | 71 | 01110001 |
| r | 114 | 72 | 01110010 |
| s | 115 | 73 | 01110011 |
| t | 116 | 74 | 01110100 |
| u | 117 | 75 | 01110101 |
| v | 118 | 76 | 01110110 |
| w | 119 | 77 | 01110111 |
| x | 120 | 78 | 01111000 |
| y | 121 | 79 | 01111001 |
| z | 122 | 7a | 01111010 |
| { | 123 | 7b | 01111011 |
| | | 124 | 7c | 01111100 |
| } | 125 | 7d | 01111101 |
| ~ | 126 | 7e | 01111110 |
Type text above to see its binary or hexadecimal representation, or paste in binary to convert it back to readable text. Under the hood, every character you type is first looked up in a character-code table — by default ASCII — which assigns each letter, digit and punctuation mark a specific whole number, and that number is what actually gets shown in binary or hex. Converting "A" to binary isn't really converting a letter at all; it's converting the number 65, which is what "A" happens to mean in ASCII.
Why Everything Comes Down to a Number Table
Computers only ever store numbers. ASCII (American Standard Code for Information Interchange), standardized in 1963 as ANSI X3.4, solved the problem of getting text into that number-only world by fixing a single agreed table: 65 always means capital A, 97 always means lowercase a, 48 always means the digit character "0", and so on through 128 total code points, using just 7 bits. That original 1963 version didn't even include lowercase letters — they were added in the 1967 revision once 7 bits' worth of headroom was better understood to be enough for both cases plus punctuation and control codes. Every modern system still honors that original 128-character mapping exactly, which is why ASCII is sometimes called the closest thing computing has to a universal constant.
Reading the Binary Output
Each character converts to 8 binary digits — a byte — with the extra leading bit (ASCII only strictly needs 7) fixed at 0 for standard text. "A" is 65 in decimal, which is 01000001 in binary: reading right to left, that's 64 + 1, matching 65. Spaces between bytes in the output mark character boundaries, the same way the space between Morse letters marks a letter boundary elsewhere on this site — without that separator, a run of 1s and 0s would be genuinely ambiguous about where one character's code ends and the next one begins.
Why Emoji and Accented Letters Break a Naive Binary Converter
ASCII only ever defined 128 characters, which is nowhere near enough for the accented letters used across European languages, let alone emoji or non-Latin scripts. Modern text almost always relies on UTF-8 instead — this site's binary and ASCII reference covers exactly who built it and why — which keeps plain ASCII text untouched while spreading anything outside those original 128 characters across two, three, or even four bytes tagged with a leading-bit pattern marking each one as part of a larger character. That's why a naive character-by-character binary converter that assumes one letter equals one byte will mangle an emoji or an accented letter like é — it isn't a bug in the concept of binary conversion, it's a sign the converter is silently assuming ASCII when the actual input needs UTF-8's multi-byte rules.
Hexadecimal: The Same Numbers, Shorter
Hex output represents the exact same underlying character-code numbers as the binary output, just in base 16 instead of base 2, using digits 0-9 and letters A-F. "A" (65 decimal, 01000001 binary) is 41 in hex — noticeably shorter to read and far less error-prone to type by hand than eight 1s and 0s, which is exactly why hex is the format programmers actually use when they need to look at raw byte values, from memory addresses to color codes to network packet dumps.
A Worked Example: Converting "Hi"
"H" is 72 in ASCII (01001000 in binary, 48 in hex) and "i" is 105 (01101001 in binary, 69 in hex). So "Hi" becomes 01001000 01101001 in binary, or 48 69 in hex — two bytes for two characters, which holds true for any plain-ASCII text but stops holding true the moment UTF-8 multi-byte characters get involved.
Hex Decoding and the ASCII Lookup Table
Hex now decodes back to text as well, handling the same multi-byte UTF-8 reassembly as the binary decoder — paste in space-separated hex pairs (the "0x" prefix is optional and ignored) and they're regrouped into the correct characters, not read one byte per character. Below the converter, a searchable ASCII lookup table lists every printable character from space through tilde alongside its decimal, hex and binary values, so you can look up a single code without running a full conversion.
Frequently Asked Questions
Is binary code the same thing for every computer, or does it vary by machine?
The 1s and 0s themselves are universal, but what they mean depends entirely on the agreed character-code table being used — ASCII, UTF-8, and older systems like EBCDIC all assign different numbers to the same letters, so the same binary sequence can decode to different text under a different table.
Why is a byte always 8 bits instead of some other number?
There's no law of physics requiring it — early computers used varying word sizes — but 8 bits became the near-universal standard because it comfortably covers the 128 ASCII codes with room to spare, splits evenly into two 4-bit hex digits, and was cemented by influential 1960s-70s hardware like IBM's System/360, after which the rest of the industry converged on it too.
Does capitalization change the binary value of a letter?
Yes, and by exactly 32 in decimal for every letter: lowercase letters sit 32 higher than their uppercase counterparts in the ASCII table (A is 65, a is 97), a deliberate design choice with a genuinely elegant side effect — it turns case-conversion into a one-position binary toggle instead of a full lookup-table swap.