March 24, 20267 min read

Hindi Text Not Showing? How to Fix Font and Encoding Issues

Step-by-step fixes for Hindi text showing as boxes, question marks, or gibberish on Windows, Mac, Android, and in browsers.

hindi font not showing encoding fix troubleshooting
Ad 336x280

You receive a document, open a website, or get a message — and where Hindi text should be, you see empty boxes, question marks, or random English characters. This is one of the most common Indian language computing problems, and it has exactly four possible causes.

Symptom → Cause Quick Diagnosis

What You SeeLikely CauseFix
Empty boxes (□□□□)Missing Devanagari fontInstall font or update OS
Question marks (????)Wrong character encodingChange encoding to UTF-8
Random English letters (like "uke Lrs")Legacy font text (Kruti Dev etc.)Install the legacy font or convert to Unicode
Partially broken text (some chars okay, some boxes)Incomplete font (missing conjuncts)Use a complete Unicode font like Noto Sans Devanagari
Garbled mix of charactersDouble encodingRe-encode from original source

Fix 1: Missing Hindi Fonts (Empty Boxes)

This is the most common cause. Your system doesn't have a font that can render Devanagari characters.

Windows 10/11

Windows 10/11 should include Devanagari fonts by default, but they sometimes don't install with stripped-down or modified Windows installations.

  1. Settings → Apps → Optional features
  2. Search for "Hindi Supplemental Fonts"
  3. Click Add a feature → Install it
  4. Restart your browser/application
If that doesn't work, manually install a Devanagari font:
  • Download Noto Sans Devanagari from Google Fonts (free)
  • Right-click the .ttf file → Install for all users
  • Restart your application

Mac

macOS includes Devanagari fonts out of the box. If Hindi text isn't rendering:

  1. Open Font Book (Applications → Font Book)
  2. Search for "Devanagari"
  3. If fonts are listed but grayed out, right-click → Enable
  4. If no Devanagari fonts exist, download Noto Sans Devanagari and double-click to install

Android

