> ## Content Index
> Fetch the complete content index at: https://www.livain.com/llms.txt
> Use this file to discover other available public pages before exploring further.

# The button was there. On a phone it was zero pixels wide.
- URL: https://www.livain.com/blog/the-button-was-zero-pixels-wide/
- Published: 2026-08-26T07:00:00.000Z
- Updated: 2026-08-29T07:07:45.000Z
- Description: A first-impression audit of my own lead-gen site found the primary call to action computing to zero by zero pixels on mobile — present, visible, and unclickable — plus no proof at all above the fold.
- Author: Remco Livain
- Tags: Online Marketing, Fractional Executive, IMHO

I asked for a first-impression audit of my own lead-generation site this week. Not a redesign, not a rewrite — just the question a stranger answers in three seconds and never tells you about.

The first finding was not a matter of taste. On any screen narrower than about 700 pixels, the primary call to action on the home page computes to zero by zero pixels.

It is in the DOM. It is `display: inline-block`. It is `visibility: visible`. Its computed styles look completely ordinary. It simply has no box. Every phone visitor to my own site was losing the main entry point into the offer, and had been for a while.

### Present, visible, and not there

This is the failure mode that gets past every check you would normally run. The element exists, so a DOM query finds it. It is not hidden, so a visibility check passes. It returns 200 with the page, so nothing in monitoring notices. If you tested by looking at the desktop site — which is what you do, because that is the machine you work on — everything is fine.

The only test that catches it is measuring the rendered geometry. Ask for the bounding rectangle at the actual breakpoint and read the width. Zero.

> Existence is not a state you can check for. Only the box is real.

I have written before about [things that return 200 while going nowhere](https://www.livain.com/blog/everything-returned-200/), and this belongs to the same family. The system reports health because it is answering the question it was asked. Nobody asked the harder question.

The cause was mundane — a flex row on the hero button pair, collapsing one child at the mobile breakpoint. The fix belongs in CSS and takes minutes. The interesting part is not the bug. It is that the bug could live on a site whose entire purpose is generating enquiries, on the device most of that traffic arrives from, without anything anywhere raising a hand.

There is a standards angle too. WCAG 2.2 added a target size criterion precisely because undersized controls are a real accessibility failure and not a cosmetic one — the [2.2 additions](https://www.w3.org/WAI/standards-guidelines/wcag/new-in-22/?ref=livain.com) set a minimum for pointer targets, and the recommended technique is literally [min-height and min-width on the target container](https://www.w3.org/WAI/WCAG22/Techniques/css/C42?ref=livain.com). A control at zero by zero is the most extreme possible version of that failure. It is also the one nobody writes a checklist item for, because who would.

### The second finding was harder to fix

Nothing above the fold proved anything. No client name, no figure, no testimonial, no credential. References existed — as a link in the navigation, which is to say, as homework.

For a solo or fractional offer this is the highest-leverage gap on the page, and it is not a design problem. Nielsen Norman Group have been running the same four credibility factors since 1999 — design quality, upfront disclosure, comprehensive and current content, and connection to the rest of the web — and they have [held stable across every device and market since](https://www.nngroup.com/articles/communicating-trustworthiness/?ref=livain.com). Upfront disclosure is the one I was failing. Not because I was hiding anything, but because I had put the reassurance one click away and assumed people would go and get it.

They do not go and get it. They are deciding whether to spend thirty minutes on a call with a person they have never met, and the whole decision happens in the fold.

And the fold had roughly two hundred pixels of empty background sitting between the hero and the next section — dead air with no scroll cue, reading as unfinished. Which is exactly the space the proof belongs in. The page had already reserved the room for the thing it was missing.

### Where I got in my own way

The hero image is a real photograph of me, over the shoulder, in a meeting, projector blurred behind. It is genuinely me and it reads as stock, because nothing on the page says otherwise. I shipped a proper portrait to four other pages the week before and never swapped it into the one place a stranger looks first.

The vocabulary was split too. The page title and meta description talk about an external marketing lead. The hero opens with "Fractional CMO." The header button says one thing, the hero button says another, and they are the same action. None of these are wrong individually. Collectively they are a site that has not decided what it is called — which is a slightly embarrassing finding for someone who [rewrote his own positioning page five weeks ago](https://www.livain.com/blog/i-wrote-about-my-own-website/) and thought that was that.

Positioning is not something you fix once in the copy. It leaks out through the title tag, the button labels, the alt text, and the image you picked eighteen months ago.

### Why I am writing this down

Partly because it is funny, in the way that being the cobbler with bad shoes is funny. Mostly because the method generalises and I intend to make it routine: load a URL, capture the fold at desktop and mobile widths, assert that every call to action has a non-zero box at each breakpoint, check whether any proof element exists above the fold, pull the load timings, and rank what comes back.

That is a twenty-minute job with the right tooling and it would have caught the zero-pixel button on day one. It is now going on every client site I look after, because I am fairly confident I am not the only person shipping a button that exists and cannot be pressed.

Twenty years of doing this has not stopped me making the mistake. It only shortened the distance between making it and finding it — and finding it is the part you can systematise.

### Sources & further reading

**External**  
[W3C WAI — What's New in WCAG 2.2](https://www.w3.org/WAI/standards-guidelines/wcag/new-in-22/?ref=livain.com)  
[W3C WAI — Technique C42: Using min-height and min-width on target container](https://www.w3.org/WAI/WCAG22/Techniques/css/C42?ref=livain.com)  
[Nielsen Norman Group — Trust or Bust: Communicating Trustworthiness in Web Design](https://www.nngroup.com/articles/communicating-trustworthiness/?ref=livain.com)

**Related posts**  
[Everything returned 200\. Four leads still went nowhere.](https://www.livain.com/blog/everything-returned-200/)  
[I wrote about my own website. The reader wanted to know what I do.](https://www.livain.com/blog/i-wrote-about-my-own-website/)  
[No traffic numbers to show? Sell the risk away instead.](https://www.livain.com/blog/no-traffic-numbers-sell-the-risk-away-instead/)