Missing charset declaration: when special characters render as ???
Without an explicit <meta charset="utf-8"> in the first 1024 bytes of HTML, browsers guess the encoding — and sometimes guess wrong. Special characters, currency symbols, and non-Latin scripts render as ???. Add the declaration to every template.
Without an explicit <meta charset="utf-8"> in the first 1024 bytes of HTML, browsers guess the encoding — and sometimes guess wrong. Special characters, currency symbols, and non-Latin scripts render as ???. Add the declaration to every template. The charset declaration tells the browser which character encoding to use when parsing the response. <meta charset="utf-8"> is the modern correct value. It must appear early in <head> — ideally as the first child of <head>.
Last updated·
What it is
The charset declaration tells the browser which character encoding to use when parsing the response. <meta charset="utf-8"> is the modern correct value. It must appear early in <head> — ideally as the first child of <head>.
Why it matters
Mis-rendered characters destroy trust and bounce visitors instantly. Search engines also struggle to index pages with encoding issues — special characters in titles, headings, or schema may be silently corrupted.
How to fix it
- Add <meta charset="utf-8"> as the first <head> element. Place before any <title>, <meta>, or <link>. Browsers need to know the encoding before parsing further bytes.
- Match the HTTP Content-Type header. The server should also send Content-Type: text/html; charset=utf-8. Mismatch causes inconsistent behaviour.
- Verify with curl. curl -I https://example.com should show charset=utf-8 in the Content-Type. View source to confirm the meta is present.
Authoritative sources
- Google Search Central documentation — Google
- Schema.org vocabulary — schema.org
- SEO Starter Guide — Google Search Central
- MDN — HTML meta and link elements — Mozilla MDN