"1000 SEO tips" listicles are a genre at this point. They exist because SEO software companies need their content team to publish something every week. The actual list of things that matter on a marketing site is about 20. Twenty done right beats a thousand done half-heartedly.
This is the list. Five each across four categories: technical, on-page, performance, content. With how to verify each, what tool to use, and what counts as "good enough."
Technical (5)
1. Canonical URLs
Every page has a single canonical URL. Duplicates (with or without trailing slash, with or without query strings) point to it via <link rel="canonical">.
Verify: view source on a few pages, search for canonical. Should appear exactly once per page, pointing to the URL the page should rank under.
Common bug: pages with ?utm_source=... parameters get canonicalised to themselves, splitting ranking signals. The canonical should always be the clean URL.
2. XML sitemap
A sitemap at /sitemap.xml listing every indexable page on the site. Submitted to Google Search Console. Regenerated whenever content changes.
Verify: visit /sitemap.xml. Count the URLs. Spot-check that the URLs are correct and include the canonical version (not duplicates). For multi-language sites, the sitemap should include the hreflang annotations.
For Next.js: app/sitemap.ts generates it dynamically. For static sites: a build step writes the file.
3. Robots.txt
A /robots.txt at the root telling crawlers what they can and can't access.
Default for a marketing site:
User-agent: *
Allow: /
Sitemap: https://example.com/sitemap.xmlThat's it. The complexity in robots.txt comes from teams trying to block their staging URLs or admin pages. Use auth for that; robots.txt is a suggestion, not a security boundary.
Verify: visit /robots.txt. Confirm the sitemap line points to the right URL.
4. JSON-LD structured data
Schema.org markup as JSON-LD in the head of every page. At minimum:
Organizationschema on the homepageWebSiteschema sitewideBlogPostingon blog postsServiceon service pagesBreadcrumbListon any page that has breadcrumbsFAQPageif you have an FAQ
Verify: use Google's Rich Results Test on a few pages. Confirm no errors. Confirm the structured data describes what the page actually shows.
Common bug: JSON-LD on a blog post claims it has an author of "Acme Studio" but the visible page says "Written by Sam Hollis." Pick one.
5. Hreflang (if multilingual)
If the site is in more than one language, hreflang on every page declaring every locale. See the hreflang post for the failure modes.
If the site is single-language, skip this entirely. Adding empty or incorrect hreflang is worse than not having it.
On-page (5)
6. Title tag, 50-60 characters
The <title> of each page. 50-60 characters is the sweet spot that survives Google's truncation. Primary keyword in the first 30 characters. Reads like something a human would write.
Verify: spot-check the source of a few pages. Title tag should be unique per page. No "Home | Acme" patterns; the homepage title should describe what Acme does, not say "Home."
7. Meta description, 140-160 characters
The <meta name="description">. Google sometimes shows this in search results, sometimes ignores it. When shown, it influences click-through.
Verify: same as title. Unique per page, 140-160 chars, concrete benefit or claim, primary keyword included naturally.
Don't generate descriptions from page content automatically. They're worse than absent.
8. Single H1
Every page has exactly one <h1>. Its text matches the title tag closely (not identically — they serve different audiences).
Verify: search the rendered source for <h1. Should appear once. If twice, fix the template.
Common bug: a <h1> for the logo or site name in the header, then another <h1> for the page title. Use <h1> only for the page-content title; the logo is a <p> or <div>.
9. Internal links, 2-5 per page
Every content page links to at least 2-5 other relevant pages on the same site. With descriptive anchor text (not "click here").
Verify: count the internal links on a few key pages. Service pages should link to case studies. Case studies should link to services. Blog posts should link to related blog posts and the service they ladder up to.
Sites with poor internal linking rank worse for the same content. The link graph is a ranking factor; build it deliberately.
10. Image alt text
Every <img> has an alt attribute. Empty (alt="") for decorative images. Descriptive for content images. See the WCAG post for the specifics.
Verify: a quick scan with axe DevTools or Lighthouse will catch missing alt. Reading the alt text aloud should tell you whether it makes sense.
Performance (5)
11. Largest Contentful Paint (LCP) under 2.5s
The biggest visible element on the page (usually the hero image or first headline) should render in under 2.5 seconds on a mid-range mobile device.
Verify: PageSpeed Insights for lab data. CrUX (Chrome User Experience report) for real-user data. The CrUX number is what Google ranks on.
Common cause: a big hero image without priority hint, or no srcset, or PNG instead of WebP.
12. Cumulative Layout Shift (CLS) under 0.1
Things on the page shouldn't jump around as they load. CLS measures the cumulative jumpiness.
Verify: same tools. Common causes are images without width/height, fonts that swap and reflow, ads/embeds that inject content above existing content.
13. Interaction to Next Paint (INP) under 200ms
How responsive the page feels when the user does something (click, tap, type). INP replaced FID in Core Web Vitals.
Verify: CrUX. Lab tools approximate this but the real measurement comes from real users.
Common cause: heavy JavaScript blocking the main thread on interaction. Code-split, defer non-critical scripts, remove polyfills.
14. Server response time (TTFB) under 800ms
Time-to-first-byte. From the user clicking the link to the first byte of HTML arriving.
Verify: WebPageTest or PageSpeed Insights show this in the lab data. Real-user data from CrUX is also broken down by TTFB.
Common cause: slow database queries, cold-start serverless functions, no CDN. See the performance audit post for diagnostics.
15. Page weight under 500KB (first load)
The total bytes shipped on first load. Mid-tier mobile in a developing market has limited bandwidth; pages over 1MB are slow for a large chunk of the world's users.
Verify: WebPageTest's filmstrip view or Chrome DevTools network tab. Filter to "First load" excluding cached resources.
Common excess: large unoptimised images, fonts loaded but unused, polyfills, third-party scripts.
Content (5)
16. Keyword research that's grounded in intent
For each page, know the primary keyword it's trying to rank for, and the search intent behind that keyword (informational, transactional, comparison, navigational).
A page targeting "best CRM for small businesses" (comparison intent) shouldn't be a sales page for one product. It should be a comparison.
Verify: search the keyword in Google. Look at the top 10 results. They tell you what intent Google is matching. Your page should be the same shape.
17. Depth that matches the topic
How long the content should be is determined by the topic, not by a SEO rule. "How to make coffee at home" can be 800 words. "How GDPR applies to a SaaS company" probably needs 3000.
Verify: again, the top 10 results for your keyword. Check their lengths. Aim for the average, not the longest. Padding loses readers; depth earns them.
18. E-E-A-T signals
Experience, expertise, authoritativeness, trustworthiness. Google's quality framework. For a marketing site, these translate to:
- Author bylines on blog posts (with bio and credentials)
- About page with real names and real photos
- Case studies with named clients
- Genuine customer testimonials
- Verifiable claims (numbers, dates, citations)
Verify: imagine you're a sceptical reader. Can you tell who wrote this, what their expertise is, whether they actually do the work they're describing? If not, you have an E-E-A-T problem.
19. Freshness
Some queries reward fresh content (news, trends, "best X in 2026"). Others don't (timeless how-tos, evergreen explanations).
For pages that target fresh queries: update them. Add a "last updated" date. Reflect new information. Stale content on fresh queries gets out-ranked.
For evergreen content: leave it alone unless it's wrong. Updating "How to make coffee" every quarter is busywork.
Verify: search your target keyword. If the top 10 are all from the last 6 months, freshness matters. If they span years, it doesn't.
20. AI-search citability
The newer dimension. Will Google's AI Overviews, Perplexity, or ChatGPT search cite your page when answering the underlying query?
The pattern that gets cited:
- The answer is in the first paragraph of each section, not buried.
- Specific facts (numbers, names, dates) rather than vague claims.
- Definitions inline (don't assume the reader has context).
- Lists and tables that can be excerpted cleanly.
See the GEO post when we publish it. For now: write each section so its first sentence is a complete, citable claim.
The 1000 tips you can skip
Things SEO listicles recommend that you can ignore:
- Keyword density. Stopped mattering a decade ago.
- Meta keywords tag. Google ignores it entirely.
- "LSI keywords." Not a real thing in Google's algorithm.
- "Schema everywhere." Use schema where it's relevant (per the list above), skip it elsewhere.
- Submitting to search engines manually. Google finds your site through links.
- Disavowing every random backlink. The disavow tool is for serious cases, not routine.
- Word count targets like "blog posts should be 2000+ words." Wrong; see #17.
- Header tag micro-optimisations (multiple H2s in specific order). Use headings semantically; structure them logically.
If a list of SEO tasks has 47 items and you can't tell which 20 matter, you have a list problem.
A verification pass before launch
Run through the 20 in order. For each:
- Verify it's done correctly.
- Spot-check on at least three pages (homepage + two others).
- Document any "we can't do this yet" items as known gaps.
A site that hits 18 of 20 with two known gaps is in better shape than a site claiming 20 of 20 without verification. The honesty matters.
If you want a marketing site built with all 20 in from day one, see how we work.