A webpage is not always broken because of a large mistake. Small details can produce exactly this problem: debugging: browser enters quirks mode. This guide shows you what to look for, a concrete fix, and how to check that it worked.
The Idea in Plain English
An absent or unsuitable doctype can trigger an older layout compatibility mode.
You can test this using a small local HTML file. Change one part at a time and check the result in the browser before adding more code.
A Working Example
The first part shows a problem. The second part shows a safer or more accurate version. Compare them before reading the explanation.
<!-- Problem -->
<html><head><title>Page</title></head><body>Hello</body></html>
<!-- Corrected example -->
<!DOCTYPE html>
<html lang="en">
<head><meta charset="utf-8"><title>Page</title></head>
<body><p>Hello</p></body>
</html>
What Each Part Does
- The title gives the document a name in tabs and other browser surfaces.
- The meta element supplies machine-readable settings; its name or charset decides which setting.
- A paragraph keeps one idea together as readable text.
- lang identifies the natural language for text-to-speech and language tools.
- charset identifies the character encoding used by the document.
Before the fix, the browser can behave incorrectly or report a warning. After the change, test the exact failure rather than assuming the page is fixed.
Try It Yourself
Check document.compatMode: standards mode normally reports CSS1Compat.
Common Beginner Mistakes
- Check the underlying cause before changing unrelated tags.
- Changing several parts of the example at once, making it difficult to see which part caused a different result.
- Choosing a tag only because its default appearance looks right, without checking whether it describes the content correctly.
Key Takeaways
- An absent or unsuitable doctype can trigger an older layout compatibility mode.
- Before the fix, the browser can behave incorrectly or report a warning. After the change, test the exact failure rather than assuming the page is fixed.
- Test the markup in a browser, and check accessibility and real-world behavior where relevant.