---
title: "Singapore Business Websites: A Study of 300 | IVIX Studio"
description: "We tested 300 Singapore business websites drawn at random. One in five listed websites no longer works, and 44% of the rest give WhatsApp no picture to show."
url: "https://ivixstudio.com/blog/singapore-local-business-websites-study"
last_updated: "2026-09-18"
---
## Key takeaways

- **One in five listed websites (21%) no longer works.** For most of those, the domain itself no longer exists, and two now lead to gambling spam.
- **44% of the working websites give WhatsApp no picture to show** when someone shares their link, and 18% have none of the preview tags at all.
- **A quarter give Google no description** to print under their name in search results.
- **The median home page weighs 4.1 MB,** and 16% weigh more than 10 MB.
- **On Google's slow-phone test, only 3% show their main content within 2.5 seconds.** Real visitors do better: 71% of the websites busy enough to measure pass Google's Core Web Vitals.
- **40% run on WordPress,** and more than half of those were assembled with the same page builder.

Most advice about business websites starts from an opinion. We wanted numbers, so we went and got some.

We took every business in Singapore that OpenStreetMap lists with a website, removed the chains, the multinationals and the government, and put what was left in random order: restaurants, cafes and bars, shops, and services such as clinics, salons, gyms and preschools. Then we visited each website the way a customer's phone would.

It took 395 attempts to find 300 websites we could test. That turned out to be the first finding.

No business is named here. The point is the pattern, not any one shop's home page.

## How the websites were chosen

We did not pick them. OpenStreetMap, the public map that volunteers maintain, lists 2,444 Singapore restaurants, shops and service businesses with a website. We dropped anything tagged as a chain brand, any website that appears at four or more locations, and government, school and society addresses. That left 1,519 websites.

A fixed random draw put them in order within three groups, and we worked down each list until 100 websites in that group had loaded and could be tested. Multinationals, listed companies and hotels that slipped through the rules were removed by hand as the draw reached them, and each removal is recorded with its reason. When a website failed, the next one in the draw took its place, so nobody chose the replacements either.

The full method, and what it cannot tell you, is at the end.

## One in five listed websites no longer works

Once we had our 300, we kept going down the list to make this number firmer. Of the 482 websites we tried in the end:

<!-- chart:reachability -->
<table class="chart">
<caption>What happened at each of the 482 websites we tried</caption>
<tbody>
<tr class="is-muted"><th scope="row">Loaded normally</th><td class="chart-bar"><span style="--w:100.0%" aria-hidden="true"></span></td><td class="chart-value">373 · 77%</td></tr>
<tr><th scope="row">The domain no longer exists or points nowhere</th><td class="chart-bar"><span style="--w:16.1%" aria-hidden="true"></span></td><td class="chart-value">60 · 12%</td></tr>
<tr><th scope="row">Error page, or no answer twice</th><td class="chart-bar"><span style="--w:5.1%" aria-hidden="true"></span></td><td class="chart-value">19 · 4%</td></tr>
<tr class="is-muted"><th scope="row">Refused our automated visit</th><td class="chart-bar"><span style="--w:2.4%" aria-hidden="true"></span></td><td class="chart-value">9 · 2%</td></tr>
<tr><th scope="row">A “domain for sale” page</th><td class="chart-bar"><span style="--w:1.9%" aria-hidden="true"></span></td><td class="chart-value">7 · 1.5%</td></tr>
<tr><th scope="row">A certificate or security error</th><td class="chart-bar"><span style="--w:1.6%" aria-hidden="true"></span></td><td class="chart-value">6 · 1.2%</td></tr>
<tr><th scope="row">Now leads to someone else’s website, or to spam</th><td class="chart-bar"><span style="--w:1.3%" aria-hidden="true"></span></td><td class="chart-value">5 · 1.0%</td></tr>
<tr><th scope="row">A suspended account or an unfinished page</th><td class="chart-bar"><span style="--w:0.8%" aria-hidden="true"></span></td><td class="chart-value">3 · 0.6%</td></tr>
</tbody>
<tfoot><tr><td colspan="3">Grey rows are websites we count as working. The nine that refused us most likely have a bot filter, not a fault.</td></tr></tfoot>
</table>
<!-- /chart:reachability -->

The nine that refused us answered with the kind of error a bot filter sends, so they are most likely working websites and are not counted as broken. The other 100, or 21%, did not work when we tried them.

We looked the 60 missing domains up again on a second DNS service, Cloudflare's, and none of them resolves. Of those, 54 no longer exist at all, and the other six return a server failure or no reply, which usually means the domain is registered but points nowhere. The six security errors were one expired certificate, three self-signed certificates and two connections that failed the secure handshake. In each case a browser stops at a warning or an error page before showing anything.

