South Africa  ·  Africa  ·  Global

Technology, Rooted in Humanity.

What we found when we audited our own website

We audited our own website and found six problems, most invisible in a browser. What they were, why they mattered, and how to check yours.

Written by
Ubuntu Digital Systems
Published
1 November 2026
Reading time
5 min read

Before asking anyone to let us audit their website, we audited ours. udsystems.co.za was new, it looked the way we wanted, and it worked on every phone we tried. The audit still found six real problems, and most of them could not be seen by looking at the site. This is what they were, why each one mattered, and how you can check for the same thing on your own website.

Google could read us. Plenty of other crawlers saw an empty page

Our site is built with React, which assembles each page in the browser using JavaScript. Google runs that JavaScript before it indexes a page, so Google could read us. Google's own documentation also warns that not all bots can run JavaScript — and those bots, including some used for AI search, see only the HTML the server sends. When we fetched our own pages that way, every one came back almost empty: a single line asking the visitor to enable JavaScript.

We changed the build so every page is delivered as finished HTML, and the browser picks it up from there. Nothing looks different to a visitor; to a crawler, each page now arrives with its headings, text and links.

Check yours: open a page, right-click and choose View page source. If you cannot find your own headings and paragraphs in what appears, some crawlers cannot either.

Two versions of every page title

Each page had a title and description written into its HTML, and a second, different set applied by JavaScript once the page loaded. What a search engine saw depended on how it read the page — and the second set quietly removed the structured data that tells Google what each page is.

We now set them in one place per page, so whatever reads the page gets the same answer. Check yours: compare the title in View page source with the one in the browser tab. They should match.

Pages nothing linked to

We had four pages written for people searching in particular areas, such as web design in Johannesburg. They were listed in our sitemap, but not a single link on the site pointed to them. A page that nothing links to looks, to a search engine, like a page the site itself does not think matters.

They are now linked from the service pages they belong to and from the footer.

A form that could not ask for what we sell

We had added services — mobile apps, brand identity, an ongoing SEO programme — but the enquiry form's required question, “What are you interested in?”, still offered only the old list. Someone who wanted a logo had nothing to choose, and could not move on without choosing something.

Check yours: go through your own enquiry form on a phone, the way a customer would, every time your services change.

Text that was too faint to read

Several labels and greyed-out steps were lighter than accessibility guidelines allow — in one place a little under 2 to 1, where 4.5 to 1 is the minimum for normal text. It looked refined on our screens and was hard work for anyone with weaker eyesight, or reading a phone in the sun.

Check yours: Google's free Lighthouse report, in Chrome's developer tools or through PageSpeed Insights, lists every element that fails.

Fonts from someone else's server

Our fonts loaded from Google's servers. Every first visit therefore made a request to Google before the visitor had agreed to anything, and the page waited on that request before it showed any text. We now serve the fonts from our own site.

Speed on phones is still our weakest score. That is the next piece of work, and we will write about what moves it once we know.

What we do not know yet

Whether any of this brings in more enquiries. The changes went live this week, search engines take weeks to re-read a site, and our numbers were small to begin with, as they are for any company founded this year.

We are measuring searches, clicks and enquiries separately, so that we can tell more traffic apart from more customers — and we will say which one happened.

Start a conversation

Building something similar?

Tell us what you are trying to solve and we will start by understanding the problem.