lang属性は指定した要素内の内容を書き表している言語を示します。特にひとつの文書内に異種言語を混在させる場合に有効です。UA に設定されている初期値は "unknown"(不明)です。値には、日本語であれば "ja"、英語であれば "en"、中国語であれば "zh" のようにアルファベット2文字で言語の種類を表す言語コードを指定します。言語コードは半角アルファベットの大文字・小文字が区別されません(case-insensitive)。lang属性を指定することで、検索エンジンのロボットが情報を収集する際の各言語別の文書インデックス化の手助けや合成音声出力機器の読み上げ時に言語特有の発声規則を使えるようになることなどが期待されます。視覚環境の UA では見た目の変化はありません。
lang属性は XHTML1.1 の規格では廃止され、代わりに xml:lang属性を指定することになっています。XHTML1.0 では xml:lang属性を参照できない UA との後方互換のために HTML互換の lang属性と xml:lang属性の両方を同一の要素に同じ値で設定することが認められています。
lang属性は多言語が扱えるように対応する国際化を示す、i18n(internationalization)の一つです。i18n とは、"internationalization" の "i" と "n" の間に18文字挟まっていることが由来となっています。この i18n に含まれる属性は、すべて子孫要素へと継承されていきます。たとえば、ルート要素(最大の親要素)である html要素自体に、lang属性を指定することで、文書内の全ての要素に対して特定の言語が指定されたことになります。このとき、異なる言語を利用する要素に対しては、個別に lang属性を指定することで、ひとつの文書内に異種言語を混在させることができます。