Hindi Text Showing Boxes or Question Marks: Why and How to Fix

You open a document, a webpage, or a WhatsApp message, and where Hindi should be there are empty boxes, question marks, or a run of symbols that means nothing. The good news is that most of the time your text is completely intact and only the display is failing. The exact symbol you see tells you which of four different problems you have, and each one has a different fix. Start by identifying the symbol.

Read the symbol first

People treat every Hindi display failure as the same problem. They are not the same, and applying the wrong fix wastes time. Match what you see against this list before doing anything else.

What you seeWhat it meansIs the text recoverable?
Empty rectangles: □□□No font on this device covers DevanagariYes, fully
Rectangles with tiny hex digits insideSame missing font, but the app is showing you the character codeYes, fully
Question marks: ???The characters were destroyed when the file was saved or sentOften no
Readable English letters: HkkjrLegacy font text, displayed without the legacy fontYes, by converting

The distinction between boxes and question marks is the one that matters most. Boxes are a rendering problem and your data is safe. Question marks usually mean the data itself is gone and no font install will bring it back.

Empty boxes: the font is missing

Every character in Unicode has a permanent number. Hindi lives in the Devanagari block, U+0900 to U+097F. When an application receives one of those characters it asks the operating system for a font that can draw it. If no installed font contains that glyph, the application draws a placeholder rectangle instead. Typographers call this rectangle "tofu", which is where Google's Noto font family gets its name: "no more tofu".

Nothing is wrong with the text. Copy it, send it to someone whose device has a Devanagari font, and it will display perfectly for them. The fix is to install a font that covers the block.

Windows

Mangal ships with every Windows installation and covers Devanagari. Nirmala UI is the newer system font for Indic scripts and is present on Windows 8 and later. If Hindi is showing boxes on Windows, the usual cause is that Indic language support was never enabled rather than the fonts being absent. Open Settings, go to Time & Language, then Language, and add Hindi. Windows downloads the supporting fonts as part of that step.

macOS

Devanagari MT and Kohinoor Devanagari both ship with macOS. Boxes on a Mac are unusual and normally point to a specific application overriding the system font stack rather than a genuinely missing font.

Linux

Minimal distributions often omit Indic fonts. Install the Noto Devanagari package through your package manager. On Debian and Ubuntu the package is fonts-noto-devanagari.

Android and iPhone

Both ship with Devanagari coverage by default and rarely show boxes. When a phone does show them, the text is almost always legacy font content rather than Unicode, which is a different problem covered further down.

Question marks: the characters are gone

A row of question marks is a different failure and a more serious one. It means the text passed through a step that could not represent Devanagari and substituted a placeholder for every character it could not encode. Once that substitution is written to disk or sent over the wire, the original characters are not recoverable from that copy. There is no font that fixes it, because there is nothing left to draw.

Common ways this happens:

The recovery path is to go back to the original source, whatever produced the text before the lossy save, and re-export it as UTF-8. If no earlier copy exists, the text has to be retyped. Going forward, saving everything as UTF-8 prevents a repeat.

Readable English letters: legacy font text

If instead of boxes you see something like Hkkjr ljdkj, nothing is broken at all. That is KrutiDev, Chanakya, DevLys, or a similar legacy font, and it is behaving exactly as designed.

These fonts predate Unicode. Rather than using the Devanagari code points, they reuse ordinary Latin letter codes and swap the shapes: the file stores the letter H, and the font draws भ on top of it. If the reader has the font installed, Hindi appears. If not, the underlying Latin letters show through and the result is unreadable.

You can install the matching font, but that only fixes the text on your own machine and every recipient will hit the same wall. The permanent fix is to convert the text to Unicode, which stores real Devanagari characters that any modern device can render without installing anything. Copy the affected text and paste it into the converter to get a version that works everywhere, including WhatsApp, email, and web forms.

This case has its own detailed walkthrough on the page about KrutiDev showing English letters instead of Hindi, which covers how to identify which legacy font you are dealing with.

Edge cases

Boxes in one application only

If Hindi renders correctly in the browser but shows boxes in a specific program, that program is using its own font list rather than the system default. The fix is inside that application: change its display or document font to one with Devanagari coverage. Older desktop software with hardcoded font settings is the usual offender.

Correct on screen, boxes when printed

Screen rendering and print rendering can use different font paths. Some printer drivers substitute fonts, and a substituted font may lack Devanagari. Exporting to PDF first and printing that PDF normally sidesteps the substitution, because the PDF embeds the font.

Boxes after copying from a PDF

PDFs store glyph positions rather than clean text, so copying out of one can produce boxes, question marks, or scrambled output depending on how the PDF was built. That failure has its own causes and its own fix, covered on the page about copy-pasting Hindi from a PDF giving garbled text.

Some characters render, others box out

Partial rendering means the font covers part of the Devanagari block but not all of it. Conjunct forms and less common characters are usually the first to fail. Switching to a more complete font such as Noto Sans Devanagari resolves it.

Boxes only in email

Check that the message is being sent as UTF-8 and not as plain ASCII. Some clients downgrade the encoding when the message body looks mostly Latin, which is exactly what legacy font text looks like to an automated check.

A quick way to tell which problem you have

Paste the affected text into a plain text editor and save it as UTF-8, then reopen it.

That three-way check takes under a minute and points at the right fix without guesswork.

Other display and conversion problems are indexed in the Hindi font resources section, grouped by the symptom you started with.