oonie.co.za — DIY SEO Tools
How well is your
How well is your
website actually
doing?
A 50-point checklist for SA business owners. Tick what you've done. See your score. Find out what needs fixing — and whether you want to fix it yourself.
01
Technical
0 / 12
-
Your site loads in under 3 seconds on a standard South African mobile connection Test at pagespeed.web.dev. Use Throttled 4G for a realistic SA mobile result. If your mobile score is below 50, your site is losing visitors before they see your content. Slow hosting, oversized images, and render-blocking scripts are the usual culprits. Why?
-
Your site runs on HTTPS and there are no mixed content warnings Check your URL bar — it should show a padlock. Then open Chrome DevTools (F12 → Console) and look for "mixed content" errors. These appear when a page loads over HTTPS but pulls in images or scripts over HTTP. Google uses HTTPS as a ranking signal and Chrome warns visitors on non-secure pages. Why?
-
Your site has a valid XML sitemap submitted to Google Search Console Your sitemap is usually at yoursite.co.za/sitemap.xml or /sitemap_index.xml. Log into Google Search Console → Sitemaps and submit it. Without this, Google finds your pages through links alone — which is slower and less reliable. Why?
-
Your robots.txt file is not accidentally blocking Google from crawling your site Go to yoursite.co.za/robots.txt. If it says "Disallow: /" under Googlebot or User-agent: *, Google cannot index your site at all. This is a common mistake after site migrations or staging-to-live launches. Check it in Search Console's robots.txt tester. Why?
-
Your site resolves consistently to one URL version — www or non-www, not both independently Try both http://yoursite.co.za and https://www.yoursite.co.za. Both should redirect to the same version. If both work independently, Google may split authority between two versions of every page. Fix with a 301 redirect at server level. Why?
-
You have Google Search Console set up and verified for your domain Search Console is free and shows which search terms are driving traffic, which pages are indexed, and where Google hits crawl errors. Without it you're flying blind. Set up at search.google.com/search-console — verify both www and non-www versions. Why?
-
You have Google Analytics 4 (GA4) installed and actively collecting data Universal Analytics stopped collecting data in July 2023. If you haven't migrated to GA4, you have no website data. Install via Google Tag Manager (recommended) or by adding the G- tag directly. Verify it's working in GA4 → Reports → Realtime. Why?
-
There are no broken links (404 errors) on your main pages Use Screaming Frog (free up to 500 URLs) or Search Console's Coverage report to find 404s. Broken internal links waste crawl budget and damage user experience. Broken links from your homepage or nav are especially harmful — redirect them with a 301 to the correct page. Why?
-
Your site uses structured data markup for your business type (LocalBusiness, FAQ, Article, etc.) Schema markup tells Google exactly what your content is — a local business, a product, a FAQ. It can unlock rich results in search (star ratings, FAQ dropdowns, business hours). Test what you have at search.google.com/test/rich-results. For most SA service businesses, LocalBusiness schema is the minimum. Why?
-
All images have descriptive alt text — not "image001.jpg" or left blank Alt text describes an image to Google and to screen readers. "Cape Town accountant office interior" is useful. "IMG_4521.jpg" is not. Check it in Chrome: right-click any image → Inspect → look for the alt="" attribute. It's also an accessibility requirement under South African web accessibility guidelines. Why?
-
No important pages are accidentally set to "noindex" Noindex tells Google not to include a page in search results. It's useful for thank-you pages and login screens — but often accidentally applied to important pages during development and never removed. In Search Console → Coverage, check the "Excluded" section for "Excluded by noindex tag" errors. Why?
-
Your Core Web Vitals pass in Google Search Console — LCP, INP, and CLS all show "Good" Core Web Vitals are Google's page experience metrics. LCP (Largest Contentful Paint) measures load speed. INP (Interaction to Next Paint) measures responsiveness. CLS (Cumulative Layout Shift) measures visual stability. Find scores under Search Console → Experience → Core Web Vitals. Failing pages rank at a disadvantage. Why?
02
On-Page
0 / 13
-
Every page has a unique title tag under 60 characters that includes the primary keyword for that page The title tag is the blue headline in Google results. It's one of the strongest on-page signals Google uses. Each page needs a different title — "Home | Your Business Name" on five pages doesn't cut it. Under 60 characters means it won't get truncated. Check all your titles in Screaming Frog or the Yoast SEO plugin. Why?
-
Every page has a unique meta description between 120–158 characters with a specific reason to click Meta descriptions don't directly affect rankings but they affect click-through rate. "Cape Town-based tax consultant | SARS compliance, provisional tax, and small business accounting" beats "Welcome to our website." Google sometimes ignores them and writes their own — but giving Google a good one increases the odds it uses yours. Why?
-
Each page has exactly one H1 tag that includes the page's primary keyword The H1 is the main heading of a page. One per page — not zero, not three. In WordPress, this is usually your page title. Check it in Chrome: Ctrl+U to view source, then Ctrl+F and search for "h1". The H1 and title tag don't need to be identical but should closely reflect the same intent. Why?
-
Your URLs are descriptive, lowercase, and use hyphens — not underscores or query parameters yoursite.co.za/services/tax-consulting is correct. yoursite.co.za/page?id=47 is not. yoursite.co.za/Services/Tax_Consulting creates duplicate content issues. Short, readable URLs that include the page topic are preferred by Google and users alike. Changing URLs later requires 301 redirects — sort this out early. Why?
-
Your homepage clearly states what you do, who you do it for, and where — visible in the first screen without scrolling If your homepage hero says "Welcome to excellence" and nothing else, Google doesn't know what you do. A Johannesburg visitor searching "HR consultant Sandton" needs to see those words on your page. Google uses visible text as a primary relevance signal. Be specific above the fold. Why?
-
Each service or product has its own dedicated page — not all services listed as bullets on one page If you do bookkeeping, tax consulting, and payroll, each needs its own URL. A single "Services" page with bullet points gives Google one page to rank for all three — which means it competes with itself and wins at none. Separate pages let you build targeted content, internal links, and backlinks around each service. Why?
-
Your important pages contain at least 300 words of original, specific body content — not padded filler Thin pages are harder to rank. 300 words is a floor, not a target. A service page for a Cape Town attorney should explain what the service involves, who it's for, the process, and expected outcomes. That's naturally 500–800 words. More importantly, it actually answers questions — which is what Google is trying to do. Why?
-
Related pages are connected by internal links — service pages link to relevant blog posts and vice versa Internal links pass authority around your site and help Google understand which pages are related. A post about "preparing for a SARS audit" should link to your tax consulting service page. A flat site where no pages link to each other leaves Google without a map of what you do. Why?
-
Anchor text for internal links is descriptive — "view our tax packages" not "click here" The text you use as a hyperlink tells Google what the linked page is about. "Click here" tells Google nothing. "SARS provisional tax guide" tells Google the destination is about provisional tax. Audit your pages and replace all generic anchor text with something that describes where the link actually goes. Why?
-
Images are compressed and served in WebP format — not raw JPEGs exported from a camera or phone A photo straight from a DSLR can be 8MB. Properly optimised for web it should be under 150KB. WebP format is smaller than JPEG at similar quality and is supported by all modern browsers. Use Squoosh.app to convert and compress, or install Shortpixel in WordPress. Large images are the most common cause of slow page load times. Why?
-
Your contact page includes your full physical address, phone number, and email as plain text — not embedded in an image Google reads text, not images. If your address is in a graphic, Google can't use it to verify your location. Plain text NAP (Name, Address, Phone) on your contact page — and ideally your footer — is a basic local SEO signal. It also needs to match exactly what's on your Google Business Profile. Why?
-
Your 404 page exists, has your branding, and links back to your homepage and main sections Every site gets broken links eventually. A blank server error page loses the visitor permanently. A 404 with your navigation, a search bar, and links to main services keeps them on your site. Check yours by visiting yoursite.co.za/this-page-does-not-exist. Why?
-
Canonical tags are set correctly on pages with similar or duplicate content A canonical tag tells Google "this is the preferred version of this page." It matters when you have multiple URLs showing the same content — filtered pages, print versions, or pages accessible with and without a trailing slash. Without canonicals, Google may split authority between duplicate URLs. Check in page source: look for rel="canonical". Why?
03
Content
0 / 10
-
You have identified the specific search terms your clients use — not just what you call your services internally You might call it "corporate governance advisory." Your clients search for "company secretary Cape Town." Keyword research means finding what people actually type into Google. Use Google's search suggestions, the "People also ask" box, or Google Keyword Planner to find real search terms — then build content around those. Why?
-
You have at least one piece of content that directly and specifically answers a question your clients frequently ask FAQ-type content ("How much does it cost to register a company in South Africa?", "What's the difference between a sole prop and a private company?") targets long-tail searches and is the easiest to rank for. If you answer these questions in client conversations every week, they belong on your site. Why?
-
Your content does not contain outdated facts — old SARS tax tables, superseded legislation, or incorrect current rates Google's Helpful Content guidelines evaluate whether content is accurate and current. For South African service businesses — tax, law, HR, compliance — outdated content is also a reputational and legal risk. Audit for references to legislation, tax rates, or deadlines, and flag anything that needs reviewing. Note when content was last updated. Why?
-
None of your content was bulk-generated by AI and published without human review and editing Google's Helpful Content update targets content written primarily for search engines rather than people. Mass-published AI content that hasn't been reviewed, personalised, or verified is exactly what it catches. AI-assisted content that's been properly edited and adds genuine insight is fine — the "spray and pray" approach is what causes domain-wide ranking drops. Why?
-
Your content demonstrates real expertise — includes specific examples, concrete scenarios, or original analysis rather than generic statements Google's E-E-A-T framework (Experience, Expertise, Authoritativeness, Trust) rewards content that shows the author actually knows what they're talking about. "Contractors should be aware of tax obligations" is generic. Walking through a specific contractor scenario with reference to South African tax law demonstrates expertise. The difference is obvious to both Google and readers. Why?
-
Each blog post or article targets one search intent — informational, navigational, or transactional — not a confusing mix A page for "what is a living annuity" (informational) shouldn't have a hard sales pitch halfway through — the searcher isn't ready to buy. Conversely, "living annuity advisor Pretoria" (transactional) needs a clear CTA, not a 2000-word explainer. Match the page content to what the searcher is trying to do. Why?
-
Your blog posts are dated and you have published at least one new piece of content in the past 90 days A blog last updated in 2021 tells both Google and potential clients that this business may no longer be active. Frequency matters less than usefulness — even one substantive post per month is enough to maintain freshness signals for most small SA business sites. Undated posts look like you're hiding something. Why?
-
You have an About page that names the people behind the business and explains their relevant credentials Google's Quality Rater Guidelines treat anonymous content as lower quality — especially for anything involving money, health, or legal advice (YMYL: Your Money or Your Life). An About page with real names, credentials, and a photo improves E-E-A-T. It also converts better: people hire people, not logos. Why?
-
Your site does not have near-duplicate pages — e.g. the same service page copied for multiple cities with only the city name swapped Creating 50 identical pages for "accountant in [city]" with only the location word changed used to work. It no longer does. Google classifies these as low-quality doorway pages and can penalise the whole domain. If you serve multiple areas, create genuinely different content for each location — different testimonials, local context, or team members. Why?
-
Your calls to action are specific — "Book a 30-minute consultation" not "Get in touch" Vague CTAs reduce click-through rates — a behavioural signal Google factors in over time. "Get in touch" tells the visitor nothing about what happens next. "Book a free 30-minute audit call" tells them exactly what they'll get and how much time it takes. Specificity reduces friction and increases conversions. Why?
04
Off-Page & Authority
0 / 8
-
Your site has at least a handful of backlinks from relevant, legitimate South African websites A backlink is a link from another site to yours — essentially a vote of trust. Check your current backlinks in Ahrefs' free backlink checker or Search Console → Links. Links from SA industry associations, directories like SAYellow or 411.co.za, and local media carry more weight than generic overseas link directories. Why?
-
You have no toxic or spammy backlinks pointing to your site — from link farms, unrelated foreign directories, or adult sites A bad backlink profile can actively hurt rankings — or in serious cases trigger a manual penalty. Check in Search Console → Links → Top linking sites. Look for gibberish domains, irrelevant foreign sites, or hundreds of links from a single domain. If you find serious spam, use Google's Disavow tool carefully — it's not something to use casually. Why?
-
Your business is listed in major SA online directories with consistent NAP — the same Name, Address, and Phone number across all of them Consistency in how your business details appear across the web strengthens local SEO trust signals. Check Cylex, 411.co.za, SAYellow, and any industry-specific directories against what's on your website and Google Business Profile. Even small inconsistencies ("St" vs "Street", "Cape Town" vs "CPT") can dilute signals. Why?
-
You actively respond to all Google reviews — positive and negative Review responses signal active business management to Google and to potential clients. Unanswered negative reviews suggest indifference. Responding doesn't have to be lengthy — it just has to be genuine. Google also uses review content as a local relevance signal; reviews that mention your services and location carry extra weight. Why?
-
Your social media profiles link directly to your website — not a Linktree or generic landing page as the primary URL Social links form part of your brand's online footprint and help Google verify a legitimate business exists. Using a Linktree instead of your actual domain as your primary web presence dilutes any signal these links pass. Update your LinkedIn, Facebook, and Instagram bios to point directly to yoursite.co.za. Why?
-
You have a deliberate strategy for earning backlinks — writing for industry publications, speaking at events, or publishing original SA-specific research Backlinks don't appear without effort. The most sustainable approach for professional services firms is becoming a source: write a column for Accountingweb SA, speak at a Cape Chamber of Commerce event, publish original salary benchmarks for your industry. These generate links naturally because you're giving people a reason to reference your work. Why?
-
You have not purchased bulk backlinks from a link-selling service Paid link schemes violate Google's guidelines. If you've ever bought "500 high DA backlinks for $49," check your link profile now and consider using the Disavow tool. Google has become very good at identifying unnatural link patterns. Short-term ranking gains from bought links typically result in algorithmic or manual penalties within months. Why?
-
Searching your brand name on Google.co.za returns your website as the first result Test this in an incognito browser on Google.co.za — not Google.com. If your own business name doesn't return your site first, something is wrong: a serious authority problem, a penalty, or a name conflict with another brand. This is the most basic brand health check there is. Why?
05
Local & SA-Specific
0 / 7
-
You have a fully completed Google Business Profile — correct address, hours, primary category, and at least 5 photos Google Business Profile is the single most important local SEO asset for any SA business serving a geographic area. An incomplete profile means you're invisible in the local map pack — the three businesses shown above organic results for searches like "attorney Durban North." Go to business.google.com and complete every section. Why?
-
Your Google Business Profile primary category is the most specific available match for your service — not a broad parent category GBP has very specific category options. "Business Management Consultant" and "Management Consulting Firm" are different categories with different local visibility patterns. Don't choose a broad parent category when a specific one exists. Your primary category is the most important GBP field for local rankings — check it at business.google.com → Edit Profile → Business category. Why?
-
You have at least 10 Google reviews with an average rating of 4.0 or higher Both volume and rating affect local pack rankings. In South Africa, review volume for professional services is lower than in the US or UK — which means even 15–20 solid reviews can give you a meaningful local advantage. Have a simple process for asking satisfied clients. A direct link to your review page makes it frictionless. Why?
-
Your site is hosted on a South African server or uses a CDN with a Johannesburg node — not exclusively on offshore infrastructure Server location is a minor but real local relevance signal. More practically, SA-hosted or CDN-distributed sites load faster for SA visitors — which directly impacts Core Web Vitals scores. Local providers include Hetzner, RSAWEB, Afrihost, and Xneelo. If you're on Siteground or Bluehost in the US, latency to SA users is measurable and affects bounce rate. Why?
-
Your content uses South African English spelling and SA-specific terminology — not American or British equivalents where SA usage differs South African users search in South African English. "Cheque account" not "check account." "Petrol" not "gas." "SARS" and "CIPC" not "IRS" and "Companies House." Content clearly adapted from American sources signals to SA readers that it wasn't written for them — which affects trust and time on page, both of which Google notices. Why?
-
Your site uses a .co.za domain — or has a .co.za pointing to and redirecting to your primary domain A .co.za ccTLD sends a strong South African local relevance signal to Google. If your primary domain is a .com or .net, you're relying on other signals to establish SA relevance. At minimum, register the .co.za equivalent and 301 redirect it to your main site. Also set your geographic target in Search Console → Settings → International Targeting. Why?
-
Your website has a POPIA-compliant privacy policy and a cookie consent mechanism where required The Protection of Personal Information Act (POPIA) requires SA websites that collect personal data to have a compliant privacy policy. Where cookies are used for tracking, a consent mechanism is required. A missing or non-compliant policy is a trust signal that Google's quality raters assess — and it keeps you on the right side of the Information Regulator. Why?
Your Score
0%
Tick items above to see your result
Work through the checklist and your score updates automatically.