Site Map

International Search Engine Marketing (SEO) Firm - McAnerin International Inc

Meta Tag ISO Language and Country Codes

This page lists and discusses Language Codes and Attributes. Page two of this series lists and discusses Country Codes and ccTLD issues. Page three discusses gTLD (generic Top Level Domain) issues.

The lang  attribute is used to define the base language to be used for displaying text and characters on a Web site. This allows an internationalization of HTML for a very large number of languages. If the metatag generator does not have the one you want, feel free to use one of these by typing it into the code (see below).

The languages are designated by a two letter code, such as "en" for English or "es" for Spanish. One or more hyphenated values can be tacked on to the initial two letter code to specify regional or ethnic variations, such as "en-us" for U.S. English. You can get a list of Country Codes here

Note that html texts that contain foreign languages that use special characters will have to be saved as a Unicode file, rather than as an ANSI file, in order for the characters to be properly displayed. Please be aware that some browsers may not be capable of correctly displaying a Unicode file.

HTML tags are always considered English. Therefore, the DocType declaration at the top of web pages will always say EN, even though the rest of the page is in a different language:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

Don't get carried away and change this. It has to be EN for the DOCTYPE.

Got that? Good. Now, on to the more interesting part of the story...



<meta http-equiv="Content-Language" content="en">

Defines the encoding of the whole page as English as far as the language set goes - in short, it tells the user agent (browser) to expect English language characters. It's purely a technical declaration. There can be only one language declared in this tag.

Other Tags

The lang attribute applies to all HTML tags except applet, base, basefront, br, frame, frameset, iframe, param and  script.

I find it most useful in the HTML, DIV and SPAN tags.



<html lang="en">



<html xmlns="" xml:lang="en" />

Tells the visitor/search engine what audience the text is intended for.

It's perfectly possible for the meta http-equiv and html lang tags to be out of sync - for example, I declare the technical language of my Canadian websites to be English, but will have French and English on the same page at times, both with properly declared language tags (the language can be declared in spans, divs and other tags, not just the HTML one.

From a search engine standpoint, the most useful declaration of a language is via the HTML, Div, or Span language declaration, which describes the intended audience, rather than the meta-equiv, which only addresses the software that renders the language (i.e. the browser).

Naturally, both should exist and be proper, but the SE would only look at the language declaration of the content intended for the visitor, not the technical declaration of the document intended for the browser, as far as returning results to a searcher is concerned.


Multiple Languages

A document can declare more than one language or language group for a visitor, but only one for a user-agent (browser).

This means that the meta http-equiv="Content-Language" tag can only reference one language - i.e. "en"

The Lang= or xml:lang= tags can reference several languages - i.e. "en, zh, pt, fr" or even local variants: "en-us" (US English).

One method of having more than one language on a page is by using the DIV or SPAN language attributes:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
<DIV Lang="en">
Let us drink a carbonated beverage and sit on this chesterfield, ok?
<DIV Lang="en-us">
Let's drink a soda on the sofa, hey?
<DIV Lang="en-ca">
Let's down a pop on the couch, eh?
<DIV Lang="fr">
Buvons une boisson carbonatée et reposons-nous sur ce Chesterfield.

This lets you tell the browser what to expect, but lets a search engine or screen reader how to deal with certain blocks of text.


Language and country codes are NOT case sensitive.


ISO 639: Two-letter Language Codes

Sorted by Language


Sorted by Language Code

