Skip to main content
India6 min readNovember 2026

How do I animate Hindi, Tamil and other Indian language text in UI without breaking it?

Short answer

Never split Indian-script text into single characters for letter-by-letter animation: Devanagari, Tamil, Bengali and other scripts combine several Unicode characters into one visible cluster, and splitting them breaks the shapes. Split by grapheme cluster with Intl.Segmenter, or animate whole words or lines. Also allow more line height, test with real fonts, and check that your animation tool shapes complex scripts correctly.

Core Takeaway

  • Indian scripts use conjuncts and vowel signs that join characters
  • Splitting a string with split('') breaks those shapes
  • Use Intl.Segmenter with granularity "grapheme" or animate by word
  • Allow extra line height for marks above and below the line
  • Test in every animation tool and runtime you ship

Text effects that reveal one letter at a time are popular, and they look broken in Hindi or Tamil if done naively. The word "क्षत्रिय", for example, contains conjuncts that are several Unicode code points drawn as one shape. Split them and you get dotted circles and detached vowel signs.

The safe way in JavaScript

const seg = new Intl.Segmenter('hi', { granularity: 'grapheme' });
const clusters = [...seg.segment('नमस्ते दुनिया')].map(s => s.segment);
// animate each cluster, not each code point

Even grapheme clusters can split some conjuncts in a way that looks odd while animating, because the font shapes across them. The safest effect for Indian scripts is per word or per line, with fades and slides rather than per-letter scale.

Layout

Devanagari has a headline (shirorekha) and marks above and below it. Give more line height than for Latin text and do not clip text containers tightly, or marks get cut off during scale and slide animations.

Fonts and tools

Use well-supported fonts such as Noto Sans Devanagari or Mukta, and test them in the actual player. Vector animation tools convert text to shapes or shape it at runtime; check both paths. If text is converted to outlines in After Effects for Lottie, it cannot be translated later, so keep translatable text as live text in your app where possible.

Localisation

Hindi text is often longer or shorter than English. Design animations around flexible containers rather than fixed widths. ExodeUI has built-in UI layout, which helps here; we make ExodeUI.

Frequently asked questions

Why does my Hindi text show dotted circles when animated?

The text was split between a base letter and its vowel sign or virama. Split by grapheme cluster or by word.

Can Lottie show Hindi text?

Yes if the text is converted to shapes or the font is available to the player. Converted text cannot be translated at runtime.

Does Intl.Segmenter work in all browsers?

It is supported in current versions of the major browsers. Check your minimum supported versions.

Which fonts are safe for Devanagari UI?

Noto Sans Devanagari and Mukta are widely used and free. Test weights and rendering on Android.

Related Guides & Examples

Layout-aware motion

ExodeUI components size to their content, so translated text does not break your animation.

Open the editor
ExodeUI

EXODEUI DESKTOP

A little space for good ideas.

Choose your platform to get the official ExodeUI installer.

Looking for Intel Mac or other builds? Explore the web studio or check all download options.

Prefer the browser? Try for free in your browser →