Guide : The Meta Charset Tag
Ce que <meta charset="utf-8"> fait, pourquoi le HTML spec veut il dans le premier 1024 bytes, comment a incorrect encoding causes mojibake, et pourquoi c’est a rendu-correctness problème plutôt que a facteur de classement.
1 indice probant sur cette page
- Outil en ligne associéHTTP Header Checker
Le meta charset balise — <meta charset="utf-8"> — declares votre page's character encoding donc navigateurs et robots d’exploration turn raw bytes dans le correct characters. Le HTML spec exige il dans le premier 1024 bytes de le document, et meilleur pratique est le literal premier child de <head>. Obtenir il incorrect (manquant, late, or a mismatched encoding) et vous obtenir mojibake: accented letters, curly citations, em dashes, non-Latin scripts, et emoji rendre as garbage — qui peut corrupt qu’est-ce que affiché et indexé. Il n’est pas a direct facteur de classement; Google's seulement guidance est à 'utiliser Unicode/UTF-8 où possible.' UTF-8 est le near-universal, spec-requis encoding pour HTML5 aujourd’hui. A serveur-sent Contenu-Type header charset overrides le dans-page balise, qui est a courant source de migration bugs. Ce est un de le navigateur-facing balises dans le meta-balises cluster.
TL;DR — Le meta charset balise est un line de HTML —
Preuve à l’appui de cette affirmation For HTML documents, the charset declaration must identify UTF-8. Portée : Modern HTML conformance requirements. Niveau de confiance : élevé · Vérifié : WHATWG HTML: Character encoding declaration Preuve à l’appui de cette affirmation The complete character-encoding declaration must occur within the first 1024 bytes of the document. Portée : HTML serialization requirement intended to make encoding available early to parsers. Niveau de confiance : élevé · Vérifié : WHATWG HTML: Specifying the document's character encoding<meta charset="utf-8">— que indique le navigateur comment lire votre page’s texte. Obtenir il incorrect or laisser il out et special characters (accents, curly citations, emoji) peut turn dans garbled nonsense. Il ne fait pas aider vous classer, mais broken-looking texte est mauvais pour everyone, notamment Google. Put il premier dans votre<head>et utiliserutf-8. Fait.
Ce que the tag fait
Chaque page web est stored as raw bytes. Ceux bytes seulement become le letters vous lire une fois quelque chose decides qui character chaque byte (or groupe de bytes) represents. Le meta charset balise est comment votre page indique le navigateur — et moteur de recherche robots d’exploration — qui système à utiliser:
<meta charset="utf-8">utf-8 est le encoding vous vouloir dans presque chaque cas. Il peut represent essentially
chaque character et script dans utiliser aujourd’hui, plus emoji, tout dans un système.
Ce que goes incorrect sans it
Si vous ne pas declare an encoding, le navigateur a à guess. Quand il guesses incorrect,
vous obtenir mojibake — garbled texte où a curly apostrophe becomes quelque chose comme
’, or café montre up as café. Accented letters, em dashes, “smart” citations,
non-Latin scripts (Arabic, Cyrillic, Chinese, Japanese), et emoji sont le usual
casualties. Plain unaccented English peut regarder fine même quand le encoding est incorrect,
qui est exactly pourquoi le bug sneaks via.
Où to put it
Two simple rules:
- Put
<meta charset="utf-8">premier à l’intérieur votre<head>, avant the title or anything sinon. - Utiliser
utf-8, pas some older encoding.
c’est il. La plupart site templates et CMSs déjà faire ce pour vous — si le vôtre ne fait pas, ajouter il.
Fait it affecter SEO?
Pas directement. Le charset balise est pas a facteur de classement. Mais si a incorrect encoding garbles votre texte, que broken contenu est ce que utilisateurs voir et ce que Google peut fin up indexation et showing — donc c’est worth getting correct même though il ne va pas déplacer vous up le résultats par itself.
Vouloir le spec details — le “first 1024 bytes” règle, pourquoi le old syntax encore hangs autour, et comment a serveur header peut quietly override votre balise? Switch à le Avancé tab.
Vérifier le declared encoding depuis le command line
Remplacer l’URL, alors comparer la réponse header avec le balise near le commencer de
le HTML. A charset dans le HTTP Content-Type header takes precedence over le
dans-document declaration.
url="https://example.com/"
curl -sSI "$url" | grep -i '^content-type:'
curl -sS "$url" | head -c 1024 | grep -oiE '<meta[^>]+charset[^>]*>'Dans a navigateur console, ce rapports le parsed encoding, le declared balise, et
si que balise est le premier element dans <head>:
const charset = document.querySelector('meta[charset]');
console.table({
documentCharacterSet: document.characterSet,
declaredCharset: charset?.getAttribute('charset') ?? 'missing',
firstHeadElement: document.head.firstElementChild?.outerHTML ?? 'missing',
charsetIsFirst: document.head.firstElementChild === charset,
});Le console reflects le navigateur’s parsed document. Utiliser le curl vérifier as bien
quand vous devez prove ce que le serveur en réalité sent.
Inspect la réponse avant debugging the markup
Utiliser le HTTP Header Checker à inspect le actif
Content-Type réponse header. Si il declares a charset, comparer que valeur avec
<meta charset="utf-8">; a conflict peut expliquer mojibake même quand le HTML balise
semble correct.
Pour placement, utiliser View Source plutôt que seulement le Elements panel. Confirmer le
charset declaration est le premier child de <head> et apparaît dans le premier
1 024 bytes de le document.
«## Validate a charset fix » (Traduction) (Résumé en français de la section trente-deux, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«Test 1 — Header and tag agree » (Traduction) (Résumé en français de la section trente-trois, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Hypothesis: The live response and HTML both declare UTF-8.
» (Traduction) (Résumé en français de la section trente-quatre, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Method: Check the response Content-Type header, then inspect View Source for
<meta charset="utf-8">.
» (Traduction) (Résumé en français de la section trente-quatre, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Pass condition: No conflicting server-declared charset exists.
» (Traduction) (Résumé en français de la section trente-quatre, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Fail condition: The header declares another encoding or the tag is missing.
» (Traduction) (Résumé en français de la section trente-quatre, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Next action: Fix the server header first, then retest the live response.
» (Traduction) (Résumé en français de la section trente-quatre, sous-partie cinq : le texte source est conservé pour vérification lors de la relecture francophone.)
«Test 2 — The declaration is early enough » (Traduction) (Résumé en français de la section trente-cinq, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
- Hypothesis: Le navigateur voit le balise avant il a à guess an encoding.
- Méthode: Récupérer le premier 1 024 bytes et inspect le commencer de
<head>. - Réussir condition: Le complet charset balise est dans ceux bytes et est le
premier element dans
<head>. - Échouer condition: Comments, injected scripts, or autre markup push il plus tard.
- Suivant action: Déplacer le balise ahead de tout nonessential head markup.
Tester 3 — Réel characters render correctement
- Hypothesis: Le corriger eliminates mojibake dans utilisateur-visible et indexable texte.
- Méthode: Spot-vérifier an accented character, curly citation, em dash, non-Latin texte, et emoji on le actif page et dans View Source.
- Réussir condition: Chaque character renders as authored après a difficile refresh.
- Échouer condition: Replacement glyphs or garbled byte sequences remain.
- Suivant action: Roll back le encoding modifier si il introduced corruption, alors trace le source fichier, template, database, et réponse header séparément.
TL;DR —
Preuve à l’appui de cette affirmation For HTML documents, the charset declaration must identify UTF-8. Portée : Modern HTML conformance requirements. Niveau de confiance : élevé · Vérifié : WHATWG HTML: Character encoding declaration Preuve à l’appui de cette affirmation The complete character-encoding declaration must occur within the first 1024 bytes of the document. Portée : HTML serialization requirement intended to make encoding available early to parsers. Niveau de confiance : élevé · Vérifié : WHATWG HTML: Specifying the document's character encoding<meta charset="utf-8">declares le document’s character encoding. Le WHATWG HTML spec exige le declaration à être serialized complètement dans le premier 1024 bytes de le document, et pour HTML5 le valeur doit matchutf-8; meilleur pratique est placing il as le literal premier child de<head>. A manquant, late, or mismatched encoding produces mojibake — corrupted accented characters, curly citations, non-Latin scripts, et emoji — qui est a rendu et indexation-correctness problème, pas a classement signal. Google’s seulement public line est “utiliser Unicode/UTF-8 où possible.” A serveur-sentContent-Typecharset header overrides le dans-document balise, qui est a classic post-migration mojibake bug. Seulement un charset meta element est allowed per document, et il a aucun effect dans XML. A UTF-8 byte-order mark (BOM), si présent, wins over tout sinon; sinon le HTTP header wins over le dans-page balise — complet precedence order ci-dessous.
Ce que the tag is
«The charset declaration tells a parser which character encoding to use when it turns
the document’s bytes into text. The WHATWG HTML Living Standard puts it plainly: “The
charset attribute specifies the character encoding used by the document. This is a
character encoding declaration.” MDN’s framing is the practical version: “This
attribute declares the document’s character encoding.”
» (Traduction) (Résumé en français de la section quarante-trois, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
The modern syntax is the short formulaire:
<meta charset="utf-8">There’s aussi a legacy pre-HTML5 formulaire you’ll encore voir in older templates:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">Les deux declare le même chose. On a modern HTML5 document vous seulement besoin le court
<meta charset="utf-8"> — en utilisant les deux est redundant, pas harmful, et le spec permet
seulement un charset-declaring meta element per document anyway. (Le http-equiv formulaire est
meilleur thought de as legacy plutôt que quelque chose à ajouter fresh; si vous êtes auditing une page
que a il, il n’est pas broken, c’est simplement old.)
The spec requirements vous en réalité besoin to know
«UTF-8 is effectively mandatory for HTML5. MDN states it directly: the attribute’s
“value must be an ASCII case-insensitive match for the string utf-8, because UTF-8
is the only valid encoding for HTML5 documents.” The WHATWG spec goes further and
requires the document’s actual encoding to be UTF-8 regardless of what’s declared.
UTF-8 covers essentially every script plus emoji, which is why the ISO-8859-1 /
Windows-1252 / Shift-JIS era of per-region encodings is over for new work — those
survive only as legacy compatibility cases.
» (Traduction) (Résumé en français de la section cinquante, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
Il doit land dans le premier 1024 bytes de le document. Ce est a difficile spec
requirement, pas a soft suggestion. MDN: “<meta> elements qui declare a character
encoding doit être located entirely dans le premier 1024 bytes de le document.” Le
raison est mechanical — le parser sniffs le byte stream pour an encoding avant il
peut safely interpret le rest. Si votre declaration montre up aussi late, le parser peut
déjà ont committed à a guessed encoding (or ont à restart, qui coûts
performances). Remarque le framing carefully: c’est le premier 1024 bytes de le entier
document, pas simplement de <head>.
«Best practice beats the spec minimum: make it the first child of <head>. Don’t
settle for “somewhere in the first 1024 bytes” — put <meta charset="utf-8"> before
your <title>, <link>, <script>, <style>, and every other tag. This is the
placement modern tooling checks. There’s an open
Lighthouse issue (#10023)
proposing an audit that specifically checks whether <meta charset> equals
document.head.firstElementChild — i.e. flagging the tag when it isn’t the literal
first element in head, not merely when it’s missing. The direction of tooling is toward
checking placement, not just presence.
» (Traduction) (Résumé en français de la section cinquante-deux, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
Seulement un charset meta element per document, et le charset attribut a aucun
effect dans XML/XHTML documents (c’est permitted là seulement à ease migration à et
depuis XML). Worth a caveat si vous êtes fonctionnement avec XHTML-servi contenu or
RSS/Atom-adjacent templates.
BOM, HTTP header, meta balise — le precedence order
Navigateurs ne pas simplement lire le meta balise dans isolation; le encoding-sniffing algorithm vérifications three sources dans a fixed order, et le premier un que donne an réponse wins:
- A UTF-8 byte-order mark (BOM) — a quelques bytes à le very commencer de le fichier. Si le navigateur detects a BOM, que determines le encoding avec certainty; rien sinon est consulted.
- Le HTTP
Content-Typeheader’s charset, si le serveur sends un et il y a aucun BOM. Ce takes precedence over le dans-document meta declaration. - Le dans-document
<meta charset>(or legacyhttp-equiv) declaration, vérifié seulement si aucun de le ci-dessus supplied an encoding.
En pratique, BOMs sont rare on hand-authored HTML (ils sont plus courant as an artifact
de certain texte editors or fichier-export outils), donc le header-vs-balise conflict est le
un que bites la plupart souvent: une page que correctement declares <meta charset="utf-8">
peut encore rendre garbled si a CDN, reverse proxy, or misconfigured serveur sends a
différent charset dans le header. c’est a classic symptom correct après a serveur or CDN
migration — le HTML n’a pas modifier, mais le header a fait, et maintenant le header est
fighting le balise. Quand vous êtes debugging mojibake, vérifier pour a BOM et la réponse
header charset, pas simplement lune page source.
Est meta charset an SEO facteur de classement?
Aucun — et c’est worth étant blunt parce que fear-based audit-outil copy parfois implies sinon. Ce est a rendu- et indexation-correctness prerequisite, pas a classement signal.
Google’s guidance ici est thin et indirect comparé à le balises il discusses constantly (titre, meta description, robots, canonical). Là est aucun dedicated Google Recherche Central page à propos de character encoding — c’est un entry à l’intérieur le general meta balises Google prend en charge référence, sous “Content-Type and charset.” Google’s seulement on-record line est a recommendation, pas a classement claim: “Nous recommend en utilisant Unicode/UTF-8 où possible.” Aucun verbatim statement depuis Mueller, Illyes, Splitt, or Canel précisément naming “meta charset” or “mojibake” surfaces dans le trade press or Recherche Off le Record archives — charset est treated as basic web-standards hygiene, tableau stakes comme valide markup, plutôt que a topic warranting SEO commentary.
Bing a aucun distinct public position on le sur la page balise soit; son documentation
références UTF-8 seulement pour son propre API/feed formats (IndexNow clé fichiers, Webmaster API
requête headers), pas as guidance à propos de le HTML <meta charset> on votre pages. Since
Bingbot est a standard HTML parser, le practical implication est le même: suivre le
HTML spec’s UTF-8 / 1024-byte règle.
Donc où peut il hurt vous? Indirectly, et seulement quand le encoding est genuinely broken: garbled texte est a contenu-qualité et UX problème, il peut corrupt ce que apparaît dans extraits, et severely broken sortie peut regarder broken à Google’s indexation systèmes aussi. Le industry consensus, as Ahrefs’ propre meta-balises guide (par Joshua Hardwick) puts il, est que “unless votre page est severely broken as a résultat de charset problèmes (qui est unlikely), le impact est going à être quite minimal.” Corriger il parce que broken texte est mauvais, pas parce que vous expect a classement bump.
Comment vérifier and fix it
A rapide diagnostic chemin quand vous suspect an encoding problem:
- View source / DevTools. Confirmer
<meta charset="utf-8">exists et est le premier child de<head>. Dans DevTools, vérifier leContent-Typeréponse header pour a charset valeur — si il disagrees avec le balise, le header wins et est votre probable culprit. Règle out a BOM aussi: c’est rarer, mais si présent il beats les deux le header et le balise. - Validators et robots d’exploration flag il. Le W3C validator et règle-based checkers (e.g. Rocket Validator’s “charset après le premier 1024 bytes” règle) va appel out a late or manquant declaration. Site audits dans Ahrefs Site Audit et Screaming Frog surface charset problèmes à travers a entier site.
- Corriger le correct couche. Si le placement est incorrect, déplacer le balise à le top de head.
Si le encoding est incorrect (le bytes themselves ne sont pas UTF-8, or le header sends a
conflicting charset), fixing le meta balise alone ne va pas aider — vous ont à re-encode le
fichier as UTF-8 et/or correct le serveur’s
Content-Typeheader donc le header et balise agree.
Le corriger est presque toujours trivial une fois vous avez identified qui couche est à fault. Ce est a stable, long-settled partie de le HTML spec — il y a aucun recent deprecation or plateforme-behavior modifier à track; le seulement evolving nuance est tooling increasingly checking placement, pas simplement presence.
Où ce sits
Le charset balise est un de le navigateur-facing head elements — comme le viewport balise, c’est à propos de rendu, pas classement, qui puts il dans a différent bucket depuis le SEO-active balises dans le meta-balises cluster (le titre element, le meta description, et le robots family). c’est adjacent à le internationalization fonctionner Je spend a lot de temps on: encoding est le couche underneath hreflang et multi-script contenu — hreflang indique Google qui langue/region version à servir, mais si le encoding est incorrect le texte dans que version est garbled regardless. Pour le complet map de head elements grouped par le job ils faire, voir le meta balises hub.
AI summary
A condensed prendre on the Avancé version:
«- What it is: <meta charset="utf-8"> declares the document’s character encoding so
browsers and crawlers map raw bytes to the correct characters.
» (Traduction) (Résumé en français de la section soixante-treize, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Spec rules: the declaration must sit within the first 1024 bytes of the whole
document; HTML5 requires the value to be utf-8 (and the actual encoding to be
UTF-8). Best practice: the literal first child of <head>. Only one
charset meta element per document; it has no effect in XML/XHTML.
» (Traduction) (Résumé en français de la section soixante-treize, sous-partie deux : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Legacy syntax: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
is the older pre-HTML5 form — redundant on modern pages; use the short form. You don’t
need both.
» (Traduction) (Résumé en français de la section soixante-treize, sous-partie trois : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Precedence order: a UTF-8 BOM, if present, wins over everything; otherwise a
server-sent Content-Type charset overrides the in-page tag — a classic
post-migration mojibake bug. Debug the header (and check for a BOM), not just the
source.
» (Traduction) (Résumé en français de la section soixante-treize, sous-partie quatre : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Why it matters: a missing/late/mismatched encoding causes mojibake (garbled
accents, curly quotes, non-Latin scripts, emoji) — a rendering/indexing-correctness
issue, not a ranking factor.
» (Traduction) (Résumé en français de la section soixante-treize, sous-partie cinq : le texte source est conservé pour vérification lors de la relecture francophone.)
«- What Google says: only an indirect line — “We recommend using Unicode/UTF-8 where
possible.” No dedicated doc, no rep quote on charset/mojibake. Bing has no distinct
on-page position. Industry framing (Ahrefs): impact is minimal unless the page is
“severely broken.”
» (Traduction) (Résumé en français de la section soixante-treize, sous-partie six : le texte source est conservé pour vérification lors de la relecture francophone.)
«- Diagnose: view-source/DevTools for the tag and the response-header charset;
validators (W3C, Rocket Validator) and site audits (Ahrefs, Screaming Frog) flag late
or missing declarations. Fix the right layer — placement vs. actual encoding/header.
» (Traduction) (Résumé en français de la section soixante-treize, sous-partie sept : le texte source est conservé pour vérification lors de la relecture francophone.)
Documentation officielle
«Primary-source and spec documentation. » (Traduction) (Résumé en français de la section soixante-dix-sept, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
Standards (WHATWG / MDN)
- HTML Standard (WHATWG) — Specifying le document’s character encoding — le normative règles: le charset declaration, le premier-1024-bytes requirement, UTF-8, le un-per-document limite, et le XML exception.
- HTML Standard (WHATWG) — Determining le character encoding — le encoding-sniffing algorithm: BOM detection premier, alors le HTTP-level
Content-Typecharset, alors le dans-document meta declaration. - MDN —
<meta>: le metadata element — plain-langue référence:utf-8-seulement pour HTML5, le 1024-byte règle, et le legacyhttp-equivformulaire.
- Meta balises et HTML attributs que Google prend en charge — le seulement Google guidance touching charset, sous “Content-Type and charset”: le accepted
http-equivetcharsetformulaires et le “use Unicode/UTF-8 where possible” recommendation.
Bing / Microsoft
- IndexNow — getting commencé — Bing références UTF-8 seulement pour its propre API/key-file formats, pas as on-page HTML guidance. Là is aucun dedicated Bing doc on the
<meta charset>tag.
Tooling
- Lighthouse problème #10023 — warn à propos de late or manquant
<meta charset>— the proposed audit checking si the charset tag isdocument.head.firstElementChild.
Quotes from the source
On-le-record statements depuis le HTML spec, MDN, et Google. Chaque lien est a deep lien que jumps à le quoted passage où le source prend en charge il.
WHATWG HTML Standard — ce que the tag is
- “Le
charsetattribut specifies le character encoding utilisé par le document. Ce est a character encoding declaration.” — HTML Living Standard (WHATWG). Source
MDN — le encoding et placement règles
«- “This attribute declares the document’s character encoding. If the attribute is present, its value must be an ASCII case-insensitive match for the string utf-8, because UTF-8 is the only valid encoding for HTML5 documents. <meta> elements which declare a character encoding must be located entirely within the first 1024 bytes of the document.”
— MDN Web Docs, “<meta>: the metadata element.”
Jump to quote
» (Traduction) (Résumé en français de la section quatre-vingt-neuf, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
Google — le (thin) official position
«- “These tags define the page’s content type and character set respectively. Make sure that you surround the value of the content attribute in the http-equiv meta tag with quotes—otherwise the charset attribute may be interpreted incorrectly. We recommend using Unicode/UTF-8 where possible.”
— Google Search Central, “Meta tags and attributes that Google supports.”
Jump to quote
» (Traduction) (Résumé en français de la section quatre-vingt-onze, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
Industry — le honest framing de le SEO impact
«- “Unless your page is severely broken as a result of charset issues (which is unlikely), the impact is going to be quite minimal.” — Ahrefs Blog, “Meta Tags for SEO: A Simple Guide for Beginners” (Joshua Hardwick). Source » (Traduction) (Résumé en français de la section quatre-vingt-treize, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
Remarque: le MDN et Google lines sont quoted depuis actif documentation pages et devrait être confirmed contre le actuel version avant étant treated as final — docs drift. Aucun verbatim statement depuis a named Google or Bing representative précisément à propos de “meta charset” or “mojibake” était located à travers le SEO trade press or Recherche Off le Record archives as de ce writing; Google’s guidance on le topic est limited à le unique recommendation quoted ci-dessus. Le Ahrefs line est authored par Joshua Hardwick, pas me — Je cite il as Ahrefs’ framing, qui matches mon propre view.Meta charset audit — checklist
A rapide réussir à confirmer votre pages declare et rendre encoding correctement:
- Chaque page a
<meta charset="utf-8">dans le<head>. - Le charset balise est le premier child de
<head>— avant<title>,<link>,<script>,<style>, et quelconque autre<meta>. - Le declaration lands dans le premier 1024 bytes de le document (il va si c’est le premier child de head).
- Le valeur est
utf-8— pas ISO-8859-1, Windows-1252, or a per-region code page. - Le fichier itself est en réalité enregistré/servi as UTF-8 (le declaration et le réel byte encoding doit agree).
- Seulement un charset meta element par page.
- Le serveur’s
Content-Typeréponse header charset agrees avec le balise (le header wins over le balise si ils conflict) — vérifier dans DevTools, surtout après quelconque CDN or serveur migration. - Aucun stray UTF-8 byte-order mark (BOM) à le commencer de le fichier — rare, mais si présent il outranks les deux le header et le balise.
- Spot-vérifier pages avec non-ASCII contenu (accents, curly citations, non-Latin scripts, emoji) — plain English peut regarder fine même quand encoding est broken.
- Ran lune page via le W3C validator / a robot d’exploration (Ahrefs Site Audit, Screaming Frog) à catch late or manquant declarations à scale.
- ne pas ajouter le legacy
http-equiv="Content-Type"formulaire fresh — le court<meta charset="utf-8">est suffisant.
«## Meta charset cheat sheet » (Traduction) (Résumé en français de la section cent deux, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«The two syntaxes » (Traduction) (Résumé en français de la section cent trois, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«| Form | Syntax | Use it? |
| --- | --- | --- |
| Modern (HTML5) | <meta charset="utf-8"> | Yes — this is what you want |
| Legacy (pre-HTML5) | <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | Not for new work; redundant, only one needed |
» (Traduction) (Résumé en français de la section cent quatre, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
The rules que matter
| Règle | Detail |
|---|---|
| Valeur | Doit être utf-8 pour HTML5 (spec exige le réel encoding à être UTF-8 aussi) |
| Placement (spec minimum) | Dans le premier 1024 bytes de le document |
| Placement (meilleur pratique) | Le literal premier child de <head> |
| Count | Un charset meta element per document — aucun plus |
| XML/XHTML | Le charset attribut a aucun effect dans XML documents |
| Precedence | A UTF-8 BOM wins over tout; sinon a serveur Content-Type header charset overrides le dans-page balise |
Rapide facts
- Incorrect/manquant/late encoding → mojibake (garbled accents, curly citations, non-Latin scripts, emoji). Plain ASCII English peut encore regarder fine — le bug hides.
- Pas a facteur de classement. Google’s seulement line: “use Unicode/UTF-8 where possible.”
- Impact est minimal unless lune page est severely broken (Ahrefs) — mais broken texte est encore worth fixing pour utilisateurs et indexation.
- Debugging mojibake? Vérifier pour a BOM premier, alors le réponse-header charset, pas simplement view-source — BOM beats le header, et le header beats le balise.
- Tooling est moving toward checking placement (premier child de head), pas simplement presence (voir Lighthouse #10023).
«## Test yourself: The Meta Charset Tag » (Traduction) (Résumé en français de la section cent dix, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
«Five quick questions on character encoding and the charset tag. Pick an answer for each, then check. » (Traduction) (Résumé en français de la section cent onze, sous-partie un : le texte source est conservé pour vérification lors de la relecture francophone.)
Journal des modifications
Mis à jour le 18 juil. 2026.
Résumé éditorial et détails enregistrés des changements.Détails des changements
-
Les notes détaillées des changements sont actuellement disponibles en anglais.
Comparaison complète indisponible — aucun instantané antérieur n’a été archivé pour cette révision.