Your budget for contextual advertising is leaking, and organic growth is stalling? After scaling a catalog or migrating CMS, technical errors often surface: broken links, duplicate pages, unoptimized Core Web Vitals. Our SEO audit identifies and prioritizes these issues, saving up to 30% of your fix budget.
We've conducted audits for over 200 projects – from corporate portals to marketplaces with millions of products. A typical case: an online store with 50,000 items had 1,200 duplicated titles – after fixing them, CTR increased by 15%. The audit pays for itself through increased organic traffic within 3–6 months.
What Technical Issues Does an SEO Audit Uncover?
Site crawling is the first step. We crawl the site with a crawler (Screaming Frog, Sitebulb, or our own Python-based tool) and collect all URLs, checking status codes, duplicates, erroneous redirects, and orphan pages.
# Quick check via sitemap
import requests
from xml.etree import ElementTree
resp = requests.get('https://mysite.ru/sitemap.xml')
tree = ElementTree.fromstring(resp.content)
ns = {'sm': 'http://www.sitemaps.org/schemas/sitemap/0.9'}
urls = [loc.text for loc in tree.findall('.//sm:loc', ns)]
print(f'URLs in sitemap: {len(urls)}')
# Status code check
errors = []
for url in urls[:200]: # first 200 for demo
r = requests.head(url, allow_redirects=True, timeout=5)
if r.status_code not in (200, 301, 302):
errors.append({'url': url, 'status': r.status_code})
print(f'Erroneous URLs: {len(errors)}')
Checked technical parameters:
| Parameter | What we look for | Criticality |
|---|---|---|
| Status codes | 4xx in sitemap, 5xx in navigation | High |
| Duplicate pages | Without canonical, ?sort=, ?page= |
High |
| robots.txt | Blocking of necessary sections | High |
| HTTPS | Mixed content, www/http redirects | High |
| Speed (Core Web Vitals) | LCP, INP, CLS | High |
| Canonical | Missing or incorrect self-canonical | Medium |
| Hreflang | Duplicate/incorrect language codes | Medium |
| Structured data | Schema.org errors | Medium |
How to Configure robots.txt to Avoid Indexation Errors
- Ensure sitemap is specified in robots.txt:
Sitemap: https://mysite.ru/sitemap.xml. - Verify that admin and cgi-bin sections are blocked.
- For AJAX sites, add
Disallow: /ajax/if not needed for search. - Use
Allow: /afterDisallowfor partial allowance.
# Check robots.txt accessibility
curl -s https://mysite.ru/robots.txt
# Check indexation in Google
# site:mysite.ru – how many pages in index
# site:mysite.ru/admin – no blocked sections in index
Sitemap should contain only 200-status pages, no noindex, and correct <lastmod>. Size up to 50,000 URLs or 50 MB per file.
Checking Meta Tags and Headings
On-page analysis includes checking title and meta description:
# Bulk title/description check
from bs4 import BeautifulSoup
issues = []
for url in urls:
soup = BeautifulSoup(requests.get(url).text, 'html.parser')
title = soup.find('title')
desc = soup.find('meta', {'name': 'description'})
t_len = len(title.text) if title else 0
d_len = len(desc['content']) if desc and desc.get('content') else 0
if t_len == 0: issues.append((url, 'no_title'))
elif t_len > 70: issues.append((url, f'title_too_long:{t_len}'))
if d_len == 0: issues.append((url, 'no_description'))
elif d_len > 160: issues.append((url, f'desc_too_long:{d_len}'))
Norms: title 50–70 characters, description 120–160. Template descriptions cause duplication issues. Headings H1–H6: one H1 with the key query, H2–H3 structure content without skipping order. Content: we check for thin content (<300 words), duplicates from supplier feeds, pagination pages with rel="next"/"prev" or canonical to first page.
Internal Linking and Structured Data
Good internal link structure distributes page weight and helps crawlers. Issues:
- Orphan pages – pages with no inbound internal links (crawler won't find them)
- Click depth > 3 for important pages
- Broken internal links – links to deleted/redirected pages
-- For SQL-based CMS: find pages with no inbound links
SELECT p.url
FROM pages p
LEFT JOIN internal_links il ON il.target_url = p.url
WHERE il.id IS NULL AND p.status = 'published'
Structured data: we validate schema.org using Google Rich Results Test. Supported types: Product, Article, BreadcrumbList, FAQPage, Review, LocalBusiness, Event.
What's Included in the Audit?
As a result, you receive:
- Full crawl data dump (CSV/Excel)
- Prioritized issue list with effort estimates and expected impact
- Documentation on technical fixes for developers (with root cause and solution)
- Engineer consultation on priority fixes
- Quality guarantee: if new issues are found after fixes, a follow-up mini-audit is free
How Core Web Vitals Affect Rankings
Google uses CrUX data (field data) for ranking. According to Google Search Central guidelines, LCP should be under 2.5 seconds. If your competitor's LCP < 2.5s and yours > 4s, this is a serious factor when everything else is equal. Checking Search Console shows URL percentages in Good/Needs improvement/Poor. In the audit, we provide specific causes: unoptimized images, heavy JavaScript, slow server response.
More about Core Web Vitals metrics
- LCP (Largest Contentful Paint) – load time of main content. Affects perceived speed.
- INP (Interaction to Next Paint) – responsiveness during interaction. Measures delays after click/tap.
- CLS (Cumulative Layout Shift) – visual stability. Prevents unexpected element shifts.
Additionally: Core Web Vitals (Wikipedia)
Link Profile (Basic Level)
Within the technical audit, we check:
- Index in Ahrefs/Semrush – identify toxic links from spammy domains
- Anchor text distribution – over-optimization (>60% commercial anchors)
- Lost links to deleted pages without 301 redirect
Report Structure
The audit is presented as a structured table with priorities:
| Issue | Pages | Priority | Effort | Expected Impact |
|---|---|---|---|---|
| Duplicate titles | 340 | Critical | 2 days | CTR boost in SERPs |
| Missing canonical on pagination pages | 180 | High | 0.5 day | Eliminate duplicates |
| LCP > 4s on mobile | All pages | High | 3-5 days | Rankings increase |
| Orphan pages in catalog | 52 | Medium | 1 day | Improved crawling |
| Missing schema.org Product | 1,200 products | Medium | 2 days | Rich snippets |
We also provide:
- Full crawl data dump (CSV/Excel)
- Fix recommendations with priorities (P0–P3)
- Documentation on technical fixes for developers
- Quality guarantee: if new issues are found after fixes, a follow-up mini-audit is free
Audit Timeline
Technical crawling, on-page analysis, structured data, CWV, prioritized report for a site of 1,000–5,000 URLs: 3–4 days. Large eCommerce (50,000+ SKU): 5–7 days. We work with projects of any scale – from landing pages to marketplaces.
Contact us for a preliminary assessment of your site – we'll send a demo report based on typical issues in your niche. Ongoing monitoring is more effective than a one-off audit: we offer subscription support with monthly checks and adjustments. Order an audit and get an engineer consultation on priority fixes.







