Resources
Website problems
Technical problems a website can have, what causes them, and how to verify and fix each one.
accessibility
Without `<html lang>`, screen readers guess the pronunciation and translation tools guess the source language. Why it is one attribute, and what a wrong value costs.
ReadScreen-reader users navigate by listing links. What a list of twenty 'read more' entries communicates, and how to write link text that works out of context.
ReadAlt text is what a screen reader announces and what shows when an image fails. Which images need it, which must have it empty, and how to fix it at scale.
ReadWCAG sets measurable contrast ratios for text against its background. What the thresholds are, what automated checks can and cannot measure, and how to fix a palette.
ReadAn input with no programmatic label is announced as a bare edit field. Why a placeholder is not a label, the four ways to associate one, and what autocomplete adds.
ReadAn icon-only control with no text is announced as 'button' and nothing else. Where the accessible name comes from, and how icon buttons get one without visible text.
ReadRemoving the focus outline makes a site unusable by keyboard. What WCAG requires, why `outline: none` is the single most damaging CSS line, and how to style focus properly.
ReadBroken ARIA references, invalid roles and hidden interactive elements actively mislead assistive technology. The failure modes, and why no ARIA beats wrong ARIA.
ReadAny element with a positive tabindex jumps ahead of every element with the default. The effect is global, it does not compose, and reordering markup is the fix.
ReadMarking a container hidden from assistive technology removes its whole subtree from the accessibility tree while leaving its controls in the tab order.
ReadA labelledby or describedby attribute naming an identifier that does not exist produces no name at all. The visual label is unaffected, which is why it survives.
ReadWithout a way to bypass repeated navigation, a keyboard user traverses the same links on every page. What a working skip link looks like and why most break.
ReadAn embedded frame with no title is announced as an unlabelled region. On a page with several, a screen reader user has no way to tell them apart.
Readavailability
Two rules disagreeing send a request back and forth until the browser gives up. The four pairs that cause it, and how to find which layer issues which hop.
Readcontent
A thin page carries too little of its own substance to answer the query it targets. How to recognise one, why word count is the wrong measure, and the three honest remedies.
ReadTwo pages whose content is substantially the same compete with each other and are usually collapsed into one by search engines. The four patterns that cause it, and the fix for each.
ReadFiller text that shipped. The eleven forms that recur, why they survive review, how to find every instance, and how to stop them reaching production again.
ReadA page no other page links to is found by nobody browsing and crawled rarely. Why a sitemap entry is not a substitute, and which findings are false.
ReadA menu entry with no destination, an empty target or no accessible name loses visitors silently. The cause is usually one component, not many pages.
ReadA menu that loses entries on some templates buries whole sections. The cause is a template condition, and the symptom is invisible on the pages you test.
ReadRepeated words, doubled punctuation, missing spaces and shouted blocks are mechanical defects a scan can find. Individually trivial, collectively a signal.
Readlinks
Which status codes really mean a link is broken, which are false alarms, and why internal broken links are worth fixing before external ones.
Readmobile
Without a viewport declaration, mobile browsers assume a desktop width and zoom out. What the tag does, the values that break pinch-zoom, and how to verify the fix.
ReadOne element wider than the viewport makes the whole page scroll sideways. The six usual culprits, how to find the offending element, and why overflow:hidden is not the fix.
ReadA link small enough to be hard to hit costs a tap, and sometimes the wrong page. What WCAG 2.2 requires, where spacing counts instead of size, and how to fix a dense menu.
ReadA viewport declaration preventing zoom removes the mechanism people with low vision rely on. It is a WCAG failure and no layout justifies it.
Readseo
A page with no meta description lets the search engine write its own snippet. What that costs, how to find every page affected, and how to fix it at the template level.
ReadA page with no <title> has no name in search results, browser tabs or bookmarks. Why it usually signals a template fault, and how to find every page affected.
ReadWhen many pages share one title, search engines cannot tell them apart. The template patterns that cause it, and how to tell a duplicate title from a duplicate page.
ReadA canonical tag tells search engines which URL is the real one. When its absence is harmless, when it splits a page across several addresses, and how to fix it.
ReadA noindex directive left on a live page removes it from search entirely, with no visible symptom. Where it hides, why staging is the usual source, and how to verify removal.
ReadA Disallow rule stops pages being fetched at all. How the matching rules really work, why blocking is not removal, and the assets that break a page when blocked.
ReadA sitemap lists the URLs you want discovered. What it can and cannot do, the errors that make one counterproductive, and when a site genuinely does not need it.
ReadWhen hundreds of pages share a description, it describes none of them. The template patterns behind it, why search engines rewrite it anyway, and how to generate descriptions that vary.
ReadLong titles are truncated in results, short ones waste the strongest descriptor a page has. Why there is no character limit, and what to put first.
ReadAnnotations are validated as a set: one missing return reference, one wrong code or one relative URL and the whole cluster is discarded.
ReadWithout sharing metadata, platforms guess the title, description and image from the page. The guess is frequently a logo and the first sentence of boilerplate.
ReadA page with no H1 has no stated subject in its own markup. What browsers, screen readers and search engines do instead, and how to fix it at the template level.
ReadHeadings are an outline, not a font size. What several H1s, a skipped level and an empty heading each do to screen readers and search engines, and how to repair the outline.
Readtransport
A link that reaches its destination through several hops still works, but costs a request each time. How chains form, when they become loops, and how to flatten them safely.
Read