Eight more answered, but not with the business's website. Five now lead somewhere else entirely: to a recipe website, to a menu directory, to a cafe in the United States, and twice to gambling spam. Two show the hosting company's "account suspended" page, and one is an under-construction page with nothing behind it.

Some of these businesses have closed, and a map kept up by volunteers will always carry a few that have. Food and drink was the worst group, at 26% against 18% for both shops and services.

But some will still be trading, and for them a lapsed domain is the most expensive small mistake on this list. The website goes, the email addresses on that domain go with it, and every link anyone ever made to the business stops working on the same day. It often happens when the domain was registered years ago by a freelancer or a former employee, and the renewal notice goes to an inbox nobody reads. Nor does a lapsed domain stay empty. Anyone can buy it and point it anywhere, and a neglected website can be hijacked without lapsing at all. Two of the addresses on the map now lead to gambling spam.

One more number from before the test began. 5% of the listings we started from do not give a website at all: their "website" is a social media profile, a food-delivery listing, a link page such as Linktree, an old Google business.site page or a Google Drive file. Among restaurants, cafes and bars it is 7%.

## 44% give WhatsApp no picture to show

When you paste a link into WhatsApp, Telegram, iMessage or Facebook, the app fetches the page and looks for a few hidden lines that say which title, sentence and picture to show. Developers call them Open Graph tags. With a picture tag, a link arrives as a card with a photo. Without one, WhatsApp has no picture to show, and the link arrives as text.

131 of the 300 working websites had no picture set. 55 of them, 18% of the total, had none of the tags at all.

This is how a recommendation travels: somebody asks a group chat where to eat, or which vet to use, and somebody else pastes a link. A card with a photograph of the dining room gets tapped. A bare link gets scrolled past.

It is also the easiest thing in this article to check. Send your own website address to yourself on WhatsApp. If no picture arrives, you are probably in the 44%.

How the website was built decides a lot of this:

<!-- chart:preview-by-platform -->
<table class="chart">
<caption>Working websites with no link-preview picture, by platform</caption>
<tbody>
<tr><th scope="row">Squarespace (18)</th><td class="chart-bar"><span style="--w:0.0%" aria-hidden="true"></span></td><td class="chart-value">0%</td></tr>
<tr><th scope="row">Next.js (9)</th><td class="chart-bar"><span style="--w:56.0%" aria-hidden="true"></span></td><td class="chart-value">33%</td></tr>
<tr><th scope="row">Shopify (46)</th><td class="chart-bar"><span style="--w:62.0%" aria-hidden="true"></span></td><td class="chart-value">37%</td></tr>
<tr><th scope="row">Wix (41)</th><td class="chart-bar"><span style="--w:69.6%" aria-hidden="true"></span></td><td class="chart-value">41%</td></tr>
<tr><th scope="row">WordPress (120)</th><td class="chart-bar"><span style="--w:78.3%" aria-hidden="true"></span></td><td class="chart-value">47%</td></tr>
<tr><th scope="row">Hand-built or unidentified (47)</th><td class="chart-bar"><span style="--w:100.0%" aria-hidden="true"></span></td><td class="chart-value">60%</td></tr>
</tbody>
<tfoot><tr><td colspan="3">The number in brackets is how many websites in the sample run on that platform.</td></tr></tfoot>
</table>
<!-- /chart:preview-by-platform -->

Squarespace adds a preview picture unless you stop it, so all 18 had one. Everywhere else somebody has to remember, and on the hand-built websites three times in five nobody did.

## What Google is given to work with

Google can only describe a business with what the page tells it. On the 300 working websites:

- **25% have no meta description.** That is the two lines of grey text under the blue link in a search result. Without one, Google assembles its own from whatever text is on the page, and the result is not always the sentence you would have chosen.
- **29% have no main heading.** The main heading is the one line that says what the page is about, for search engines and for screen readers. A further 20% have several, which says nearly as little. (This is out of the 289 pages whose text is in the HTML; the other 11 are blank until their scripts run.)
- **45% carry no structured data describing the business.** Structured data is how a page states, in a format a machine can read without guessing, that this is a restaurant at this address with these opening hours. Search engines use it, and it can help the AI assistants people now ask for recommendations.
- **4% have no mobile viewport setting,** which means a phone shows a shrunken desktop page.

None of these is fatal by itself. Together they are the difference between a search result that reads like a business and one that reads like a filing error.

## What they are built with

| Platform | Websites | Share |
| --- | --- | --- |
| WordPress | 120 | 40% |
| Hand-built or unidentified | 47 | 16% |
| Shopify | 46 | 15% |
| Wix | 41 | 14% |
| Squarespace | 18 | 6% |
| Next.js | 9 | 3% |
| Everything else | 19 | 6% |

More than half of the WordPress websites, 61 of 120, were built with Elementor, a drag-and-drop page builder. Another 15 use WPBakery, 8 use Divi and 6 use other builders. So three in ten of all the websites we tested are WordPress with a visual builder on top, which is worth knowing before you read the speed results.

