Convert text to binary, hexadecimal, octal or ASCII, switch between number bases, unserialize data and generate QR codes and barcodes for free.

Serialize & Unserialize

Convert between PHP serialized strings, JSON, XML and readable arrays. Inspect and repair serialized data from databases and session files for free.

QR Code Generator

Create QR codes for links, text, WiFi, contacts and phone numbers, choose the size and error correction level, then download the PNG. Free forever.

Barcode Generator

Generate Code 128, EAN, UPC and Code 39 barcodes in your browser, adjust size and text, then download the image. No signup and no watermark.

Text to Binary Converter

Convert text to binary and binary back to text, with UTF-8 support and your choice of separator between bytes. Free online translator with examples.

Text to Hex Converter

Convert text to hexadecimal and hex back to readable text, with UTF-8 handling and configurable spacing between byte pairs. Free online tool.

Text to ASCII Converter

Convert text to ASCII or UTF-8 code points and turn code point lists back into text, with a full printable ASCII reference table on the page.

Text to Octal Converter

Convert text to octal and octal back to UTF-8 text, with your choice of separator. Includes a worked example and a full octal escape reference.

Decimal Converter

Convert a decimal number to binary, octal and hexadecimal at once, with the division-by-two working shown step by step. Free number base converter.

Binary Converter

Convert a binary number to decimal, octal and hexadecimal in one step, with the positional working shown so you can check the result by hand.

Octal Converter

Convert an octal number to decimal, binary and hexadecimal at once. Includes the three-bit grouping rule that makes octal simple to read by eye.

Hexadecimal Converter

Convert a hexadecimal number to decimal, binary and octal in one step, with the four-bit nibble mapping shown so you can verify it yourself.

Two families of converter

Everything here converts one representation of data into another, but the tools divide cleanly. Text-to-code converters take human-readable characters and show you the numbers a computer stores — binary, hexadecimal, ASCII, octal. Base converters take a number in one base and rewrite it in the others — decimal, binary, octal, hex. Three more (serialize, QR, barcode) convert data into other formats entirely.

Why hex is written the way it is

Hexadecimal exists because four binary digits map exactly onto one hex digit. 1111 is F, always, with no arithmetic. That means a byte — eight bits — is always exactly two hex characters, so a colour like #FF8800 is unambiguously three bytes, and a memory address in hex can be read off in bytes by eye. Octal works the same way with three bits per digit, which is why Unix file permissions are octal: 755 is three groups of three permission bits.

This is also why converting text to hex and text to binary give you the same information in different widths. A is decimal 65, hex 41, binary 01000001, octal 101. Four representations, one byte.

Watch out for UTF-8

The ASCII table only covers code points 0–127, and any character outside it — an accented letter, a currency symbol, an emoji — is stored as two, three or four bytes in UTF-8. So é is not one byte, it is C3 A9, and an emoji is four. Every converter on this site is UTF-8 aware and shows you the real byte sequence, which is usually the moment people discover why their string length count disagreed with their character count.

Serialized data, and why it breaks

PHP's serialize() writes a string that encodes types and lengths, like s:5:"hello". The length prefix is the part that causes trouble: if anything edits the string afterwards — a find-and-replace across a database dump, a migration between character sets, truncation by a column that was too narrow — the declared length stops matching the actual content and unserialize() fails outright.

The serialize and unserialize tool is most useful for exactly that situation: paste the broken string, see which element's length is wrong, and fix it. It also converts between serialized PHP, JSON and readable array output, which is handy when you are migrating a WordPress option or a Laravel session payload.

A security note worth repeating: never call unserialize() on data that came from a user. PHP object injection is a real and well-exploited vulnerability class. Use JSON for anything crossing a trust boundary.

QR codes: error correction is the setting that matters

The QR generator offers four error correction levels, and most people leave it on the default without knowing what it does. The level determines how much of the code can be damaged or obscured and still scan:

LevelRecovers fromUse when
L (Low)~7% damageClean digital display, maximum data capacity
M (Medium)~15%General print — the sensible default
Q (Quartile)~25%Industrial labels, small print sizes
H (High)~30%A logo overlaid in the centre, or outdoor use

Higher correction means a denser code for the same data, so it needs to be printed larger. The rule of thumb for print is a minimum of 2cm square with a quiet zone — the blank margin — of at least four modules on every side. Codes fail to scan far more often because someone cropped the quiet zone than because of anything else.

Barcodes: pick the symbology before the data

Barcode formats are not interchangeable, because each encodes a different character set and length. Code 128 handles the full ASCII range and variable lengths, which makes it the default for internal logistics. EAN-13 and UPC-A are fixed-length numeric formats governed by GS1 and are the ones on retail packaging — you cannot invent a valid retail barcode, the prefix is assigned. Code 39 is older, less dense, and limited to uppercase and a few symbols, but it is still common in defence and automotive contexts. The barcode generator validates your input against the symbology you pick, so an EAN-13 with twelve digits will tell you it is wrong.