Docket / Fix it

Fix guides

Fix guides for the specific problems Docket reports. Each one explains what the issue costs you, then gives the change to make.

$59once

For Macs with Apple silicon or Intel, macOS 12 or later, and 64-bit Windows

On a Mac? Get the Mac version.

Black Friday price, all of November: Docket SEO $29.50 once. From 1 December it’s $59, or 4 × $14.75. Buy applies the code FOUNDINGDOCKET for you; if the checkout shows $59, enter it under ‘Have a discount code?’.

Screaming Frog is $279 a year. Ahrefs plans with Site Audit run $29–$449 a month. Docket is $59 once. Screaming Frog’s price read 4 November 2026, Ahrefs’ 28 October 2026.

30 days, no conditions, no questions asked. Refund policy

Intel Mac? Get the Intel version

Before any individual guide, the question that decides whether an audit is worth anything: what do you do first? A list of 99 checks against a real site produces dozens of findings, and the order you work them in matters more than any single fix.

The order to fix things in

Docket ranks every finding by the same formula, and it is worth knowing because you can apply it by hand to any tool's output:

priority = severity x impact x reach / effort
           x1.5 if the finding is on a page that sells

Three of those are obvious. The fourth is where most tools go wrong: reach grows sub-linearly in the number of pages affected: a capped square root rather than a raw count. Without that damping, a trivial nit on every page of a large site outranks a noindex on your homepage, and the report becomes a list you scroll past. Sorting by "number of pages affected", which is the default in several crawlers, is exactly that failure.

In practice this collapses to a short rule. Fix anything that stops a page being indexed at all, first and immediately. Those are rare and they are absolute. Then work down by priority, which naturally puts small changes on important pages above large changes on unimportant ones. A finding marked TRIVIAL or SMALL effort with HIGH severity is almost always the best hour you will spend.

What a fix guide here will not do

None of these say "improve your content" or "build quality links". If a guide cannot name the exact element to change, it has not earned the page. Where a change depends on something only you know (whether you want AI engines training on your writing, for instance) the guide sets out the decision rather than making it for you.

Fix AI crawler access in robots.txt

How to let ChatGPT, Perplexity and Claude read your site without giving away training data. They are separate decisions and need separate rules. Measured against 6236 sites' robots.txt files, most people who block AI crawlers get this wrong in the same direction.

Redirecting http:// to https://

The 301 every host configures differently, and the certificate state that makes the "Enforce HTTPS" setting refuse to turn on. Written from our own site failing this exact check. How to redirect http:// to https:// →

hreflang return tags

The only common SEO tag that cannot be checked by reading the page it sits on: a declaration that goes one way is ignored entirely, and every tag looks correct in isolation. How to fix hreflang return tags →

Invalid hreflang codes

A separate failure from the one above: the tag is present and points both ways, but the value inside it is not a language code anyone recognises. What the check really validates, and the region codes it waves through. What is actually checked →

hreflang and html lang mismatch

The tag people confuse with the one above. hreflang tells search engines which translation to serve; html lang declares what this page is written in, and only one of them is usually wrong. Which one you have →

Conflicting canonical tags

Two canonicals on one page, a canonical pointing at a noindex page, and the section-wide mistake that can cost a site its entire long tail while every page still returns 200. How to fix conflicting canonicals →

The social links that are not yours

A wrong sameAs entry is worse than a missing one: it asserts that your company and somebody else are the same thing. Why a permalink is not a profile, and why repetition tells you what your footer owns when position cannot. What it must not claim →

A rate limit is not a block

An audit is traffic, and a crawl can trip the very rate limit it then measures. How to tell a throttle from a refusal, the one-click test that says whether a 403 is about your identity or your network, and why a re-run is the only thing that makes the finding real. Tell a wait from a refusal →

When the finding is the mistake

15 cases where an audit reported something that was not true of the site, or said nothing about something that was: a count of the wrong thing, a phrase read as a review, markup about somebody else, a policy called a defect, a fix that hid a real problem somewhere else. Each says what the report claimed, what was true, and what to check on your own. The worked cases →

When the form is the call to action

A page whose whole content is a quote form can be reported as having nothing to click, because the tool was looking for buttons. Why a form counts, why a search box must not, and the general fault behind half the findings phrased as an absence. Why a form counts →

What your markup says you are called

Nothing tells an audit your company's name, so it infers one, and four ordinary sites broke that inference, including a logo link whose correct accessibility label was read as a brand and then advised away. Where the guess comes from →

The pages an audit could not reach

Four different causes come out as one line telling you to check DNS and TLS, and on a domain that served the rest of the crawl, DNS and TLS are the one place nothing is wrong. Four questions that tell slow from down in a minute. Before you touch DNS →

The fix that deletes the evidence

"Regenerate your sitemap" is right for a 404 and wrong for four other causes, and on one site following it would have removed the only list pointing at a server fault. Why a subtractive remedy needs a higher standard of proof. Before you regenerate →