Android ships with Hindi font support. If you see boxes:


  1. Settings → System → Languages & Input → Languages

  2. Add Hindi (India) to your language list (you don't need to make it primary)

  3. This forces Android to download the Devanagari font pack

  4. Restart the app where text wasn't showing


Linux (Ubuntu/Fedora)

sudo apt install fonts-noto-core fonts-noto-extra

Or for Fedora:

sudo dnf install google-noto-sans-devanagari-fonts

Fix 2: Wrong Character Encoding (Question Marks)

This happens when text was saved in UTF-8 but opened as ASCII/Latin-1, or vice versa.

In a Browser

  1. Most modern browsers auto-detect encoding, but if Hindi shows as ????:
  2. Check if the website specifies encoding in its HTML:
  3. In Chrome: three-dot menu → More tools → Encoding (if available in your version)
  4. If using an extension to force encoding, set it to UTF-8

In Notepad/Text Editors

  1. Open the file in Notepad (Windows 11) or VS Code
  2. Look at the bottom-right corner for the current encoding (ANSI, UTF-8, UTF-16)
  3. If it says ANSI, re-open with UTF-8:
- Notepad: File → Open → select the file → change "Encoding" dropdown to UTF-8 before clicking Open - VS Code: Click the encoding label in the status bar → Reopen with Encoding → UTF-8

In Microsoft Excel

Excel is notorious for mangling Hindi text, especially from CSV files:

  1. Don't double-click the CSV to open it
  2. Instead: Open Excel → Data → From Text/CSV
  3. Set File Origin to 65001: Unicode (UTF-8)
  4. Preview the data to confirm Hindi appears correctly
  5. Then click Load

In MySQL/Database

If Hindi data shows as ???? in your database:


  • Check that the column uses utf8mb4 charset (not utf8 which is actually utf8mb3)

  • Check that the connection charset is utf8mb4

  • Check that the client (phpMyAdmin, DBeaver, etc.) is set to UTF-8


Fix 3: Legacy Font Text (Random English Characters)

If you see something like uke Lrs or 'kf"k where Hindi should be — this is text typed in a legacy font like Kruti Dev, Shree Lipi, Chanakya, or Shusha.

These fonts map Hindi characters to English keyboard positions. Without the specific font installed, you see the underlying ASCII characters.

Quick fix: Install the legacy font
  1. Identify which font was used (ask the sender, or try common ones)
  2. Download and install the font (.ttf file)
  3. In your document, select the text and change the font to the correct legacy font
Permanent fix: Convert to Unicode
  1. Copy the legacy-font text
  2. Use a Kruti Dev to Unicode converter tool online
  3. Paste the converted Unicode text back
  4. Now the Hindi will display correctly in any font

Fix 4: Incomplete Conjunct Rendering

Sometimes basic Hindi characters show fine, but complex conjuncts (like क्ष, त्र, ज्ञ, श्र) appear as broken sequences with visible halant marks.

This means your font has basic Devanagari characters but lacks the conjunct ligature tables.

Fix: Switch to a complete Unicode font:
  • Noto Sans Devanagari — Google's comprehensive font, excellent conjunct support
  • Mangal — Windows system font, good for documents
  • Lohit Devanagari — Linux default, solid conjunct support
  • Tiro Devanagari — Google Fonts, beautiful for body text
Avoid random "Hindi fonts" from unverified download sites — many have incomplete character tables.

Fix 5: Browser-Specific Issues

Chrome

  • Update to the latest version (older versions had Devanagari rendering bugs)
  • Clear font cache: chrome://settings/fonts → Reset to defaults
  • Disable font-override extensions that might block Devanagari

Firefox

  • Settings → General → Fonts → Advanced → Under "Fonts for: Hindi", set a known Devanagari font
  • Ensure "Allow pages to choose their own fonts" is checked

Safari (Mac)

  • Usually works out of the box
  • If not: System Preferences → Language & Region → ensure Hindi is listed

Preventing Hindi Text Issues

For content creators and developers — avoid these issues from the start:

When saving files:
  • Always save as UTF-8 (not ANSI, not UTF-16, not "Unicode" which means UTF-16 in Windows)
  • In VS Code: bottom-right encoding label → Save with Encoding → UTF-8
  • In Notepad: Save As → Encoding dropdown → UTF-8
When creating websites:
  • Add as the first tag in
  • Serve files with Content-Type: text/html; charset=utf-8 header
  • Save HTML/CSS/JS files as UTF-8
When sending documents:
  • PDF preserves fonts and encoding — prefer PDF for Hindi documents
  • If sending .docx, embed fonts: File → Options → Save → "Embed fonts in the file"
  • If sending .txt, explicitly state it's UTF-8 encoded
When creating databases:
  • Use utf8mb4 charset and utf8mb4_unicode_ci collation (MySQL/MariaDB)
  • Use UTF-8 by default (PostgreSQL does this automatically)
For typing Hindi text that's guaranteed to be properly encoded, browser-based tools like TranslitHub output standard UTF-8 Unicode text that works everywhere — no font installation or encoding configuration needed.

Still Broken? Diagnostic Steps

If none of the above fixes work:

  1. Test with a known-good Hindi page: Visit any major Hindi news site (Dainik Jagran, Amar Ujala). If Hindi appears there but not in your document, the issue is with the specific file, not your system.
  1. Check the raw bytes: Open the file in a hex editor. UTF-8 Hindi text starts with bytes in the range E0 A4 xx to E0 A5 xx. If you see bytes in the range 20-7E, it's ASCII/legacy font text.
  1. Try a different application: If Hindi doesn't show in Word but shows in Chrome, the issue is Word's font/encoding settings, not your system.
  1. Check for BOM (Byte Order Mark): Some UTF-8 files start with the bytes EF BB BF. Some applications choke on this. Try saving without BOM.
Hindi text rendering has gotten dramatically better over the past decade. If you're running a modern OS and browser, the empty-boxes problem is almost always solved by simply installing the Hindi language pack or a comprehensive Devanagari font.
Ad 728x90