Sehat.

Why one Indian dish has fifteen spellings

7 min read

The short answer

Indian dish names are transliterated from scripts that were never standardised into Roman letters, so one dish ends up with many valid spellings. Gajar halua, gajar halwa and gajar ka halwa are the same sweet. Food search only works if it stores those variants as aliases and matches them phonetically.

A steel katori of gajar halwa topped with slivered almonds photographed from above on a cream linen surface

Key takeaways

  • Indian dish names are transliterated from scripts with no single Roman standard, so a dish can carry a dozen valid spellings and none of them is wrong.
  • Gajar halua, gajar halwa, gajar ka halwa and carrot halwa all name one bowl of carrots cooked down in milk and ghee.
  • Four axes create most variants. Vowel length, aspirated consonants, doubled letters, and where the words break.
  • Regional naming goes further than spelling. Curd rice is thayir sadam in Tamil Nadu, mosaranna in Karnataka and daddojanam in Andhra.
  • Spelling variants should collapse into one entry. Dish variants like Hyderabadi and Kolkata biryani should not.
  • Sehat holds over 10,000 foods and spellings, built from 1,820 dishes plus 9,474 alias spellings, so the dish resolves however you type it.

Type gajar halua into most food apps and you get nothing. Type gajar ka halwa and you get a result. Same dish, same person, same carrots.

The word was never spelled wrong. It was spelled the way somebody says it, in an alphabet that was never designed to carry it.

This is the most common reason Indian food tracking fails at the very first step, and it has nothing to do with nutrition.

There is no correct English spelling of an Indian dish name

Indian dish names are not English words. They come from Devanagari, Bengali, Tamil, Telugu, Kannada, Malayalam, Gurmukhi, Gujarati and Urdu script, and moving them into Roman letters is transliteration, not translation.

Transliteration has no single authority. Formal schemes exist, but nobody orders dinner in academic notation. What people actually do is write the sound down the way their ear, their region and their phone keyboard suggest.

So हलवा arrives in Roman letters as halwa, halua or halva depending on who is typing. Each is a legitimate record of the same sound. None of them is the official version, because no official version exists.

Gajar ka halwa, worked through

Take one dish and watch it fragment.

The Hindi is गाजर का हलवा. In Roman letters people write:

  • gajar halwa
  • gajar ka halwa
  • gajar halua
  • gajar halva
  • gaajar halwa
  • carrot halwa

Six already, before regional names and before anyone mistypes. And the variation is not sloppiness. Halua is how a large part of eastern India says it. Halva is closer to how the word travelled through Persian. Gaajar, with the long vowel, is a more faithful record of the sound than gajar is. Carrot halwa is what an English-medium menu prints in December.

Somebody searching any of those six wants the same bowl of gajar halwa.

Four things fragment a spelling

Almost every variant traces back to one of four causes.

Vowel length. Hindi distinguishes short and long vowels that Roman letters do not mark. Hence gajar and gaajar, dal and daal, paneer and panir, roti and rotee.

Aspirated consonants. Devanagari has separate letters for ch and chh, k and kh, t and th. English has no clean way to write the difference, so people improvise. Chole, chhole and cholay are all the same chickpeas. Kheer and khir. Bhindi and bindi.

Doubled letters. Nothing in the source script tells you whether to double a consonant in Roman. Chana and channa. Idli and iddli. Jalebi and jalebee.

Word joins. Indian dish names are phrases, and a phrase can be written open, closed or hyphenated. Gajar ka halwa, gajar halwa, gajarhalwa. Aloo gobi and aloogobi. Pav bhaji and pavbhaji.

Stack four independent axes of variation onto a three word dish name and fifteen spellings stops being an exaggeration. It is arithmetic.

The same dish has completely different names in different states

Spelling is only half the problem. The other half is that India often has entirely different words for the same food.

One dish Also called
Chana masala Chhole, chole, cholay, kabuli chana
Curd rice Thayir sadam, mosaranna, daddojanam, bagala bath
Dahi bhalla Dahi vada, thayir vadai, doi bora
Chapati Roti, phulka, rotli, poli
Coconut chutney Thengai chutney, nariyal chutney
Puri Poori, and in Bengal luchi, made with maida rather than atta

None of these are misspellings. They are what the dish is called where the person lives. Someone in Chennai typing thayir sadam and someone in Delhi typing curd rice should both land on curd rice, and neither should have to translate themselves first.

Sometimes a different name really is a different dish

This is where a naive alias list starts doing damage, and where the real work sits.

Roti, chapati, phulka and rotli overlap heavily. In most contexts they are the same flatbread and should resolve to one entry. But a phulka is specifically puffed over an open flame with no fat, a Gujarati rotli is rolled much thinner, and a tandoori roti is bigger, thicker and cooked in a tandoor, which makes it a genuinely different thing to log. Treating all four as identical is as wrong as treating them as unrelated.

Biryani has the same shape of problem. Biryani, biriyani, biriani and briyani are spellings of one word. But Hyderabadi, Lucknowi, Kolkata, Thalassery and Ambur biryani are different dishes that share a name, and a chicken biryani out of a Hyderabadi dum pot is not the same plate as one from a Kolkata kitchen with a potato sitting in it.

