Article contents
In short: on-page SEO is everything you do on the page itself to match the query and earn the click: title, description, H1, heading structure, text, URL, images, internal links and markup. The core rule: write for the person searching and use the query naturally. Google may change titles and descriptions, so they must honestly describe the page.
What on-page SEO includes
| Element | Purpose | Where it matters |
|---|---|---|
| Title | The page name in results, a strong topic signal | Rankings and CTR |
| Description | The text under the title in results | CTR; not a direct ranking factor |
| H1 | The main heading on the page | Topic understanding, the user |
| H2–H3 | Content structure | Understanding and readability |
| Text | The answer to the query | Relevance, conversion |
| URL | The page address | Usability, snippet |
| Images | Visual content, alt text | Image search, accessibility, speed |
| Internal links | Page relationships | Indexing, context |
| Markup | A machine-readable description | Rich results |
Title: the key element
The title shows as the clickable headline in results and in the browser tab.
Rules:
- The key query near the start, but naturally, not as a word list.
- Length: aim for roughly 50–60 characters so it isn't truncated; the exact limit depends on pixel width.
- Uniqueness: each page has its own title.
- A benefit or detail: what the user gets ("from" price, free audit, speed, region), with no deception.
- Brand at the end if it fits.
Examples:
| Weak | Better |
|---|---|
| Home | SEO for Websites in Kyiv: Audit and Leads | Kyivan |
| Services | Technical SEO Audit by a Developer | Kyivan |
| Buy doors | Interior Doors: Catalogue with Delivery Across Ukraine |
Google may rewrite a title if it doesn't match the page, is too long or is stuffed. So write it as a short honest description, not a set of keywords.
Description: advertising the page in results
The description isn't a direct ranking factor, but it affects click-through.
- Aim for 140–160 characters; Google may show a different snippet if it finds it more relevant to the query.
- Answer the query and add a reason to click: a benefit, proof, a call to action.
- Unique for each page, without repeating the title.
- No promises the page doesn't deliver.
Example: "We'll find the technical reasons your site brings no leads: indexing, speed, markup. A free audit by a developer with 18 years' experience."
H1 and heading structure
- One H1 per page. It's close to the title but needn't be identical: the title is for results, the H1 for the reader.
- H2 and H3 break the content logically: each section answers a separate question.
- Don't skip levels or use headings only for styling.
- Question-style headings help both users and AI answers (see our article on content for AI search).
Page text
- Intent. The page must give what the person expects for this query (see our keyword research article).
- First screen: what it is, who it's for, what action to take. The answer to the main question comes first.
- Keywords: naturally, in headings and text, without stuffing or mechanical repetition.
- Uniqueness and usefulness: data, examples, answers to questions. Copying supplier or competitor descriptions hurts.
- Readability: short paragraphs, lists, tables.
- A call to action: a form, phone, messenger.
URL
- Short, readable, without needless parameters:
/en/services/seo-audit/. - Lowercase, hyphens between words.
- Reflects the site hierarchy.
- Stable: when you change a URL, set up a 301 (see our SEO migration article).
- On a multilingual site, separate URLs for each language.
Images
- Alt text: briefly describes the image, naturally, with no keyword stuffing. For decorative images the alt is empty.
- File names meaningful:
seo-audit-report.webp, notIMG_0231.jpg. - Format and size: WebP or AVIF, compression, sizes fitted to the container.
widthandheightattributes prevent layout shift (CLS).- Lazy-load for images below the first screen, but not for the main one (see our Core Web Vitals article).
Internal links and markup
- Add contextual links to adjacent pages with descriptive anchors (see our internal linking article).
- Breadcrumbs with structured data.
- Schema.org markup by page type: Organization, Article, Product, LocalBusiness (see our Schema.org article).
- A self-referencing
canonical, and correct Open Graph tags for social networks.
Templates by page type
| Type | Title | H1 | Main content |
|---|---|---|---|
| Service | Service + city + benefit + brand | The service offered | What's included, who it's for, process, proof, prices or how they're calculated, a form |
| Store category | Category + qualifier + delivery/price | Category name | Product grid, short useful text, subcategories |
| Product page | Brand + model + key attribute | Full product name | Description, specifications, reviews, availability, delivery |
| Article | Topic + qualifier (year, format) | The question or topic | Direct answer, sections, FAQ, author and date |
How to improve CTR using Search Console
- Performance → Pages: sort by impressions.
- Find pages with high impressions and low CTR.
- For each, review the queries it appears for.
- Rewrite the title and description for those queries, adding a benefit and a detail.
- Record the date of changes and compare CTR after 3–4 weeks.
A mini checklist before publishing
- [ ] There is a primary query and a clear intent.
- [ ] Unique title and description; the title isn't truncated.
- [ ] One H1, logical H2–H3.
- [ ] The first screen answers the query and leads to action.
- [ ] The URL is short and readable.
- [ ] Images have alt text, dimensions and are optimised.
- [ ] Internal links, breadcrumbs and markup are present.
- [ ] Self-canonical, hreflang for languages.
- [ ] The page is fast on mobile.
- [ ] There is a call to action and lead tracking.
Common mistakes
- Identical titles and descriptions across many pages.
- A title that's a comma-separated list of keywords.
- Several H1s or none.
- Headings used only for styling, with no logic.
- URLs with dates, IDs and parameters.
- Images without alt text and at original heavy size.
- Optimising for a query that doesn't match the page's intent.
- Changing a URL without redirects.
Web developer and SEO specialists. We write about technical SEO, Google Shopping and ads.