For developers
The conversion engine, as an npm package and a WordPress plugin.
The same open-source engine that runs this site: 40 legacy-font profiles, zero dependencies, runs in Node and the browser. Embed a converter on a WordPress site or call it from your own code.
npm · coming soon
Install
npm install indic-font-converterNode 18+ or any modern browser. ESM, CommonJS and .d.ts included. Not published yet: the name is reserved for the first release and this page will link to it.
echo 'fgUnh' | npx indic-font-convert --from krutidev --to unicode
indic-font-convert -f unicode -t bijoy < in.txt > out.txt
indic-font-convert --detect < mystery.txt
indic-font-convert --list --jsonQuick start
Convert in three lines.
import { convert, detect } from 'indic-font-converter';
// Kruti Dev → Unicode
convert('fgUnh', 'krutidev', 'unicode').output;
// → "हिन्दी"
// Unicode → Bijoy
convert('বাংলা', 'unicode', 'bijoy').output;
// → "evsjv"
// Which legacy font is this?
detect('fgUnh ds fy, vkidk Lokxr gS').candidates[0].profile.id;Outputs above are computed by this site’s own engine at build time.
01 · API overview
Small surface, typed.
- convert(text, from, to)
- Converts between any two endpoints: a profile id or "unicode". Font-to-font conversion pivots through Unicode. Returns { output, diagnostics, ms }; diagnostics list spans that were unknown, lossy or malformed.
- detect(text)
- Classifies text as Unicode, English or legacy, and ranks likely legacy fonts with a 0–1 confidence. Close scores set uncertain, so you can ask the user instead of guessing.
- profiles · getProfile(id) · profilesForLanguage(lang)
- The shipped profiles. Each has toUnicode(), fromUnicode(), chart() (the mapping table), fontNames, recommended Unicode fonts and provenance.
- listProfiles()
- Plain-data metadata for every profile, including status and an experimental flag, for building pickers and docs.
- profileForFontName(name)
- Maps a font-family name found in a Word, Excel or PDF file to a profile.
- indic-font-converter/profiles/<id>
- Per-profile subpath exports so bundlers include only the fonts you use.
Import only the fonts you need
Each profile has its own entry point, so a bundler pulls in that font and its script logic only, not the whole registry.
import profile from 'indic-font-converter/profiles/krutidev';
profile.toUnicode('fgUnh').output; // "हिन्दी"
profile.fromUnicode('हिन्दी').output; // "fgUnh"02 · Supported profiles
40 fonts in this release.
Generated from the engine registry, so it always matches what the package contains. Profiles still under audit are hidden on this site and are not included.
20 fixture-tested · 20 experimental.Experimental profiles convert what they cover but are not yet fixture-tested or reviewed by a fluent reader; the package metadata exposes this (experimental: true) so you can warn users.
| Profile id | Font | Language | Script | Status |
|---|---|---|---|---|
| krutidev | Kruti Dev 010कृतिदेव | Hindi | Devanagari | Fixture-tested |
| chanakya | Walkman Chanakya 905चाणक्य | Hindi | Devanagari | Fixture-tested |
| devlys | DevLys 010देवलिस | Hindi | Devanagari | Fixture-tested |
| preeti | Preetiप्रीति | Nepali | Devanagari | Fixture-tested |
| bijoy | Bijoy Classic / SutonnyMJবিজয় | Bengali | Bengali | Fixture-tested |
| bamini | Baminiபாமினி | Tamil | Tamil | Fixture-tested |
| nudi | Nudi / Baraha shared ASCIIನುಡಿ | Kannada | Kannada | Fixture-tested |
| shree-dev-0714 | Shree-Dev 0714 | Marathi | Devanagari | Fixture-tested |
| shivaji | Shivaji | Marathi | Devanagari | Fixture-tested |
| kiran | Kiran | Marathi | Devanagari | Fixture-tested |
| anu | Anu (Anu Script Manager 7)అను | Telugu | Telugu | Fixture-tested |
| terafont | TeraFont Trilochanટેરાફોન્ટ ત્રિલોચન | Gujarati | Gujarati | Fixture-tested |
| anmollipi | AnmolLipiਅਨਮੋਲ ਲਿਪੀ | Punjabi | Gurmukhi | Fixture-tested |
| drchatrik | DrChatrik | Punjabi | Gurmukhi | Fixture-tested |
| ml-tt-karthika | ML-TT Karthika | Malayalam | Malayalam | Fixture-tested |
| ml-tt-revathi | ML-TT Revathi | Malayalam | Malayalam | Fixture-tested |
| ml-tt-ambili | ML-TT Ambili | Malayalam | Malayalam | Fixture-tested |
| fml | FML Malayalamഎഫ്.എം.എൽ. | Malayalam | Malayalam | Fixture-tested |
| akruti-sarala | Akruti Odia Sarala | Odia | Odia | Fixture-tested |
| dv-tt-ganesh | DV-TTGanesh | Hindi | Devanagari | Experimental |
| dvw-tt-ganesh | DVW-TTGanesh | Hindi | Devanagari | Experimental |
| anjal | Anjal | Tamil | Tamil | Experimental |
| boomi | Boomi | Tamil | Tamil | Experimental |
| dinamani | Dinamani | Tamil | Tamil | Experimental |
| dinathanthy | Dinathanthy | Tamil | Tamil | Experimental |
| kavipriya | Kavipriya | Tamil | Tamil | Experimental |
| murasoli | Murasoli | Tamil | Tamil | Experimental |
| nakkeeran | Nakkeeran | Tamil | Tamil | Experimental |
| tab | TAB | Tamil | Tamil | Fixture-tested |
| tam | TAM / TAM-Elango | Tamil | Tamil | Experimental |
| tscii | TSCII | Tamil | Tamil | Experimental |
| pallavar | Pallavar | Tamil | Tamil | Experimental |
| indoweb | Indoweb | Tamil | Tamil | Experimental |
| koeln | Koeln | Tamil | Tamil | Experimental |
| libi | Libi | Tamil | Tamil | Experimental |
| webulagam | Webulagam | Tamil | Tamil | Experimental |
| softview | Softview | Tamil | Tamil | Experimental |
| vanavil | Vanavil | Tamil | Tamil | Experimental |
| indica | Indica | Tamil | Tamil | Experimental |
| anu-tamil | Anu Tamil | Tamil | Tamil | Experimental |
03 · WordPress plugin · coming soon
A converter on any page, with a shortcode or a block.
Vanilla JavaScript with the same engine bundled in. No React, no jQuery, no external requests, no tracking: everything runs in the visitor’s browser.
Shortcode and block
[indian_font_converter from="krutidev" to="unicode"]Or add the “Indian Font Converters” block and pick the fonts in the sidebar. The scripts load only on pages that use it.
Settings
- Default “from” and “to” fonts.
- Which of the 40 profiles visitors can choose.
- Unicode and legacy display fonts.
- An optional “Powered by Indian Font Converters” link, off by default.
Settings use the WordPress Settings API with nonces; all output is escaped and all options sanitised. Strings are translation-ready.
The plugin is built but not yet listed on WordPress.org. A download link will appear here when it is.
04 · Licence
GPL-3.0-or-later, explained.
What you can do
Use, study, modify and redistribute the engine, including commercially, as long as you keep the licence and notices.
What you must do
If you distribute a program that includes or links the engine, offer that whole program under the GPL with source. Using the converter from a separate process (the CLI) or running it on your server for users is not distribution.
Where the data comes from
Mapping tables are original work or from MIT, Apache-2.0, BSD, CC-BY, GPL-2.0-or-later and GPL-3.0 sources, all compatible with GPL-3.0-or-later. Each profile records its source and licence; the package ships them in NOTICE.md.
This is a plain-language summary, not legal advice. The licence text in the package is authoritative.
05 · FAQ
Questions about indian font converters for developers
Is the package or the plugin published yet?
Not yet. Both are built and tested, but the npm package and the WordPress.org listing are marked “coming soon” until they are published. This page will link to them then.
Can I use it in a closed-source or commercial product?
The engine is GPL-3.0-or-later. You may use it commercially, but a program that includes it and is distributed to others must itself be offered under the GPL, with source. Running the converter on your own server or calling the CLI as a separate program do not have that effect. If you need different terms, get in touch via the About page.
Does anything leave the device?
No. The engine is pure TypeScript with zero dependencies and makes no network requests, in Node, in the browser or in the WordPress plugin.
Why are some profiles missing from the package?
Profiles whose mappings are still being audited are hidden on the website and are not shipped in the package either. The package only contains what the site publishes.
What does “experimental” mean?
The mapping converts the characters it covers but has not been fixture-tested against reference converters or checked by a fluent reader. The metadata exposes this so your UI can warn users to proof-read.
Will the WordPress plugin force a credit link?
No. “Powered by Indian Font Converters” is an opt-in setting and is off by default, in line with WordPress.org guidelines.