Models
Models · Public release · 30 October 2026

Lekhani

Type Hindi in Latin letters, get Devanagari: 0.87 MB, on your own device.

65.9% on the Aksharantar Hindi test: 7 points more than IndicXlit’s model on its own, with 14× fewer parameters. IndicXlit’s full package, with a 358 MB word list, is still ahead at 68.7%.

Lekhani is a Hindi transliterator by Udgam Labs. You type kaise ho, it writes कैसे हो. The model, a list of 200,000 common Hindi words and the code that runs them come to 0.87 MB, small enough for a web page to download once and run on the visitor’s own device, so nothing typed is sent anywhere.

It is not the most accurate Hindi transliterator. IndicXlit’s full Python package scores 2.8 points higher on the main test, using a word list that takes 358 MB of memory. And it reads one word at a time, so it cannot tell “main” (I) from “mein” (in).

Read the release post

Try it now · in your browser · free, no login

Type Hindi in Latin letters and watch it turn into Devanagari.

Type Hindi in Latin letters. Each word turns into Devanagari when you finish it with a space. The model and its word list (0.87 MB) run inside this tab, and what you type never leaves your device.

Examples

Suggestions for the word you are typing appear here.

Loading the model (0.87 MB)…

Use it in your own site: download the five files from Hugging Face, serve them next to your page, and call the runner. It also runs in Node 18 or newer.

<script type="module">
  import { Transliterator } from "./translit.js";
  const tr = await Transliterator.load({
    model: "model.q4.gz", json: "model.json.gz", words: "words.bin.gz", rerank: "rerank.json",
  });
  tr.text("kaise ho");                       // "कैसे हो"
  tr.word("kal").candidates.map((c) => c.text);   // every spelling it considered, best first
</script>

The result

Under 1 MB, 7 points ahead of IndicXlit’s model on its own.

On the Aksharantar Hindi test by AI4Bharat (9,991 romanised words, exact match against any reference spelling), Lekhani gets 65.9% right, against 58.9% for IndicXlit’s model on its own, which has 14 times as many parameters (paired 95% interval of the gap +6.1 to +8.0). IndicXlit’s full Python package, which re-ranks with a 4.2-million-word list held in 358 MB of memory, is still ahead at 68.7%. Same scoring script and the same words for every system; measured by us on 28 October 2026.

Download
0.87 MB
Model, 200,000-word list and a 5 KB runner with no dependencies (gzip)
Aksharantar Hindi
65.9%
9,991 words, exact match. IndicXlit’s model 58.9%, its full package 68.7%
Parameters
0.81M
811,904, at 4 bits. IndicXlit’s model has 11.5M
Per word
18 ms
In a browser on a Mac mini; it starts in 0.2 s once the files are downloaded. Phones not measured yet

How it compares

Top-1 exact match on the Aksharantar Hindi test, and the number right out of 122 words people type in chat (everyday words, English words used in Hindi, brands and names), a set we wrote and a native Hindi speaker checked word by word. That set is small, so a few words’ difference means little.

Aksharantar Hindi test accuracy and Hinglish chat set results, one scorer and the same words for every system
SystemWhat it needsAksharantar HindiChat set (of 122)
Lekhani0.87 MB download65.9%(64.9–66.8)112
IndicXlit, model on its own11.5M parameters (46 MB; 14.4 MB as a third-party 8-bit browser export)58.9%102
IndicXlit, full Python packageModel + 4.2M-word list, 358 MB in memory68.7%112
  • Against IndicXlit’s model on its own: +7.0 points (paired 95% interval +6.1 to +8.0).
  • Against IndicXlit’s full package: −2.8 points (−3.6 to −2.1). The package is more accurate if you can afford its word list.
  • IndicXlit at 8 candidates instead of its default 4: its model 59.2%, its package 69.3%. Lekhani uses 8.

Other open transliterators

We ran every other open model we found that turns romanised Hindi into Devanagari on the same test, one word at a time. All of them score far lower than IndicXlit and Lekhani.