A few smaller things we noticed on the way:

- **31% link to WhatsApp** somewhere on the home page.
- **57% run Google Analytics or Tag Manager,** and 18% run the Meta pixel. On 40% we found neither.
- **9% don't move visitors from the old `http://` address to the secure one.** Chrome now upgrades the address itself where it can, but not every browser does, and for 11 of these websites the link the business lists is the unencrypted one.
- **Of the 218 websites that print a copyright year in the footer, 23% say 2023 or earlier.** A customer reads that as "nobody has touched this in a while", whether or not it is true.

## Slow on Google's test, faster for real visitors

We ran every home page through Google's PageSpeed Insights, the free test anyone can repeat at [pagespeed.web.dev](https://pagespeed.web.dev). It loads the page the way a mid-range phone on a slow 4G connection would. We ran it three times per website and kept the middle result.

The figure that matters most is how long a visitor waits before the main content, usually the large photograph or the headline, has appeared. Google's target is 2.5 seconds.

<!-- chart:lcp -->
<table class="chart">
<caption>Seconds until the main content had appeared, on 300 working websites</caption>
<tbody>
<tr class="is-muted"><th scope="row">Under 2.5s, Google’s target</th><td class="chart-bar"><span style="--w:7.6%" aria-hidden="true"></span></td><td class="chart-value">10 · 3%</td></tr>
<tr class="is-muted"><th scope="row">2.5 to 4 seconds</th><td class="chart-bar"><span style="--w:19.7%" aria-hidden="true"></span></td><td class="chart-value">26 · 9%</td></tr>
<tr><th scope="row">4 to 10 seconds</th><td class="chart-bar"><span style="--w:100.0%" aria-hidden="true"></span></td><td class="chart-value">132 · 44%</td></tr>
<tr><th scope="row">More than 10 seconds</th><td class="chart-bar"><span style="--w:100.0%" aria-hidden="true"></span></td><td class="chart-value">132 · 44%</td></tr>
</tbody>
<tfoot><tr><td colspan="3">Largest Contentful Paint, as measured by Google’s PageSpeed Insights on its simulated mid-range phone on a slow 4G connection. Median of three runs per website.</td></tr></tfoot>
</table>
<!-- /chart:lcp -->

Only 10 of the 300 met it. The middle website took 8.6 seconds, and 44% took longer than ten.

That test is deliberately hard: its phone and its connection are slow on purpose. Chrome's records of real visits tell a kinder story. They exist for the 147 websites busy enough to have them, and 71% of those pass Google's Core Web Vitals assessment. On the median one, three in four visits showed the main content within 1.5 seconds.

So the test is not what most of your customers see. It is closer to what your slowest customers see: the older phone, the crowded train, the plan that has run out of data. And Chrome only reports on websites with enough visits, which half the websites we tested did not have.

PageSpeed also gives a performance score out of 100. The median website scored 56. Only 5% reached 90, the score Google calls good, and 31% scored under 50.

<!-- chart:performance-by-platform -->
<table class="chart">
<caption>Median PageSpeed performance score out of 100, by platform</caption>
<tbody>
<tr><th scope="row">Wix (41)</th><td class="chart-bar"><span style="--w:100.0%" aria-hidden="true"></span></td><td class="chart-value">65</td></tr>
<tr><th scope="row">Hand-built or unidentified (47)</th><td class="chart-bar"><span style="--w:96.9%" aria-hidden="true"></span></td><td class="chart-value">63</td></tr>
<tr><th scope="row">Shopify (46)</th><td class="chart-bar"><span style="--w:89.2%" aria-hidden="true"></span></td><td class="chart-value">58</td></tr>
<tr><th scope="row">WordPress (120)</th><td class="chart-bar"><span style="--w:86.2%" aria-hidden="true"></span></td><td class="chart-value">56</td></tr>
<tr><th scope="row">Next.js (9)</th><td class="chart-bar"><span style="--w:81.5%" aria-hidden="true"></span></td><td class="chart-value">53</td></tr>
<tr><th scope="row">Squarespace (18)</th><td class="chart-bar"><span style="--w:72.3%" aria-hidden="true"></span></td><td class="chart-value">47</td></tr>
</tbody>
<tfoot><tr><td colspan="3">Google calls 90 and above good, and below 50 poor.</td></tr></tfoot>
</table>
<!-- /chart:performance-by-platform -->

Of the platforms in the chart, Wix did best and Squarespace worst, though 18 Squarespace websites is still a small group.

## The median home page weighs 4.1 MB

That is everything a phone downloads to show the home page once: images, scripts, fonts and the page itself. The lightest quarter came in under 2.2 MB, the heaviest quarter over 7.7 MB, and 16% weighed more than 10 MB. The heaviest weighed 106 MB, 83 MB of it video, and the two heaviest without video carried more than 38 MB of images each.

