Without a declared encoding the browser guesses, and a wrong guess renders every non-ASCII character as mojibake. The declaration must also appear in the first 1024 bytes, which is why it belongs at the top of head.
- Free, no signupNo account, no card
- No AI in the score986 deterministic rules
- Nothing publishedYour scans stay yours
- Answers in secondsQuick scan, no browser
How this rule is weighted
- Importance
- 6 / 10
- How much this matters relative to other rules.
- Confidence
- SPECIFICATION
- A standard says so: HTML, WCAG, an RFC or Google's own documentation.
- Severity
- error
- How the finding is presented when it fails.
- Scoring
- Counts
- A failure costs points in its category.
Impact is importance multiplied by the confidence tier’s weight — SPECIFICATION 1.0, RESEARCH 0.7, EMERGING 0.3, EXPERIMENTAL 0.1. Two rules backed by the same class of evidence therefore always carry the same weight, which is what makes the score reproducible rather than hand-tuned.
Questions about this rule
- Does HTML_META_CHARSET_FIRST affect my score?
- Yes. It is an importance 6 rule at SPECIFICATION confidence, so a failure costs 6 × 1 points of impact in the HTML category before that category is normalised to 100.
- What does SPECIFICATION confidence mean?
- A standard says so: HTML, WCAG, an RFC or Google's own documentation. Confidence is a declared tier rather than a per-rule number, so every rule backed by the same class of evidence carries the same weight - which is what makes the score reproducible instead of hand-tuned.
- How do I check HTML_META_CHARSET_FIRST on my own site?
- Paste your URL into the box above and it runs only this rule, usually in a couple of seconds. It is also included in the HTML checker and in a full scan.
Tags
- html
- w3c
- encoding
Related HTML rules
- Document declares a viewportWithout a viewport meta tag mobile browsers render at a 980px virtual width and scale down, so the page arrives zoomed out and unreadable regardless of how good the responsive CSS is.HTML_META_VIEWPORT_PRESENT
- Element ids stay uniqueDuplicate ids break getElementById, label/for association, aria-labelledby and in-page anchors - all of which silently resolve to the first match only.HTML_DUPLICATE_IDS
- Head contains a title elementA title is required by the HTML specification, not merely recommended, and every validator reports its absence as an error.HTML_HEAD_HAS_TITLE
- Markup parses without structural errorsChecks the raw HTML source for structural mistakes the browser silently repairs: nested anchors and forms, block elements inside paragraphs, bare table rows, nested headings and unterminated attributes. These never appear in the parsed DOM, so they are invisible to tools that inspect a rendered page - but they mean the DOM you get is not the DOM you wrote.HTML_PARSE_ERRORS
- Boolean attributes are not set to falseBoolean attributes are true whenever present, whatever their value. disabled="false" disables the control - the exact opposite of what the author intended, and one of the most persistent bugs in hand-written HTML.HTML_BOOLEAN_ATTRS_VALID
- Form controls declare a nameA control with no name is omitted from the submitted form data entirely. The field renders, the user fills it in, and the value never reaches the server.HTML_INPUT_NAME_PRESENT