When the finding concedes your case and fires anyway

Nearly every page an insurer was warned about was a confirmation page doing exactly the right thing, and the warning's own advice said so. When an exception belongs in the rule, and when a stated caveat is the honest answer instead. Read the fix text first →

Identical content that is not duplicate content

Pages share a body for three reasons and only one of them is duplicate content. The case where following the advice would have redirected a site's blog, press page and FAQs into a terms page, and the two-minute check that tells them apart. Check before you redirect →

When a finished page is called unfinished

A charity's housing policy was flagged for discussing homes under construction, and a wiki for documenting the filler template it ships. Why both repairs replaced a question about meaning with a question about the shape of the text. Read the quoted sentence →

What the JSON-LD error actually says

A check that finds invalid markup has just parsed it and caught the exact reason, then prints a list of likely causes instead. What each parser message means, and why a report can be right that they all fail the same way while the pages stay broken. Read the message →

The hreflang target that is not really dead

Four reasons a target gets called broken, and on two of them the tool learned nothing. Plus the redirect test that could only fire on sites already doing it right, and why that is worse than a test that never fires at all. Read the reason, not the headline →

"You have no analytics" is a claim about a list

A tag in the HTML is evidence that a tag is in the HTML: nothing more. Two cases where a site was measuring the whole time and was told it was not, and why a tag container turns "you have none" into "this could not tell". Check what it named →

The type you declare is a claim

A university is not a LocalBusiness in schema.org's hierarchy, so "add LocalBusiness or a subtype" offered it plumber and dentist. And a pasteable block that carries your real domain will carry somebody else's address just as confidently. Check every value →

When a field is there and still missing

You search your own markup for the property a report called missing, and find it: holding an empty value, which a search engine reads as nothing at all. The other half: the phone number reported missing because the check read one of the two places it can live. Tell the two apart →

Where a tool looks for your address

Strip the page furniture and you strip the footer, which is where a business puts its address, so the most semantic markup got the false positive. Then reading everything turned one address, published identically, into dozens of variations. Both failures, one cause →

When a check cannot see the markup you wrote

Schema types inherit, so a specific business type is an Organization, and a check comparing type names misses every subtype. The finding that fires hardest on whoever marked their business up most precisely, and how to tell two checks disagreeing from two checks overlapping. Look at the type first →

When the site sounds like several companies

Sentence length across your pages is a crude proxy for one voice, and it works better than it deserves to. What it can see, why several voices are often correct, and why rewriting everything to one length is a metronome rather than a voice. What it refuses to judge →

When the site stops saying one thing

Read one page and it is fine; read twenty and you cannot say what the company does. The defect does not live on a page, it lives between them, and you get there by shipping good pages one at a time, not by being careless. Why good work causes it →

Markup that says what the page does not

A rating with no reviews behind it, or a price the page never shows, risks a manual action rather than a missing star. Why it happens to careful people, what an audit can and cannot tell you, and the three wrong fixes. Check yours →

The redirect your tools cannot see

A meta refresh sends the visitor onward but answers 200, so link checkers call the link fine and redirect reports never mention the hop. What that costs, why a delay above zero is worse, and the case where it is the only option your hosting gives you. Find yours in one command →

Search and cart pages in the index

Internal search results, carts and order confirmations get indexed because nothing about them looks broken: they are working exactly as built. What that costs, the one directive that fixes it, and why robots.txt is the wrong tool. Take them out →

Pagination that hides half your site

When pages two and beyond declare page one as their canonical, a crawler is told they are duplicates, and everything only reachable from them goes too. The mistake looks like good hygiene, which is why it survives. Spot it in one command →

Mobile, and what a crawl cannot see

Google indexes the mobile page, not the desktop one. Which mobile faults a crawler can genuinely prove (the viewport tag, weight, render-blocking, layout shift, numbers that will not dial), and which ones still need you to pick up a phone. What a crawl can and cannot check →

The pages that make you money

Every ranking is built from how broken a thing is, never from which page it is on, so a missing title on your pricing page sorts level with the same fault on a tag archive. How to identify yours, and why page value should break ties rather than set the order. Fix your money pages first →

Pages competing for the same search

Two of your own pages aiming at one query split the links and relevance that should back a single page, and neither ranks as well as one would. Not duplicate content: genuinely different pages, often both good, which is why nothing reports them. How to find and fix them →

Soft 404s

A missing page that answers 200 turns every mistyped URL into an indexable page. How to check it in one command, and the fix for each cause. How to fix soft 404s →

Heading structure

Four findings, not one, and the check contradicts itself on the question everyone asks. What Docket measures about headings, and where the one-H1 rule parts company with the HTML standard. Fix heading structure →

Broken outbound links

A site that refuses an automated request is not a dead site, and Docket separates the two. Which rows are rot, which are a fact about the crawl, and the one status that means the request never finished at all. How to fix broken outbound links →

Compression and caching headers

One of these is a genuine speed win and the other is quieter than it looks. Plus the case where a site that compresses perfectly is reported anyway, and the one command that tells you which you have. Fix compression and caching →

