On-page SEO is everything you control on the page itself. Title tags, headings, content, URL structure, internal links, images, schema markup, page speed. Get these right and you've done most of the work Google needs to rank you.

This is the pillar guide — it covers every on-page element that matters, in the order you should tackle it. Each section links to a more detailed guide where relevant.

Title tags

The title tag (<title>) is the blue clickable link in search results and the single most important on-page signal. Google uses it to understand what the page is about, and users use it to decide whether to click.

How to write good title tags:

  • Keep them to 50–60 characters (roughly 580px display width). Longer titles get truncated.
  • Put the target keyword near the front — the closer to the beginning, the more weight it carries.
  • Include your brand name at the end if there's room: "Keyword Phrase — Brand Name".
  • Write for the click, not just the crawl. "Best Web Designers in Iceland — Bisyri" is better than "Iceland Web Design Services | Professional".
  • Every page needs a unique title. Duplicate titles confuse Google and cannabilise each other's rankings.

Google rewrites title tags in search results about 20% of the time — usually when your title doesn't match the search query well. Use the meta title generator to preview how yours will look in the SERP before publishing.

Meta descriptions

Meta descriptions don't affect rankings — but they directly affect click-through rate. A well-written description gets more clicks from the same position, which means more traffic without changing your ranking at all.

Keep them to 140–155 characters. Match the search intent. Include the keyword (Google bolds it in the result, making your listing more eye-catching). End with a clear value statement rather than a generic "click here".

See the complete meta descriptions guide for examples, by-page-type templates, and how to audit descriptions that are hurting your CTR.

URL structure

URLs should be short, descriptive, and include the target keyword. Compare:

  • Bad: yoursite.com/p?id=4829&cat=3
  • Bad: yoursite.com/web-design-services-professional-affordable-reykjavik-iceland
  • Good: yoursite.com/web-design/reykjavik/

Rules for good URLs:

  • Use hyphens to separate words (not underscores — Google treats underscores as word joiners)
  • Lowercase only
  • No stop words (a, the, in, of) unless necessary for readability
  • Reflect the site hierarchy: /blog/seo/title-tags/ makes the structure clear
  • Don't change URLs once a page is indexed — if you must, set up a 301 redirect from the old URL to the new one

Heading structure (H1–H6)

Headings do two things: they help users scan the page, and they help Google understand the structure and topics covered.

H1: one per page, contains the primary topic or keyword. Usually matches or is close to the title tag. Don't use it for your logo or site name.

H2s: the main sections of the page. Think of them as chapters. Each H2 can introduce a sub-topic related to the H1. Include secondary keywords here where natural.

H3–H6: subsections within H2s. Don't skip levels (e.g. jumping from H2 to H4) — maintain a logical hierarchy.

