Start here
Before You Fix It: What This Check Means
Charset declarations prevent text corruption and parser ambiguity across browsers and bots. In plain terms, this checks whether the page declares a consistent text encoding so characters do not break. Scavo inspects charset declarations from three places.
Why this matters in practice: operational drift here often causes hard-to-debug regressions across environments.
How to use this result: treat this as directional evidence, not final truth. This result reflects what was observable at scan time and should be verified in your own production context. First, confirm the issue in live output: verify directly in live production output with browser/network tools Then ship one controlled change: Emit `<meta charset="utf-8">` near the top of `<head>`. Finally, re-scan the same URL to confirm the result improves.
Background sources
TL;DR: Your pages don't declare a character encoding, causing browsers to guess — which can mangle special characters and accented text.
Without a declared charset, browsers use heuristics to guess the encoding. This frequently garbles accented characters (é becomes é), em dashes, curly quotes, and any non-ASCII text. For multilingual sites, this is catastrophic. The fix is one meta tag: <meta charset="UTF-8"> before any other content in the head.
What Scavo checks (plain English)
Scavo inspects charset declarations from three places:
<meta charset="..."><meta http-equiv="content-type" content="...; charset=...">- HTTP
Content-Typeresponse header
Exact logic:
Warning: no charset declaration found.Warning: multiple different charsets are declared.Warning: one charset declared but it is not UTF-8/utf8.Pass: a single UTF-8 declaration is detected.
Scavo stores detected charsets and header values in check details.
How Scavo scores this check
Scavo assigns one result state for this check on the tested page:
- Pass: baseline signals for this check were found.
- Warning: partial coverage or risk signals were found and should be reviewed.
- Fail: required signals were missing or risky behavior was confirmed.
- Info: Scavo could not gather enough reliable evidence on this run to score pass/fail confidently.
In your scan report, this appears under What failed / What needs attention / What is working for charset, followed by Recommended next steps and Technical evidence (for developers) when needed.
- Scan key:
charset - Category:
TECHNICAL
Why fixing this matters
Wrong or inconsistent encoding causes garbled characters, broken punctuation, and data-quality issues in forms/content.
UTF-8 is the web default for modern multilingual content and avoids most compatibility issues.
Common reasons this check warns
- Old template includes legacy
iso-8859-1declaration. - Header middleware sets a different charset from HTML meta.
- Multiple plugins inject duplicate meta charset tags.
- API/edge responses miss explicit content-type charset.
If you are not technical
- Ask your developer to standardize responses to UTF-8.
- Request proof from both source HTML and response headers.
- Check pages with special characters (accented text, symbols).
- Re-run scan after fix.
Technical handoff message
Copy and share this with your developer.
Scavo flagged Character encoding (charset). Please make charset declarations consistent and UTF-8 across HTML meta and HTTP headers for this URL. Remove conflicting declarations and re-run the scan.If you are technical
- Emit
<meta charset="utf-8">near the top of<head>. - Ensure
Content-Typeheaders include UTF-8 where applicable. - Remove duplicate or conflicting charset declarations.
- Confirm templating/layout partials cannot inject legacy charset values.
Example
<meta charset="utf-8">
How to verify
- Check page source for one UTF-8 declaration.
- Check headers with
curl -Iand inspectContent-Type. - Validate non-ASCII text renders correctly on key pages.
- Re-run Scavo and confirm
Pass.
What this scan cannot confirm
- It does not decode raw bytes to prove payload encoding correctness.
- It does not validate every static asset type.
- It does not guarantee all downstream integrations preserve UTF-8.
Owner checklist
- [ ] Assign one owner for response header/content defaults.
- [ ] Standardize charset handling in base layout and middleware.
- [ ] Add regression test for charset output on key templates.
- [ ] Re-check encoding after framework/server upgrades.
FAQ
Why can conflicting charset declarations break pages?
Browsers may prioritize one declaration over another, producing unpredictable decoding outcomes.
Is UTF-8 always the right choice for modern web pages?
In almost all cases, yes. HTML guidance and platform defaults strongly favor UTF-8.
Do we need both meta charset and header charset?
One clear declaration can be enough, but many teams keep both aligned for robustness across delivery paths.
Can CDN changes introduce charset issues?
Yes. Header rewrite rules can unintentionally override origin charset values.
Sources
- MDN:
<meta>element reference - MDN: Content-Type header
- WHATWG Encoding Standard
- WHATWG HTML: character encodings and declarations
Need help tracing charset conflicts across app, CDN, and server layers? Send support one failing URL and raw response headers.