I manage 44 websites. Not for clients: these are mine. Out of the roughly 217 million sites that are actually active on the web, that's a tiny slice, but it's enough to see patterns a single-site owner never gets the sample size to spot. Different niches, different stacks, different stages of growth. Some get 30,000 impressions a month. Some get 12. I run them all through Google Search Console, fix what's broken, and watch what happens.
Most SEO content you'll read comes from agencies showing their best case study. One site, cherry-picked metrics, before-and-after screenshots that conveniently leave out the 6 months of flat growth in between.
This is different. This is what the data actually looks like when you're managing a portfolio of sites: the patterns that repeat, the mistakes that compound, and the fixes that move numbers.
sites managed
total pages across the portfolio
niches covered
The Same Three Issues Appeared Everywhere
After auditing all 44 sites through Google Search Console, the same problems surfaced over and over. Not obscure technical edge cases: basic configuration issues silently bleeding ranking power across every site.
Canonical URL splitting affected 23 of 44 sites. Title tag truncation was killing click-through rates on 8 sites with programmatic content. Index bloat, Google crawling and indexing pages that had no business being in search results, affected 31 sites.
These aren't the kind of issues a standard SEO audit catches. They only become visible when you're looking at the same patterns across dozens of properties simultaneously.
Portfolio audit
| Portfolio audit | Value |
|---|---|
| Canonical URL splitting | 23 sites |
| Title tag truncation | 8 sites |
| Index bloat | 31 sites |
Source: Sunny Patel, 44-site Search Console audit
Finding 1: A Single Character Was Splitting Rankings in Half
One of my sites, a consultancy, had a page targeting "SEO consultant Reading" with 5,516 total impressions over 28 days. Respectable for a local service keyword. Except those impressions weren't on one page. They were split across two:
/services/seo-consultant-reading: 3,529 impressions/services/seo-consultant-reading/: 1,987 impressions
The only difference? A trailing slash.
Real data
| Real data | Value |
|---|---|
| Non-slash URL | 3,529 impressions |
| Trailing-slash URL | 1,987 impressions |
| Consolidated (after fix) | 5,516 impressions |
Source: Sunny Patel, SEO consultant Reading page, Search Console data
The site's configuration had trailingSlash: true, meaning every URL should end with a slash. But 872 internal links across 102 content files pointed to the non-trailing-slash version. Google followed those links, discovered both URLs, and indexed them separately.
Each version accumulated its own impressions, its own click data, and its own ranking signals. Instead of one strong page, there were two weak ones competing against each other.
Each version accumulated its own impressions, its own click data, and its own ranking signals. Instead of one strong page, there were two weak ones competing against each other.
Why This Matters for Multi-Site Owners
I found this same issue on 23 of 44 sites. The configuration varied: some had Astro's trailingSlash: 'always' missing, others had Next.js routing inconsistencies, others had WordPress permalink settings conflicting with CDN cache rules.
The fix was different for each stack, but the pattern was identical: internal links not matching the canonical URL format, causing Google to index duplicate versions.
If you manage multiple websites, check this right now. Open Google Search Console, go to Pages, and look for "Duplicate, Google chose different canonical than user." That status means Google disagreed with the canonical you set, which is the actual fault worth chasing. ("Alternate page with proper canonical tag" isn't a problem on its own: it usually means Google found the duplicate and correctly consolidated it to the canonical you specified.) If you see the mismatch status, you likely have the same problem.
After fixing all 872 links on the consultancy site and deploying, alongside the page-pruning work covered in Finding 3, the average position improved from 31.6 to 25.6 within 10 days. That's a 6-position jump from the two fixes landing together: no new content, no backlinks, no redesign, just internal links pointing at the right URLs and a cleaner index.
Finding 2: 1,546 Page-One Rankings With Almost Zero Clicks
One of the portfolio sites, a UK salary data platform, was generating 7,733 impressions per month across 2,376 indexed pages. Of those, 1,546 pages were ranking on Google's first page. The click-through rate? 0.21%.
Nearly 1,600 pages on page one of Google, and almost nobody was clicking.
Pages ranking on Google's first page across the salary site
Click-through rate on those 1,546 first-page pages
Total indexed pages on the site
The problem was the titles. The site pulled job titles directly from ONS (Office for National Statistics) data. Official government job classifications are verbose:
- "Programmers and software development professionals"
- "Advertising accounts managers and creative directors"
- "Production managers and directors in mining and energy"
Google truncates title tags at roughly 55-60 characters. These ONS titles run 50-54 characters on their own; add "Salary" and the site's brand suffix, and the complete generated title ran well past the display limit. In search results, users saw:
Programmers and software development professionals Salary G...
Nobody clicks on a truncated, bureaucratic title. They scroll past it to the result that says "Software Developer Salary UK."
The Template-Level Fix
The shared template caused the problem across all 2,376 pages: every one generated its title from the same template, and every title used the raw ONS classification.
The fix was a single mapping function, shortOccName(), that converted 40+ verbose ONS titles to what people actually search:
| ONS Classification | Friendly Title |
|---|---|
| Programmers and software development professionals | Software Developers |
| Advertising accounts managers and creative directors | Advertising Directors |
| Cleaners and domestics | Cleaners |
| Midwifery nurses | Nurses |
| Metal working machine operatives | Machine Operators |
One template change. 2,376 pages updated instantly. Within 5 days of deployment, daily impressions jumped from 383 to 898, a 134% increase, as Google discovered the freshly updated pages.
The CTR improvement will take longer to show (Google needs to recrawl and re-render each page), but the early signals are strong. More pages are being discovered, and the new titles fit within Google's display limit.
Why This Matters for Multi-Site Owners
If any of your portfolio companies use programmatic content, such as product pages, location pages, category pages, or job listings, the titles are probably generated from a template. And if that template pulls from a database field that wasn't designed for search results, your titles are likely getting truncated.
One template fix can affect thousands of pages simultaneously. That's the leverage of portfolio-level technical SEO.
Finding 3: Removing 80+ Pages Improved Everything
The consultancy site had 178 pages indexed in Google. For a site with maybe 30 pages of genuine content, that's a problem. Where were the extra 148 pages coming from?
- 62 tag pages: auto-generated by the CMS, each one a thin list page with 1-3 posts
- 18 remote city pages: Birmingham, Manchester, York, targeting cities where the consultant doesn't operate, all ranking at positions 35-72 with zero clicks
- 7+ ghost URLs: old paths from a previous site structure that Google still had in its index
None of these pages were helping. They were actively hurting.
Page pruning
What was removed, and what changed
- Tag pages (62), noindexed. Auto-generated by the CMS, thin list pages with 1-3 posts each.
- City pages (18), noindexed. Birmingham, Manchester, York and other cities the consultant doesn't operate in: 0 clicks, positions 35-72.
- Ghost URLs (7+), removed. Duplicate canonicals left over from a previous site structure.
- Indexed pages: 178 to roughly 95, a 47% reduction in bloat.
- Average position: 31.6 to 25.6. Homepage: 5.3 to 3.8.
Google's crawl budget focused on around 95 strong pages instead of 178 mixed signals. Positions improved in 10 days.
Every low-quality page in Google's index dilutes your site's overall quality signal. Google's crawl budget gets spent on pages that don't convert. Ranking signals get spread thin across URLs that don't deserve them.
The fix was surgical:
- Noindexed all 62 tag pages and removed them from the sitemap
- Noindexed 18 remote city pages with zero clicks
- Removed ghost URLs from the sitemap and set proper canonicals
Within 10 days, the same window as the internal-link fix in Finding 1, average position across the site improved from 31.6 to 25.6. The two changes landed together on this site, so that gain reflects both the consolidated canonicals and the cleaner index, not pruning alone. The homepage moved from position 5.3 to 3.8. Impressions per day dropped (expected, since those 80 pages were generating impressions), but the remaining pages started ranking higher.
The Counterintuitive Truth
Most site owners think more pages = more chances to rank. The opposite is usually true. Google interprets a site full of thin, low-value pages as lower quality overall. Removing the weak pages sends a signal: everything remaining is worth crawling.
This is especially relevant for portfolio owners. If you have 5 sites and each one has 50+ auto-generated pages that add no value, you're diluting authority across 250 pages of dead weight. Prune those, and your strong pages climb.
What Portfolio Owners Should Take From This
These three findings, canonical splitting, title truncation, and index bloat, weren't unique to one site. They appeared across nearly every site in the portfolio, in different forms, on different stacks.
The common thread: they're invisible unless you're looking at the data. Your site looks fine. It loads fast. The content reads well. But in Google Search Console, impressions are being split, clicks are being lost, and crawl budget is being wasted on pages that don't matter.
If you manage multiple businesses or a portfolio of websites, these issues are almost certainly present. They compound across sites. And fixing them at the portfolio level, systematically, across all properties, means one verified correction applies everywhere the same template or config is used, instead of re-diagnosing the same problem site by site.
Update: Where the Traffic Actually Concentrates
Four sites generate 79% of organic clicks across the roughly 100 properties I now track (the 44 audited above, plus launches since): deadhangs.com (2,587 clicks/28 days), chargefinder.uk (2,198), waterhard.uk (1,682) and noisecheck.uk (1,676). That's 8,143 of the portfolio's 10,300 clicks in the 28 days to 9 September 2026. Fifth place is colourlabelprinter at 282.
Traffic concentration
| Traffic concentration | Value |
|---|---|
| deadhangs.com | 2,587 |
| chargefinder.uk | 2,198 |
| waterhard.uk | 1,682 |
| noisecheck.uk | 1,676 |
| colourlabelprinter | 282 |
Source: Sunny Patel, Search Console, 28 days to 9 September 2026
54 properties returned zero clicks in the same window, and roughly 50 more returned under 10.
Only two revenue lines are verified: bestvibrationplates.co.uk at roughly £46/month from 138 clicks, and a Merch by Amazon account at roughly £51/month net. The four sites carrying 79% of the clicks have no verified revenue.
What's Still Maturing
Some of the fixes above are too recent for definitive results. The trailing slash consolidation needs 2-4 more weeks for Google to fully resolve the duplicate canonicals. The wagearea title fix needs recrawling across 2,376 pages. The page pruning data will mature over the next 30 days.
Figures are 28 days to 9 September 2026. Next pull: December 2026.
If you'd like me to run a similar analysis across your portfolio, get in touch. This is the same pull I run monthly across the portfolio.
How was this data put together?
The three findings above come from a Google Search Console audit across all 44 sites I owned at the time, using the API to pull page-level impressions, clicks and position data per property. The traffic-concentration update pulled 28 days of Search Console clicks (11 August to 9 September 2026) across the roughly 100 properties now under management, plus a separate check of the two revenue lines against their own reporting (Amazon Associates dashboard and Merch by Amazon payment reports).
Evidence limits: this is my own portfolio data, not independently audited by a third party. Site names and numbers are reported as they appear in my own Search Console and revenue accounts. No client sites are included in any of the figures above.
Related reading:




