What Is Unicode and How Does It Work?

Unicode is the universal standard that gives every character in every writing system its own number, so a Hindi message, a Tamil web page and an emoji look the same on any device. Here is how it works, and how India's own ISCII code shaped it.

· 7 min read
Yellow railway station nameboards at Sonpur in Bihar showing the station name in Hindi Devanagari, English Latin letters and Urdu script
Nameboards at Sonpur Junction in Bihar carry the same name in three scripts: Devanagari, Latin and Urdu. Unicode lets a computer store all three in one line of text. Photo: AbhinavAnkur / Wikimedia Commons, CC BY-SA 4.0

Unicode is the universal standard that gives every character in every writing system a unique number, called a code point, so that any computer, phone or website can store and display text the same way. The capital letter A is U+0041, the Devanagari letter क is U+0915, the rupee sign ₹ is U+20B9 and the "face with tears of joy" emoji 😂 is U+1F602, wherever in the world you happen to be.

Your device then uses an encoding, almost always UTF-8, to turn those numbers into bytes, and a font to turn them back into shapes on the screen. That simple agreement is why a WhatsApp message typed in Hindi in Patna arrives intact on a phone in Toronto.

The problem: a different alphabet for every machine

Computers only understand numbers, so text has always been a code. The most influential early one was ASCII, first published in the United States in 1963. It used seven bits, which allowed just 128 characters: the English alphabet in upper and lower case, the digits, punctuation and a set of invisible control codes for teleprinters.

Black and white grid of the 1967 US-ASCII code chart, listing control codes, digits, punctuation and upper and lower case English letters in eight columns
The 1967 US-ASCII chart: 128 slots, enough for English and very little else. Image: US Government / Wikimedia Commons, Public domain

That was fine for English. It was useless for nearly everyone else. Over the following decades, countries and companies filled the gap with hundreds of incompatible "code pages", each reusing the same numbers for different letters. Byte 224 might be à on a French machine, a Hebrew letter in Israel or a Cyrillic letter in Moscow. Send a file from one system to another and it turned into gibberish, a problem so common that the Japanese gave it a name, mojibake, meaning "character transformation".

Asian languages had it worst. Chinese, Japanese and Korean need thousands of characters, so they used complex multi-byte systems that clashed with each other. A single document mixing Japanese and Hindi was practically impossible.

One number for every character

The fix began in 1987, when Joe Becker of Xerox and Lee Collins and Mark Davis of Apple started working on a single universal character set. In August 1988, Becker circulated a proposal called "Unicode 88", describing an encoding that would be unique, universal and uniform. The name stuck.

The Unicode Consortium, a non-profit based in California, was incorporated in January 1991, and Unicode 1.0 appeared that October. Early on, the project merged its work with the parallel international standard, ISO/IEC 10646, so the world would not end up with two rival universal codes. The two remain synchronised today, character for character.

The key design choice was to separate three ideas that older systems had muddled together:

  • The character, an abstract idea such as "Latin capital A" or "Devanagari letter ka".
  • The code point, the number Unicode assigns to it, written as U+ followed by hexadecimal digits.
  • The glyph, the visual shape a particular font draws.

Unicode decides only the first two. Whether your क looks elegant or plain is up to the font.

The original plan assumed 65,536 slots would be plenty. It was not, and in 1996 Unicode 2.0 expanded the space to 1,114,112 code points, arranged in 17 "planes" of 65,536 each. Most everyday characters sit in the first plane; emoji and historic scripts live higher up.

How big Unicode is today

Unicode releases a new version every year, usually in September. Unicode 18.0, published on 16 September 2026, added 13,007 characters, bringing the total to 172,808. The newcomers include the Jurchen script of a medieval northeast Asian dynasty, the ancient Chinese "Small Seal" script with more than 11,000 characters, archaic cuneiform numerals, three new currency symbols and nine new emoji, among them a lighthouse that should reach phone keyboards in 2027.

That repertoire now covers well over 150 scripts, from Latin, Arabic and Han to Ol Chiki, Meetei Mayek and Egyptian hieroglyphs. Even the world's oldest writing gets a place, because researchers need to type it, search it and quote it as easily as English.

UTF-8: the trick that made it work

A code point is just a number. Computers still have to store it as bytes, and the method that won is UTF-8, sketched by Ken Thompson and Rob Pike of Bell Labs in September 1992, famously on a placemat in a New Jersey diner.