Images are the largest part, 38% of the weight on the median website, with scripts another 26%. On a phone plan, a first visit to a 10 MB home page uses 10 MB of the customer's data.

## What a screen reader runs into

The same test checks part of what makes a website usable for people who are blind, have low vision or cannot use a mouse. An automated test catches only some problems, so these are a floor, not a full count. Of the websites where each check applied:

- **63% have a link with no name.** Often an icon, such as a social media logo, which a screen reader can only announce as "link".
- **60% have text too faint against its background** to meet the contrast minimum in the WCAG accessibility guidelines.
- **29% have buttons or links too small or too close together** to tap reliably.
- **29% have an image with no text description** for people who cannot see it.
- **27% have a button with no name.**

The median accessibility score was 88 out of 100, which sounds fine until you read what the missing points are.

## Six checks that take ten minutes

You do not need a developer for any of these.

1. **Find out when your domain renews, and who holds the login.** If the answer is "the person who built the website in 2019", fix that first. Everything else on this list is cosmetic next to losing the address.
2. **WhatsApp your own link to yourself.** If no picture arrives, your website is missing the tag that sets one.
3. **Open the website link on your own Google and map listings.** It should open your current website, with the padlock in the address bar.
4. **Search for your business by name** and read the two grey lines under your link. If they are not a sentence you would have written, you may not have a meta description, though Google also rewrites some.
5. **Look at the year in your footer.**
6. **Paste your address into [pagespeed.web.dev](https://pagespeed.web.dev)** and read the mobile result. If the score is red, the images it lists are usually the place to start.

If you would rather hand the list to someone, [that is the kind of work we do](/services).

## How we did this, and what it cannot tell you

**Source.** OpenStreetMap, queried on 17 September 2026 for everything in Singapore tagged as a shop, a food or drink venue, or a consumer service, with a `website` tag. Map data © OpenStreetMap contributors.

**Who was left out.** Anything tagged with a chain brand; any website listed at four or more locations; government, school and society domains; supermarkets, malls, banks, petrol stations and car dealers as whole categories; and company offices, which is where the map files regional headquarters. Of the 540 websites drawn, 58 were then removed by hand as multinationals, international franchises, listed companies or their subsidiaries, hotels, telcos, or non-profits. We cannot see anyone's turnover, so "local business" here means "not obviously a large one", and a few mid-sized companies will be in the sample.

**The first test.** One request per website, for the page the business lists, sent as Chrome on an Android phone. We read the HTML the server returns before any scripts run, because that is what WhatsApp and Facebook read, and what a search engine sees first. If the listed page failed, we tried the front page of the same website, with and without `www`, before calling it unreachable, and we tried twice. One website that did not answer us loaded normally for Google's test later the same day, so a few in the "Error page, or no answer twice" row may only have been slow to answer us.

**Websites that answered, but not as the business.** We read every website whose address ended on another domain, or whose page was nearly empty. Eight were counted as not working: redirects to unrelated websites or spam, suspended hosting accounts and an under-construction page. A business that had moved to a new domain of its own was counted as working.

**The speed and accessibility test.** Google PageSpeed Insights (Lighthouse 13.4.1, mobile), run three times per website on 18 September 2026. Each figure is the median of a website's runs; four websites have fewer than three, where a repeat run failed. The 300 are the first 100 websites in each group, in draw order, that loaded for us and that PageSpeed could test. Five websites loaded for us but could not be tested and were replaced by the next in the draw. Real-visit figures are Chrome's own, from the Chrome UX Report, for the website as a whole.

**What it cannot tell you.** The map only knows about businesses a volunteer has mapped, which favours shopfronts over home businesses and the city centre over the heartlands. A business with no website at all is not here. We tested one page per website, in one week. And a website that fails these checks may still be bringing its owner all the customers they can handle.

The scripts and the anonymised results are available to journalists and researchers. Write to [hello@ivixstudio.com](mailto:hello@ivixstudio.com).

## Sitemap

- [Home](https://ivixstudio.com/index.md)
- [Work](https://ivixstudio.com/work.md)
- [fill'd](https://ivixstudio.com/work/filld.md)
- [Demos](https://ivixstudio.com/demos.md)
- [Services](https://ivixstudio.com/services.md)
- [Partnerships](https://ivixstudio.com/partnerships.md)
- [About](https://ivixstudio.com/about.md)
- [Contact](https://ivixstudio.com/contact.md)
- [Privacy Policy](https://ivixstudio.com/privacy-policy.md)
- [Terms and Conditions](https://ivixstudio.com/terms-and-conditions.md)
- [Blog](https://ivixstudio.com/blog.md)

See the full [sitemap](https://ivixstudio.com/sitemap.md) for all pages.