Image problems worth fixing

Docket reads image markup, never the picture, so it can tell you an image has no alt attribute and never whether the alt describes anything. Which image advice is real, and the case where reserving space correctly still leaves the finding standing. Which image SEO problems actually matter →

Redirect problems

Loops, chains, and internal links pointing at a redirect. Three findings at three severities, and one thing the crawl records that cannot tell you whether a hop was permanent or temporary. How to fix redirect problems →

Navigation that needs JavaScript

Google follows a link when it is an a element with an href in the HTML your server sent. A menu assembled by a click handler is not one. What Docket counts, and why the empty-shell app is often not the site this catches. How to fix navigation that needs JavaScript →

Phone links that will not dial

A tel: link can look perfect on a desktop and dial nothing when it is tapped. The shapes that fail, which of them Docket reports and at what severity, and the one it deliberately says nothing about. How to fix phone links that will not dial →

Structured data errors

Invalid JSON-LD is discarded whole rather than partially read, so a page with complete markup and one trailing comma is treated like a page with none. The five ways schema breaks, and why a single-URL validator misses most of them. How to fix structured data errors →

Layout shift (CLS)

Almost always images with no width and height: the browser cannot reserve the space, so content jumps as they load. The fix, the four other causes, and why a crawler can report the risk but never the score. How to fix layout shift →

Render-blocking resources

Scripts and stylesheets the browser must fetch before it paints anything. Defer the scripts, load the CSS the first screen does not need after it, and see a real before and after from a Docket audit, with what the check counts and what it cannot see. How to fix render-blocking resources →

Vague and empty link text

"Click here", "read more" and icon links with no name tell a visitor, a screen reader and Google nothing about where they go. The phrases Docket counts, the fix for each pattern, and a real before and after from a Docket audit. How to fix vague and empty link text →

Meta descriptions

Google writes most snippets itself and uses yours only when it describes the page better. Write a different one per page, put the point first, and see what Docket flags, with a real before and after. How to write meta descriptions →

Image formats

JPEG and PNG files are bigger than WebP and AVIF versions of the same picture. Swap the file or offer the modern one first with the JPEG as fallback, and see what Docket counts, including a bug in its own count that is fixed, with a real before and after. How to serve images in modern formats →

Thin content

A short page is a candidate, not a verdict: Google says it has no preferred word count. Decide for each page whether to write it out, merge it into a stronger one, keep it out of the index or leave it alone, with a real before and after from a Docket audit. How to fix thin content pages →

Server response time

If the server is slow to start sending a page, nothing on the page can make it fast. Cache whole pages, add a CDN, find what is slow behind the cache, and see what Docket measures and what it cannot, with a real four-way before and after. How to reduce server response time →

Name, address and phone

Pick one exact form of your business name, address and phone, print it from one place and match your Google Business Profile. What Docket flags, what Google's local guidance does and does not say, and a real before and after. How to fix inconsistent name, address and phone →

Favicon

The small icon beside your name in search results needs a link tag on the home page, a file that loads and crawlers that can reach both. What Google requires, what Docket checks, and a real four-way before and after. How to fix a favicon that is not showing →

Duplicate title tags

Rarely a penalty and routinely misdiagnosed: what duplicate titles actually cost you, the character limit that does not exist, and the fix by what caused them: pagination, facets, product variants, near-identical location pages. How to fix duplicate title tags →

Missing security headers

HSTS, nosniff and Referrer-Policy, what each one actually does, and where to set them on every common host. Written as a self-audit, because this site fails two of the three checks it is describing and the reason is worth reading. How to fix missing security headers →

Auditing from an AI assistant

Docket speaks the Model Context Protocol over stdio, so an assistant can run an audit on your own Mac and read the findings back as structured data. No API key, no cloud, and the same one-time licence: the assistant is talking to the copy you own. How to set it up →

Gating a deploy on regressions

Audit production against staging and fail the build on what the deploy introduced. The case for diffing findings rather than a score: stripping every title tag from a test site left the score unchanged and registered three improvements. How to gate a deploy →

Link previews with no image

Three different faults look identical when you paste a link: no Open Graph tags, an og:image pointing at a file that no longer exists, or an image a scraper cannot reach. The dead image is the one nobody catches, because every platform caches the preview it scraped first, so the person who broke it is the last to see it broken. How to fix a broken link preview →

Title tags that fit

Search engines truncate by pixel width, not character count, which makes the usual "under sixty characters" advice wrong on any site that is not entirely English. How to write title tags that fit →

Where a bigger competitor is beatable

Authority is bought with time, and a site that has had more of it will win the queries that authority decides. Some ranking surfaces are not sold that way, and the openings are structural, which means you can find them by looking rather than by guessing at rankings nobody outside Google can see. How to find where a bigger competitor is beatable →

More coming

Further guides are being written, one per issue Docket reports. They will appear as each is written properly rather than as variations on a template.