The working rule: spelling variants collapse, dish variants do not. Getting that boundary right, thousands of times, is most of the job.

What a search box actually has to do

Resolving Indian food search takes three layers, and skipping any one of them breaks it.

  1. An alias table. Every known spelling and regional name stored against the canonical dish, so an exact match on any of them is instant. This layer does most of the work, and it can only be built by hand and by observation. No algorithm knows that doi bora means dahi bhalla.
  2. Phonetic matching. For spellings nobody has recorded yet. If two strings reduce to the same consonant skeleton, they are probably the same dish. This catches halua against halwa without anybody having written that pair down.
  3. Fuzzy matching. Token-sorted similarity for word order and typos, so butter paneer masala finds paneer butter masala, and chiken finds chicken.

The order matters as much as the layers. Exact alias first, then token subset matching, then fuzzy scoring above a strict threshold. Run fuzzy matching too early or too loosely and someone typing chicken kofta gets chicken korma, which is worse than returning nothing at all.

Why most food databases fail this

Most calorie databases were built in English, for English food, and had Indian dishes added later.

The Indian entries usually arrive from one of two places. Either a generic nutrition table carrying one canonical name and no variants at all, or user submissions, where the same dish exists forty times under forty spellings with forty different numbers, none of them connected to each other.

Both fail identically from where you are sitting. You type the dish the way you say it, get nothing back, and either give up or log something approximate that is not what you ate. Autocorrect makes it worse, cheerfully turning bhindi into binding on the way. Two or three rounds of that in a week and the habit quietly dies, for a reason that has nothing to do with your discipline.

What complete actually means here

This is the part of Sehat that took the longest and shows the least.

Sehat holds over 10,000 foods and spellings. Underneath that sit 1,820 dishes plus 9,474 alias spellings, which means the average dish carries more than five recorded names before phonetic or fuzzy matching even runs. Regional names, transliteration variants, common typos and English menu names all point at one canonical entry with one set of portions.

The number is not the point. The point is that you should be able to type a dish the way it sounds in your house and find it on the first try, whether that is chana masala, chhole or chole, and then get on with your day. The same logic runs through how regional dishes are held at all, which is covered in the piece on how Indian food changes by region.

Spell it however you say it

Nobody should have to learn the correct English spelling of a word from their own language in order to log their own dinner.

You say halua. Your neighbour says halwa. The menu says carrot halwa. It is the same carrots, the same ghee, the same bowl.

The search box should be the one doing the work.

Calorie figures on this page are typical ranges, not lab values. Indian recipes vary enormously between kitchens, so a number that is right for one house is wrong for the next. Sehat keeps a confidence level and a source note on every entry rather than pretending a single figure is the truth. This is general information, not medical advice.

Common questions

Is it gajar halwa or gajar halua?

Both are correct. The Hindi is गाजर का हलवा, and there is no official way to write that in Roman letters. Halwa is the most common spelling across north India, halua is widespread in the east, and halva reflects the word's route through Persian. All three name the same dish.

Why can I never find my dish in a calorie app?

Usually because the database stores one spelling of the name and you typed another. Indian dish names have many valid transliterations and many regional names. Most food databases were built in English with Indian dishes bolted on afterwards, and without an alias layer, typing a dish the way you say it returns nothing.

Are chole and chana masala the same thing?

They are the same chickpea curry in most kitchens, and the words get used interchangeably across north India. Chole, chhole and cholay are spellings of one word, while kabuli chana names the chickpea itself. Punjabi chole is usually darker and spicier, so recipes differ while the dish stays one dish.

Is roti the same as chapati and phulka?

Mostly. All three are unleavened whole wheat flatbreads and everyday speech treats them as one thing. A phulka is specifically puffed over an open flame with no fat, and a Gujarati rotli is rolled thinner. Tandoori roti is genuinely different. It is larger, thicker and cooked in a tandoor.

How does food search handle misspelled Indian dish names?

Through three layers. A stored alias table maps every known spelling and regional name to one canonical dish. Phonetic matching catches unrecorded variants that sound the same when spoken. Fuzzy matching handles typos and word order. The alias table does most of the work, because no algorithm knows that doi bora means dahi bhalla.

Why do the same dish names change from state to state?

Because India has many languages, and each names its own food. Curd rice, thayir sadam, mosaranna and daddojanam describe one dish in four languages. Dahi bhalla in Delhi is thayir vadai in Tamil Nadu and doi bora in Bengal. These are not variants of one word, they are separate words for one plate.

Dishes mentioned

In the app

All of this, without the arithmetic.

A search in the Sehat app returning the correct food rather than an unrelated dish
Type it how you say it
Searching for dal in the Sehat app, showing matching Indian dishes with photos
Search that knows dal from dal makhani
Brand search results in Sehat showing packaged items with verified from brand badges
Packaged foods with brand-published values

The world's most complete Indian calorie counter.

Over 10,000 foods and spellings.

Log dal, roti and biryani by voice, in Hinglish, in the portions your kitchen actually uses. An AI coach reads your day and guides you. No coaches. No calls. No spam.

Download free on the App Store

Android is on the way.