Abkhazian AB   AA Afar
Afar AA   AB Abkhazian
Afrikaans AF   AF Afrikaans
Albanian SQ   AM Amharic
Amharic AM   AR Arabic
Arabic AR   AS Assamese
Armenian HY   AY Aymara
Assamese AS   AZ Azerbaijani
Aymara AY   BA Bashkir
Azerbaijani AZ   BE Byelorussian
Bashkir BA   BG Bulgarian
Basque EU   BH Bihari
Bengali, Bangla BN   BI Bislama
Bhutani DZ   BN Bengali, Bangla
Bihari BH   BO Tibetan
Bislama BI   BR Breton
Breton BR   CA Catalan
Bulgarian BG   CO Corsican
Burmese MY   CS Czech
Byelorussian BE   CY Welsh
Cambodian KM   DA Danish
Catalan CA   DE German
Chinese ZH   DZ Bhutani
Corsican CO   EL Greek
Croatian HR   EN English, American
Czech CS   EO Esperanto
Danish DA   ES Spanish
Dutch NL   ET Estonian
English, American EN   EU Basque
Esperanto EO   FA Persian
Estonian ET   FI Finnish
Faeroese FO   FJ Fiji
Fiji FJ   FO Faeroese
Finnish FI   FR French
French FR   FY Frisian
Frisian FY   GA Irish
Gaelic (Scots Gaelic) GD   GD Gaelic ("Scots Gaelic")
Galician GL   GL Galician
Georgian KA   GN Guarani
German DE   GU Gujarati
Greek EL   HA Hausa
Greenlandic KL   HI Hindi
Guarani GN   HR Croatian
Gujarati GU   HU Hungarian
Hausa HA   HY Armenian
Hebrew IW   IA Interlingua
Hindi HI   IE Interlingue
Hungarian HU   IK Inupiak
Icelandic IS   IN Indonesian
Indonesian IN   IS Icelandic
Interlingua IA   IT Italian
Interlingue IE   IW Hebrew
Inupiak IK   JA Japanese
Irish GA   JI Yiddish
Italian IT   JW Javanese
Japanese JA   KA Georgian
Javanese JW   KK Kazakh
Kannada KN   KL Greenlandic
Kashmiri KS   KM Cambodian
Kazakh KK   KN Kannada
Kinyarwanda RW   KO Korean
Kirghiz KY   KS Kashmiri
Kirundi RN   KU Kurdish
Korean KO   KY Kirghiz
Kurdish KU   LA Latin
Laothian LO   LN Lingala
Latin LA   LO Laothian
Latvian, Lettish LV   LT Lithuanian
Lingala LN   LV Latvian, Lettish
Lithuanian LT   MG Malagasy
Macedonian MK   MI Maori
Malagasy MG   MK Macedonian
Malay MS   ML Malayalam
Malayalam ML   MN Mongolian
Maltese MT   MO Moldavian
Maori MI   MR Marathi
Marathi MR   MS Malay
Moldavian MO   MT Maltese
Mongolian MN   MY Burmese
Nauru NA   NA Nauru
Nepali NE   NE Nepali
Norwegian NO   NL Dutch
Occitan OC   NO Norwegian
Oriya OR   OC Occitan
Oromo, Afan OM   OM Oromo, Afan
Pashto, Pushto PS   OR Oriya
Persian FA   PA Punjabi
Polish PL   PL Polish
Portuguese PT   PS Pashto, Pushto
Punjabi PA   PT Portuguese
Quechua QU   QU Quechua
Rhaeto-Romance RM   RM Rhaeto-Romance
Romanian RO   RN Kirundi
Russian RU   RO Romanian
Samoan SM   RU Russian
Sangro SG   RW Kinyarwanda
Sanskrit SA   SA Sanskrit
Serbian SR   SD Sindhi
Serbo-Croatian SH   SG Sangro
Sesotho ST   SH Serbo-Croatian
Setswana TN   SI Singhalese
Shona SN   SK Slovak
Sindhi SD   SL Slovenian
Singhalese SI   SM Samoan
Siswati SS   SN Shona
Slovak SK   SO Somali
Slovenian SL   SQ Albanian
Somali SO   SR Serbian
Spanish ES   SS Siswati
Sudanese SU   ST Sesotho
Swahili SW   SU Sudanese
Swedish SV   SV Swedish
Tagalog TL   SW Swahili
Tajik TG   TA Tamil
Tamil TA   TE Tegulu
Tatar TT   TG Tajik
Tegulu TE   TH Thai
Thai TH   TI Tigrinya
Tibetan BO   TK Turkmen
Tigrinya TI   TL Tagalog
Tonga TO   TN Setswana
Tsonga TS   TO Tonga
Turkish TR   TR Turkish
Turkmen TK   TS Tsonga
Twi TW   TT Tatar
Ukrainian UK   TW Twi
Urdu UR   UK Ukrainian
Uzbek UZ   UR Urdu
Vietnamese VI   UZ Uzbek
Volapuk VO   VI Vietnamese
Welsh CY   VO Volapuk
Wolof WO   WO Wolof
Xhosa XH   XH Xhosa
Yiddish JI   YO Yoruba
Yoruba YO   ZH Chinese
Zulu ZU   ZU Zulu


Unless otherwise noted, all articles written by Ian McAnerin, BASc, LLB. Copyright © 2002-2006 All Rights Reserved. Permission must be specifically granted in writing for use or reprinting anywhere but on this site, but we do allow it and don't charge for it, other than a backlink. Contact Us for more information.

Valid XHTML 1.0   W3C CSS Verified!   Rated with the ICRA