Common mistakes: using headings purely for visual styling (making something an H2 because it looks bold, rather than because it's a section header), having no H1, or having multiple H1s.

Also relevant for AEO: Google's AI Overviews frequently pull from well-structured heading hierarchies to generate answers. Clear headings with question-style phrasing (e.g. "What is a canonical URL?") are more likely to be cited directly.

Content quality and intent

Content is the foundation. Every other on-page element exists to help Google understand and trust your content — but if the content itself isn't good, none of the rest matters.

Match search intent

Search intent is the type of answer the searcher is looking for. Google categorises it as informational (I want to learn), navigational (I want to find a specific site), commercial (I'm comparing options), or transactional (I'm ready to buy). Your content needs to match the intent of the query you're targeting.

Check what type of content ranks for your keyword. If the top results are all listicles, a wall-of-text guide won't displace them. If they're all how-to tutorials, a salesy landing page won't work. Match the format, depth, and angle of what's already working.

Cover the topic properly

Google's Helpful Content system rewards content that demonstrates real expertise and fully answers the searcher's question. Thin pages, pages that make you click through multiple articles to get the full answer, and pages that exist primarily to rank rather than to help — all of these underperform and are actively being pushed down.

Write the page a subject-matter expert would write. Include the nuances, the exceptions, the "it depends" answers. Don't pad it out — but don't leave obvious sub-questions unanswered either.

Use related terms naturally

Google understands semantic relationships between words. A page about "apple pie recipe" that also includes words like "cinnamon", "pastry", "bake", and "filling" reads as more authoritative than one that just repeats "apple pie recipe" fifteen times. Use the vocabulary of the topic naturally — don't stuff keywords, but don't sterilise your writing to avoid them either.

Keep content fresh where it matters

For evergreen content, freshness matters less. For queries with a "freshness" signal — news, current events, product comparisons, year-specific guides — Google gives preference to recently updated content. Updating the date without updating the content doesn't work; Google can detect whether the content itself changed.

Images and alt text

Every image on your page should have an alt attribute — the text alternative that screen readers use and that Google reads to understand what the image shows.

Good alt text is descriptive and specific: alt="web designer working on a laptop at a standing desk" is better than alt="image" or alt="photo1". Include your keyword where it's genuinely relevant to the image — don't force it.

Beyond alt text:

  • File names: name files descriptively before uploading (reykjavik-web-design-office.jpg, not IMG_4829.jpg)
  • Format: use WebP or AVIF for smaller file sizes and faster loads. JPEG for photos, PNG for graphics with transparency, SVG for icons and logos.
  • Compression: compress images before uploading. Uncompressed images are one of the most common causes of slow page loads.
  • Dimensions: set explicit width and height attributes to prevent layout shift (a Core Web Vitals issue).
  • Lazy loading: add loading="lazy" to images below the fold so they don't block initial page load.

See the web design SEO mistakes guide for more on how design choices affect image performance.

Internal links — links from one page on your site to another — do three things for SEO:

  1. They help Google discover and crawl pages it might otherwise miss
  2. They distribute "link equity" (ranking authority) from strong pages to weaker ones
  3. They help Google understand the relationship between pages and topics on your site

Best practices:

  • Link from high-authority pages (your homepage, your most-linked blog posts) to pages you want to rank
  • Use descriptive anchor text that tells Google what the linked page is about — "see the full SEO checklist" is better than "click here"
  • Link to related content within the body of your articles — not just from menus and footers
  • Make sure every page is reachable within a few clicks from the homepage
  • Avoid orphan pages — pages with no internal links pointing to them. Google may not crawl them at all.

A good internal linking structure also helps users — they find related content, spend more time on the site, and are more likely to reach a contact or conversion page.

Schema markup

Schema markup is structured data you add to your page's HTML that tells Google and AI engines exactly what your content means — not just what the words say. It's one of the highest-leverage, most commonly skipped on-page elements.

Key schema types for most businesses:

  • LocalBusiness — for service area businesses and physical locations. Enables the business details panel in search.
  • FAQPage — marks up question-and-answer sections. Eligible for FAQ rich results and directly feeds AI Overviews.
  • Article — for blog posts. Helps Google understand the author, publication date, and content type.
  • Service — describes a specific service you offer, including pricing, area served, and description.
  • BreadcrumbList — marks up navigation breadcrumbs, showing hierarchy in the SERP URL display.

Use the free schema markup generator to create valid JSON-LD code for your site without touching the raw JSON manually. See the complete schema guide for how to implement it and test it.

Page performance

Since 2021, Core Web Vitals have been an official Google ranking signal. The three metrics that matter:

  • LCP (Largest Contentful Paint): how quickly the main visible content loads. Target: under 2.5 seconds.
  • CLS (Cumulative Layout Shift): how much the page layout shifts as it loads. Target: under 0.1.
  • INP (Interaction to Next Paint): how quickly the page responds to input. Target: under 200ms.

For most small business sites, the biggest wins come from: compressing and converting images to WebP, setting explicit image dimensions to prevent layout shift, removing unused CSS and JavaScript, and using a fast, well-configured hosting provider.

Measure your scores in Google Search Console (Core Web Vitals report), Google PageSpeed Insights, or the free web.dev measure tool. See the Core Web Vitals guide for specific fixes for each metric.

On-page SEO quick checklist

Use this before publishing any new page:

  • Title tag: unique, 50–60 characters, keyword near the front
  • Meta description: unique, 140–155 characters, matches intent, includes keyword
  • URL: short, descriptive, hyphenated, keyword included
  • H1: one per page, matches or echoes the title tag
  • H2/H3: logical structure, covers sub-topics, includes secondary keywords naturally
  • Content: matches search intent, answers the question fully, no padding
  • Images: compressed, WebP where possible, descriptive alt text, explicit dimensions
  • Internal links: links to 2–5 relevant pages, uses descriptive anchor text
  • Schema: appropriate type applied (at minimum FAQPage for blog posts, LocalBusiness for service pages)
  • Canonical: <link rel="canonical"> pointing to the page's own URL (avoids duplicate content issues)
  • Page speed: images compressed, no render-blocking resources, LCP under 2.5s

For the full technical SEO layer (indexing, crawlability, sitemap, robots.txt), see the complete SEO checklist.

Need all of this done on your site?

Every Bisyri project includes a full on-page SEO implementation — title tags, schema, performance optimisation, and internal linking built in from day one. Get in touch to find out what it would involve for your site.