What Google actually reads on a Nepali page
Google works out what language your page is in by reading the words a visitor can see. Not the code. For how Nepali fits into a wider campaign, the complete SEO in Nepal guide is the starting point. Google’s own documentation says this twice, in two separate places, and it says it plainly.
From the guidance on multilingual sites: “Google uses the visible content of your page to determine its language. We don’t use any code-level language information such as lang attributes, or the URL.” From the guidance on localised versions: “Google doesn’t use hreflang or the HTML lang attribute to detect the language of a page; instead, we use algorithms to determine the language.”
Both sentences are quoted verbatim from Managing multi-regional and multilingual sites and Tell Google about localized versions of your page.
This reorders everything else. Most Nepali-language SEO advice I have read treats hreflang as the thing that tells Google a page is Nepali. It is not. hreflang chooses between versions you already have. It never labels the language of a page that Google has already read.
So the first question is not “which tags do I add”. It is: when Googlebot fetches this page, does it receive Nepali words? On a surprising number of Nepali sites, the answer is no — and the tags cannot rescue that.
The Preeti trap: legacy-font Nepali is invisible, not just unranked
Preeti is not a Nepali font in the way people assume. It is not a Unicode font at all. It maps Devanagari shapes onto ordinary ASCII code points, so the bytes stored in your page are Roman letters and punctuation. The font simply draws Nepali-looking glyphs on top of them.
The npTTF2UTF converter documents the mapping in both directions. Converting the Unicode name “सबिन आचार्य” into Preeti produces the stored string ;lag cfrf/\o. Going the other way, typing asdfghjk in Preeti renders as “बकमानजवप”.
Now chain that with the rule from the section above. Google reads visible content. The visible content of a Preeti heading, as far as any crawler is concerned, is ;lag cfrf/\o. A Preeti page is therefore not badly optimised Nepali. It is not Nepali at all. There is no Devanagari string on it for a Devanagari query to match.
The legacy families worth checking for are the ones that converter supports: Preeti, Sagarmatha, Kantipur, FONTASY_HIMALI_TT and PCS NEPALI.
Three checks that take about a minute
1. The paste test. Select the Nepali text on your page, copy it, and paste it into a plain text field — your browser’s address bar will do. Unicode stays Nepali. Preeti collapses into Roman gibberish of the ;lag cfrf/\o variety.
2. The font test. Right-click the Nepali text, choose Inspect, and look at the computed font-family. Any of the five families named above means legacy encoding.
3. The index test. Copy one exact Nepali headline from your site and search Google for it in quotes, with site:yourdomain.com after it. If Google holds that string, the page comes back.
Treat the third one carefully. A blank result can also mean the page simply is not indexed yet, so read it alongside the paste test rather than on its own. If check one fails, you have your answer already and check three adds nothing.
Three ways the same query gets typed, and which one your page holds
A Nepali searcher can reach the same idea three ways: in English, in romanised Nepali typed on a Roman keyboard, or in Devanagari. Those are three different strings, and a page can only be matched against a string it actually contains.
That is where encoding stops being a technicality. A Unicode Devanagari page holds नेपालमा एसईओ सेवा and can be matched against it. A romanised page holds Roman letters, so it can match romanised phrasing and cannot match the Devanagari spelling of the same words. A Preeti page holds neither — it holds ASCII that means nothing to either query.
So the script you publish in is a targeting decision, not a styling one, and it is made for you the moment someone types into the wrong editor.
Which of the three layers is worth targeting is a separate question, and the reported search volumes behave strangely enough that I gave them their own page: see keyword research for Nepali websites for the volume figures, what the tools do and do not cover for Nepal, and how to size the romanised layer.
One constraint rules out the obvious shortcut: you cannot cover all three layers by stacking them onto one page. The next section explains why.
What ranks on a Devanagari SERP in Nepal today
Rather than theorise, I pulled two Devanagari results pages for Nepal, in Nepali, on 12 August 2026.
नेपालमा एसईओ सेवा (SEO service in Nepal). An AI Overview sits above nine organic results: ictsamachar.com, techpana.com, distrya.com, nepalkhabar.com, shilapatra.com, a Facebook post, nepalipaisa.com, nepalclicks.com and mediakurakani.com. Eight are news or social. The ninth, distrya.com, ranks a blog post under a /ne/ path whose title is in English, not Nepali. No SEO agency or consultant page appears in the nine, mine included. That is not proof that no Nepali provider has ever published in Devanagari — only that on this query, on this day, none of them ranked.
काठमाडौंमा घर भाडामा (house on rent in Kathmandu). Of the nine organic results, four are Facebook — one group, one group post and two page videos — at organic positions 2, 4, 5 and 7. The rest are news articles. The one property business in the set, nepalhomes.com, ranks with a news post from 2021 rather than a listings page.
Read together the picture is consistent: in Devanagari commercial search here, the top of the page is usually held not by a rival business with a strong site but by Facebook and the news industry, on queries where hardly anyone has published an ordinary indexable Nepali page. You are filling a gap rather than displacing optimised competitors — and since these are low-volume queries, a Devanagari page is a long-term position, not a traffic switch you flip this quarter.
Setting up a Nepali and English site Google can read
Four rules, all from Google Search Central rather than received wisdom.
Give each language its own URL. Google recommends different URLs per language version rather than cookies or browser settings. The reason is in the same document: “the Googlebot crawler usually originates from the USA. In addition, the crawler sends HTTP requests without setting Accept-Language in the request header.” A site that swaps language by IP address or browser header will show Googlebot one version forever, and the other may never be crawled.
One language per page. Google asks you to help it “by using a single language for content and navigation on each page, and by avoiding side-by-side translations”. The stacked bilingual page — a Nepali paragraph, then the same paragraph in English — is a layout I run into constantly on Nepali business sites, and it is precisely the pattern Google names. Split it into two pages.
Use valid codes. hreflang takes an ISO 639-1 language code plus an optional ISO 3166-1 Alpha 2 region code. Nepali is ne and Nepal is NP, so both ne and ne-NP are valid. Use plain ne unless you genuinely serve a different Nepali page to Nepali speakers outside Nepal, which few local businesses do.
Make the links bidirectional. Google is blunt about this: “If two pages don’t both point to each other, the tags will be ignored.” Every version must list itself and every other version. Add x-default if you run a language chooser, and do not auto-redirect visitors based on a guess about their language.
If crawling and indexing generally are shaky, fix those first — my technical SEO checklist covers the ordinary faults that stop any page ranking, in any script.
The lang attribute: what nine Nepali sites actually ship
I checked nine well-known Nepali homepages on 12 August 2026, counting Devanagari characters in the visible text after stripping scripts and styles, against the declared lang attribute.
| Site | Declared lang | Devanagari characters |
|---|---|---|
| nagariknews.nagariknetwork.com | ne | 19,077 |
| ekantipur.com | ne | 17,088 |
| nepalpolice.gov.np | en | 15,836 |
| onlinekhabar.com | en-US | 14,214 |
| ratopati.com | en | 13,812 |
| setopati.com | en-US | 10,657 |
| dcnepal.com | en-US | 9,353 |
| nepalkhabar.com | en | 6,597 |
| himalkhabar.com | none set | 5,318 |
Seven of the nine publish thousands of Devanagari characters while declaring English or declaring nothing. Only ekantipur.com and nagariknews.nagariknetwork.com get it right.
Here is the honest part, and it is the reason I put this section last. Per Google’s own documentation, quoted at the top of this page, none of this affects how Google detects the language. Correcting lang="en-US" to lang="ne" will not move a ranking.
It still matters, just not as SEO. It decides whether a screen reader pronounces the page in Nepali or mangles it in an English voice, whether Chrome offers a pointless translate prompt to Nepali readers, and which fallback font the browser reaches for. It is a one-line accessibility fix, and worth doing as one. It is not a ranking lever, and anyone who sells it to you as one is describing something Google’s own documentation contradicts.
Frequently asked questions
Where I would start
Run the paste test on your Nepali pages first. Encoding is binary — either Google receives Nepali words or it does not — and nothing else on this list matters until that passes.
Then split any stacked bilingual pages into separate URLs, one language each, and wire up hreflang with return links in both directions. Fix the lang attribute while you are in there, for the accessibility reasons rather than the imaginary ranking ones.
Only then is it worth arguing about which Devanagari phrases to target.
If you want the encoding, hreflang and crawl side handled properly, that is what my technical SEO service covers.