Other open transliterators on the Aksharantar Hindi test
SystemSizeAksharantar Hindi
IB-Emper hindi-translit-v3Its model on its own; its word re-ranker is not published15M parameters48.6%
UnimeType Transliteration 4B (v1.0)Built for whole sentences; a word-level result only4.2B parameters24.6%
indic-xlit-270M103M parameters21.7%
UnimeType Transliteration 2.0 4BReleased 28 Oct 2026; on a fixed 2,000-word sample; built for whole sentences4.2B parameters20.0%
indic-xlit-50M52.5M parameters14.8%
romanized-hindi-transliterator-60M60.6M parameters9.1%
UnimeType Transliteration 2.0 0.8BReleased 28 Oct 2026; built for whole sentences0.75B parameters8.0%
Rule-based typing schemesWikimedia’s Hindi typing rules, sanscripta few KB5–12%

Where it falls short

  • About one word in three on the Aksharantar test is wrong at top-1. The test is hard, with many rare words and names; on everyday chat words it does much better (41 of 44 in our chat set), but it still makes mistakes there.
  • Some common words come out wrong: “acha” becomes अच् (should be अच्छा; “accha” works), “kal” becomes काल (कल is its second choice), “delhi” becomes देल्ही (should be दिल्ली).
  • No sentence context: it writes one word at a time, so “main” (I) and “mein” (in) both become में. Pick मैं from the suggestions.
  • IndicXlit’s full Python package is 2.8 points more accurate on the main test, using a 358 MB word list.
  • Hindi only, and Latin to Devanagari only.
  • Speed was measured in a browser on one Mac mini. Phones and older laptops are not measured yet.

How it works

  1. 1

    Word pairs

    About 4.3 million pairs of romanised and Devanagari Hindi words: Aksharantar by AI4Bharat (its CC0 and CC-BY parts), and pairs written by IndicXlit (MIT) as a teacher, for common Hindi words from IndicCorp v2 and for English words used in Hindi.

  2. 2

    The model

    A small encoder-decoder transformer that reads Latin letters and writes Devanagari letter by letter: 811,904 parameters, trained from random weights and stored at 4 bits.

  3. 3

    The word list

    200,000 common Hindi words from IndicCorp v2 word counts (CC0). The model proposes 8 spellings, and the list moves a common real word up when the model is unsure. Words not in the list still work from the model alone.

Good fits

  • A “type in Hindi” switch on search boxes, forms, chat and notes, with no server.
  • Suggestions in a keyboard or an editor: show the runners-up so people can fix a word.
  • Apps that must work offline or keep what people type on their device.

It does not translate. Check names on legal or official documents by hand.

From an AI agent

Lekhani also runs as a tool on our MCP server, so Claude Code, Codex, Cursor and other MCP clients can turn Hindi typed in Latin letters into Devanagari, with each word’s runners-up if asked. What the agent sends goes to the server for that call; to keep text on the device, use the browser or Node version.

# Claude Code
claude mcp add --transport http udgamlabs https://mcp.udgamlabs.com/mcp

# Codex
codex mcp add udgamlabs --url https://mcp.udgamlabs.com/mcp

# Cursor: .cursor/mcp.json
{ "mcpServers": { "udgamlabs": { "url": "https://mcp.udgamlabs.com/mcp" } } }

The tool is lekhani_transliterate; the same server has every model that runs as a tool (mcp.udgamlabs.com). The model runs on the MCP server itself, so there is nothing to wake and a sentence takes about a second.

The model

Kind
Transliterator: Hindi in Latin letters → Devanagari
Model
Encoder-decoder transformer, 2 + 2 layers, width 128; 811,904 parameters at 4 bits
Download
871,248 bytes (gzip): model 432,512, word list 432,193, runner 5,295, settings 1,248
Runs on
Any recent browser, or Node 18+; JavaScript with no dependencies
Languages
Hindi (and English words used in Hindi)

Licence

Apache-2.0 for the model and the runner; CC0 for the word list. Copyright 2026 Udgam Labs LLP.

Built with Aksharantar by AI4Bharat (hand-collected part CC-BY, mined parts CC0), IndicXlit by AI4Bharat (MIT) as the teacher, IndicCorp v2 by AI4Bharat (CC0) for the word counts, and the CMU Pronouncing Dictionary (BSD-style) for English words. Details in the model’s NOTICE file. Thank you to everyone who built and shared them.

How to cite

@misc{udgamlabs2026lekhani,
  title  = {Lekhani: a 0.87 MB in-browser Hindi transliterator},
  author = {Prasad, Jitesh K},
  year   = {2026},
  howpublished = {Udgam Labs},
  url    = {https://huggingface.co/udgamlabs/Lekhani}
}