UTF-8 is a variable-length encoding. Every plain ASCII character still takes exactly one byte, so old English text was automatically valid UTF-8, which made it painless to adopt. Other characters take two, three or four bytes: Devanagari letters take three, and most emoji take four. The byte patterns are designed so a program can always tell where one character ends and the next begins, even mid-stream.

The result is near-total dominance. According to W3Techs, 99.1% of websites whose encoding is known use UTF-8 as of October 2026. It is the default for email, mobile apps and modern programming languages, and much of that text crosses oceans as light pulses through undersea fibre-optic cables.

How India's ISCII shaped Unicode

India arrived at the problem early, and its answer is built into Unicode itself. Between 1986 and 1988, a committee under the Department of Electronics developed ISCII, the Indian Script Code for Information Interchange, an 8-bit standard for the Brahmi-derived scripts of India. The Bureau of Indian Standards adopted it in 1991 as IS 13194.

ISCII's clever idea was a common layout: comparable sounds sit at the same position in every script. Unicode borrowed that plan from ISCII-1988 for nine Indian scripts, which is why "ka" lands in the same relative slot each time: Devanagari क is U+0915, Bengali ক is U+0995, Gujarati ક is U+0A95 and Tamil க is U+0B95. That parallel structure makes transliteration between Indian scripts far simpler.

Close-up of a black computer keyboard with Hindi Devanagari letters printed beside the English letters on each key in the InScript layout
A keyboard with the InScript layout, India's standard way of typing Devanagari and other Indian scripts. Photo: Suresh Kumar Shukla / Wikimedia Commons, CC BY-SA 3.0

Indian scripts also show why Unicode needs smart software. Text is stored in the order it is spoken, not the order it is drawn. The word हिन्दी is six code points, and the vowel sign ि is stored after ह even though it appears before it on screen. The conjunct क्ष is three code points: क, a virama that suppresses the vowel, and ष. A rendering engine and font must combine and reorder them correctly, which is why Indian scripts on early phones often looked broken even when the underlying text was perfectly fine.

Before Unicode was widely supported, Hindi publishing relied on font tricks. Popular typefaces such as Kruti Dev mapped Devanagari shapes onto ordinary English keys, so the file really contained Latin letters wearing a Hindi costume. Without the exact font, the text turned into nonsense, and search engines could not read it at all. Moving to genuine Unicode text is what made Indian-language content searchable, shareable and indexable on the open web.

The government has stayed at the table. The Ministry of Electronics and Information Technology was a member of the Unicode Consortium from 2000 to 2019 and again in 2021, and rejoined in 2025 as a voting Supporting Member, alongside Tamil Nadu's Tamil Virtual Academy. The rupee sign shows what that access is worth: the Union Cabinet approved D. Udaya Kumar's design in July 2010, and it was encoded as U+20B9 in Unicode 6.0 just months later.

Why it matters for India's internet

Indian languages now dominate how India uses the internet. The IAMAI and Kantar "Internet in India 2024" report counted 886 million active users and found that 98% of them, about 870 million people, accessed content in Indian languages. Even web addresses can now be local: the .भारत domain launched in Devanagari in 2014, and NIXI offers Indian-language domains in all 22 scheduled languages.

All of that rests on Unicode. Even the humble digits carry Indian history: the ten numerals 0 to 9 that grew out of India's invention of zero sit at the very start of the code, unchanged since ASCII, while Devanagari, Bengali, Tamil and other scripts keep their own native digits alongside them.

Emoji: the characters everyone knows

Most people meet Unicode through emoji. The first popular set was designed by Shigetaka Kurita for Japanese mobile operator NTT Docomo in 1999. When Apple and Google wanted their phones to work with Japanese networks, emoji were brought into Unicode 6.0 in 2010, the same release that added the rupee sign. Since then, the Consortium has approved skin tones, gender variants and flags, and every new emoji is just another code point that phone makers draw in their own style.

The takeaway

Unicode is invisible when it works, which is almost always. It gives every character on Earth a permanent number, lets UTF-8 carry those numbers in efficient bytes, and leaves fonts to make them beautiful. Like the QR code, it succeeded because it was open for anyone to build on, and it is the reason people everywhere can text, search and publish in their own script, from Sonpur to São Paulo.