ManyTools

Hex Converter: Text to Hex and Hex to Text

Turn text into hexadecimal bytes or paste hex and read it back as text, with UTF-8 handled correctly and a plain message when a character is not a hex digit.

Last updated: October 14, 2026How this is calculated →

Hex writes each byte of text as two characters from 0 to 9 and A to F. Hello, World! is 13 bytes of UTF-8, so it becomes 13 pairs: 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21. Plain English letters take one byte each; accented letters take two and most emoji take four.

This converter turns text into hex and hex into text in your browser for general development use. Hex is a way of writing bytes, not encryption: a password written in hex can be read back by anyone who has the string. Check the output against the format your own system expects, such as letter case or separators, before relying on it.

Direction

Hex

48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21

13 bytes of UTF-8

We email you a link back to this page and add you to occasional ManyTools emails; every email has a one-click unsubscribe.

Embed this calculator on your site →

About the Hex Converter

Hexadecimal is the usual way to look at the raw bytes behind a piece of text, in a packet capture, a hex editor or an escaped string in source code. Each byte holds 8 bits, and each hex digit stands for 4 of them, so every byte is exactly two digits: the letter H is byte 72, written 48. The converter turns your text into bytes using UTF-8 first, which is why the byte count can be larger than the number of characters you typed: é is C3 A9 (two bytes) and 🙂 is F0 9F 99 82 (four). Plain English text matches an ASCII table. Going the other way, it accepts upper or lower case, ignores spaces, line breaks, colons, hyphens and commas between bytes, and skips a 0x in front of a byte, so a plain run of bytes pastes in as it is. A hex-editor dump with an address column does not: the address digits are read as bytes and no error is shown, so copy only the byte columns. If a character is not a hex digit, it names that character and where it sits, and if the bytes are not valid UTF-8 text it says so rather than printing garbled symbols.

Frequently asked questions

Is this the same as converting a number to hex?+

No. This page converts text, byte by byte, so the digit 7 typed as text becomes 37, its character code. To turn the number 255 into FF, use the Number Base Converter, which works on numeric values instead of characters.

Why does one character sometimes give more than one hex pair?+

UTF-8 stores characters outside basic ASCII in two, three or four bytes. The é in café becomes C3 A9, two pairs, and a smiley such as 🙂 becomes F0 9F 99 82, four pairs. The byte count under the result shows how many bytes your text used.

Which separator should I pick?+

Use whatever the place you are pasting into expects. Spaces are easiest to read, no separator suits code and config values, and colons are common in network tools and certificate fingerprints. The decoder reads all three, so the choice only matters for output.

Why does decoding say the bytes are not valid UTF-8 text?+

Every pair was read, but the byte values do not form UTF-8 text. FF can never appear in UTF-8, and a run such as FF D8 FF E0 is the start of a JPEG image. The converter reports this instead of showing replacement characters. If the bytes came from an older system, they may be text in another encoding, such as Windows-1252, which this converter does not read.

Embed this calculator

Free to use on your own site. Paste this snippet where you want the hex converter to appear — it resizes itself automatically.

Embed code
<iframe
  src="https://manytools.co/embed/hex-converter"
  title="Hex Converter by ManyTools"
  data-manytools="hex-converter"
  width="100%"
  height="640"
  loading="lazy"
  style="border:0;width:100%;max-width:720px"></iframe>
<script>
(function () {
  window.addEventListener("message", function (e) {
    if (e.origin !== "https://manytools.co") return;
    var d = e.data || {};
    if (d.type !== "manytools:embed:height" || d.slug !== "hex-converter") return;
    var f = document.querySelector('iframe[data-manytools="hex-converter"]');
    if (f && d.height) f.style.height = d.height + "px";
  });
})();
</script>
Plain link (fallback)
<a href="https://manytools.co/dev/hex-converter">Hex Converter by ManyTools</a>