Skip to content

Free UK delivery over £50 · 3–5 working days from Rugby

HALDENOSLO
ResearchEvidence, method, auditDesign notesBack to the shop

What the evidence said, and where it changed my mind.

Desk research for the Halden storefront: what people actually complain about in this category, what it costs, what competitors publish and what they quietly do not. Then a research plan and interview guide for the primary study I would run if this were a live engagement, a synthesis, and the accessibility audit.

§ 01Desk research, 14 sources

Read, not
assumed.

All accessed 3 August 2026. Where a source was weak I made the on-site claim weaker to match, rather than dressing it up. That is most of the method.

What I could not reach

  • Trustpilot and Boots.com both returned 403 to automated fetching, so verbatim UK retail review sentences are thinner here than I wanted. Source 1 gives tag prevalence across 324 reviews but not the sentences people wrote.
  • Reddit blocked fetching, which removes the richest source of the exact words customers use.
  • PubMed Central served a CAPTCHA, so the niacinamide concentration literature is represented second-hand through source 13. The site's copy is worded to survive that: it says the data plateaus around 4 to 5% rather than citing a specific trial.
  • Mintel's UK facial skincare reports are paywalled. UK-specific category spend is therefore missing, and source 9 is US data used directionally rather than as a UK figure.
  1. 01

    The Ordinary Niacinamide 10% + Zinc 1%, aggregated user reviews

    SkinSort

    324 reviews, 3.1 / 5. Reviewer-applied tags with prevalence: Great Value 32%, Irritating 29%, Broke Me Out 27%.

    https://skinsort.com/products/the-ordinary/niacinamide-10-zinc-1
  2. 02

    Niacinamide 10% + Zinc 1% product page, UK

    The Ordinary (Deciem)

    £5.00 for 30 ml. Percentages sit in the product name; the ingredients block does not restate them. Claims visible results in 7 days.

    https://theordinary.com/en-gb/niacinamide-10-zinc-1-serum-100436.html
  3. 03

    Moisturising Gel Cream product page

    BYOMA

    $14.99 / 50 ml, 4.55 from 549 reviews. An INCI Decoded panel groups ingredients by function and publishes no concentrations.

    https://www.byoma.com/products/moisturizing-gel-cream
  4. 04

    Skin Barrier (Dr Melissa Piliang, MD), 14 December 2022

    Cleveland Clinic

    Causes of damage listed as harsh soaps, over-exfoliating or scrubbing, and not moisturising. Recovery described as three to four months.

    https://health.clevelandclinic.org/skin-barrier
  5. 05

    5 Expert Tips for Exfoliating Without Disrupting the Skin Barrier

    CeraVe

    Warns that over-exfoliating causes redness, flaking and irritation, and then gives no frequency guidance at all.

    https://www.cerave.com/skin-smarts/skincare-tips-advice/5-expert-tips-for-exfoliating-without-disrupting-the-skin-barrier
  6. 06

    Cart abandonment: documented reasons

    Baymard Institute

    Extra costs too high (shipping, tax, fees) 40%, delivery too slow 20%, no trust in card handling 19%, forced account 18%, cannot see total upfront 12%.

    https://baymard.com/lists/cart-abandonment-rate
  7. 07

    Sunscreen and sun safety

    NHS

    UK consumers are taught the 5-star UVA system and household quantity measures, not ISO test values.

    https://www.nhs.uk/live-well/seasonal-health/sunscreen-and-sun-safety/
  8. 08

    Reference pricing, published 12 December 2016

    ASA / CAP

    Comparison prices must be genuine and previously charged for a reasonable period, with the material information a shopper needs to understand the comparison.

    https://www.asa.org.uk/news/reference-pricing.html
  9. 09

    Beauty demand holds, but price concerns reshape spending, 29 August 2025

    eMarketer, citing Circana

    Only 14% of beauty buyers think a higher price means better quality. Mass beauty grew 4% in H1 2025 against 2% for prestige.

    https://www.emarketer.com/content/beauty-demand-holds-price-concerns-reshape-spending
  10. 10

    68% of consumers seek clean beauty information

    Cosmetics Business, reporting NPD Group

    60% expect brands to disclose ingredient sources; 72% want clear explanations of what ingredients do. No sample size or field date is published, which is a real weakness.

    https://cosmeticsbusiness.com/68-of-consumers-seek-clean-beauty-information-and
  11. 11

    Retinol vs Retinal

    The INKEY List

    Retinal converts to retinoic acid in one step where retinol takes two; the brand claims results up to 11x faster than retinol.

    https://www.theinkeylist.com/blogs/news/retinol-vs-retinal-what-s-the-difference-and-which-one-should-you-use
  12. 12

    Reader comments on product pilling, 29 April to 12 May 2025

    Skincarma

    A reader posting as H2theD reports product balling happening daily and asks where the tipping point is; the host, Carmine Montalto, names mineral sunscreen as one possible culprit.

    https://skincarma.substack.com/p/the-skincarma-pod-episode-23-cracking/comments
  13. 13

    Niacinamide, ingredient reference

    SkinSort

    Around 5% is cited for pigment benefit; true niacin flush does not occur with niacinamide; market products run from 0% to 20%.

    https://skinsort.com/ingredients/niacinamide
  14. 14

    Are Beauty Brands Intentionally Hiding Their Ingredients?, 25 June 2020

    Jessica DeFino

    Disclosure law predates e-commerce, so 'transparency' has become a positioning claim that costs a brand nothing to make.

    https://jessicadefino.substack.com/p/are-beauty-brands-intentionally-hiding-their-ingredients-694b38f0f11d
§ 02The research plan I would run

Method,
and why
that method.

Objective

Decide whether an ingredient-literate UK buyer will pay roughly nine times the category floor per millilitre for a serum whose only argument is published concentrations and a smaller range. Secondary: find out where in the page that decision is actually made.

Method, and why this method

Two methods, because the question has two halves. Semi-structured interviews (60 minutes, remote, 8 participants) for the why: motivations, past disappointments and the mental model people carry about percentages are all retrospective and attitudinal, which is what interviews are for and what analytics cannot reach.

Then moderated usability testing on the live build (45 minutes, 5 participants, think-aloud, first-click and time-to-answer on three set tasks) for the where: find the niacinamide percentage, work out what delivery costs on a single £48 order, decide whether 04 and 05 can be used on the same night. Behaviour under task is the only honest way to test whether the spec table really is doing the conversion work the layout assumes.

Not a survey. A survey would give me numbers on a population I have not yet defined, and the open question here is what the frame even is.

Recruitment and screener

In: UK residents, 25 to 50, who have bought a facial serum online in the last six months at £20 or more, and who answer an unprompted question about what is in their current serum with at least one ingredient name. That last item is the real screener; it separates the target from the general skincare buyer without telling anyone what I am looking for.

Quotas: at least 3 with self-reported sensitive or reactive skin, at least 2 who have had a reaction to a product in the last year, at least 2 outside the south-east of England, and a spread across price bands rather than only premium buyers.

Out: anyone working in cosmetics, retail beauty, dermatology or UX research. Out: anyone who has taken part in beauty research in the last six months, which filters the professional-participant problem.

Sample: 8 interviews, then 5 usability sessions with fresh participants. Eight is where thematic saturation usually arrives on a single-segment attitudinal study; five is the standard usability number, and any severe issue that survives five sessions will be obvious.

Timeline

Week 1 screener out and recruitment. Week 2 interviews, four a day for two days, with debriefs the same afternoon while it is fresh. Week 3 synthesis and a readout of themes. Week 4 usability sessions against the build, severity-rated findings, and a prioritised change list. Four weeks end to end, which is what this scope honestly needs.

§ 03Interview guide, written for this brief

Sixty minutes,
nothing leading.

The craft is in what is not asked. No question here supplies an answer, offers examples to pick from, or asks anyone to predict their own future behaviour. If a participant never mentions percentages, that silence is the finding and the guide does not rescue it.

  1. 1. Warm-up

    5 min

    Get them talking about their own routine before the topic narrows.

    • Talk me through what you put on your face this morning, in order.
    • How long has that been the routine?
    • What changed it last?

    Probe on the last item only: what happened, when, and what they did next. Do not ask whether it was a good change.

  2. 2. Context

    12 min

    Understand where products come from and who they trust, without naming any brand first.

    • Where did the products you use now come from? Take them one at a time.
    • Tell me about the last time you bought something for your skin that you had not used before.
    • Who or what do you check before you buy something new, if anything?
    • When did you last stop using something? What made you stop?

    If a source is named, ask what makes that source useful rather than whether they trust it. Never supply examples: no 'do you use Reddit or TikTok?'

  3. 3. Deep dive

    20 min

    Get at the mental model around ingredients, concentration and irritation without teaching it.

    • Show me the back of something you are using. Read me anything that catches your eye.
    • What does that tell you, if anything?
    • You mentioned [ingredient]. How did you come to know about it?
    • Tell me about a time a product did not agree with your skin. What did you do?
    • How do you decide how much of something to use, or how often?
    • Last time you compared two products, what were you comparing?

    When a percentage comes up: 'what would a different number there mean to you?' Not 'is higher better?', which supplies the answer. If they do not raise percentages at all, that is a finding; do not rescue it.

  4. 4. Reaction

    15 min

    Reaction to the artefact, elicited by task rather than by opinion.

    • Here is a product page. Spend as long as you like and tell me what you make of it.
    • Find out how much niacinamide is in it.
    • You are buying this one item and nothing else. What will it cost you delivered?
    • What would you want to know that is not here?
    • Who do you think this is for?

    Silence is the tool. Where they stall, note the elapsed time and the element they were looking at, then ask 'what were you expecting there?' Never ask 'do you like it?' or 'is that clear?'

  5. 5. Wrap-up

    8 min

    Catch what the structure missed.

    • If this brand existed, what would have to be true for you to buy it?
    • What would stop you?
    • Is there anything I should have asked and did not?

    Ask the last question and then wait. It routinely produces the most useful thirty seconds of the session.

§ 04Synthesis, grounded in the sources above

Six themes,
counted.

Prevalence is expressed as a count of sources, not as a percentage of people. Fourteen sources is a small denominator and a theme carried by two of them is labelled as thin, because it is.

Who this is for

  • The list-reader

    primary, and the one the page is built for

    Reads INCI lists, knows what phenoxyethanol is, has an opinion about fragrance. Evidenced by the existence and traffic of ingredient-decoding tools, and by competitors shipping decoded-INCI panels to satisfy exactly this person. Buys on specifics and is repelled by atmosphere.

  • The barrier-repair arrival

    secondary

    Arrives after something went wrong, which the clinical sources describe as a three-to-four-month recovery. Wants to know what to stop doing more than what to start. This is why the thesis section argues subtraction before the range is shown at all.

  • The value-anchored comparer

    the one most likely to bounce

    Has a £5 serum in the cupboard that 32% of its reviewers call great value. Everything on the page has to survive being read next to that. Named here as a hypothesis: it is inferred from review-tag prevalence and category growth data, not from anyone I have spoken to.

  1. T1surfaced in 5 of 14 sources

    Irritation, not inefficacy, is the category's failure mode

    The most-reviewed niacinamide serum in the category holds 3.1 out of 5 across 324 reviews, and the two commonest complaint tags are Irritating (29%) and Broke Me Out (27%). Cleveland Clinic puts harsh soaps and over-exfoliating at the top of what damages a barrier. CeraVe warns about redness and flaking from over-exfoliation. Nobody in the set complains that a serum did nothing; they complain it did something unwanted.

    over-exfoliating or exfoliating incorrectly can disrupt the skin barrier and result in redness, flaking, or irritation
    CeraVe, source 5 · source

    ImplicationThe competitive opening is a lower dose stated confidently, not a higher one. A brand that says 4% and explains why is arguing against the thing 29% of reviewers actually experienced.

  2. T2surfaced in 2 of 14 sources, and it is the thinnest-sourced theme here

    Texture under sunscreen is a named, specific complaint

    Pilling, or balling, comes up as a lived daily problem in a public comment thread among people who follow formulation closely, with mineral sunscreen named as a likely culprit. It is a texture failure that only shows up in the third layer of a routine, which is exactly where a product page never tests itself.

    a reader posting as H2theD reports product balling happening daily and asks where the tipping point is; the host names mineral sunscreen as one possible culprit
    Skincarma comments, 29 April 2025, source 12 · source

    ImplicationWorth saying out loud on the page, but worth flagging as the finding I would most want to test with real people before leaning any harder on it. Two sources is a hypothesis, not evidence.

  3. T3surfaced in 4 of 14 sources

    Transparency has become a claim rather than a practice

    The category's cheapest serum puts its percentages in the product name and then does not restate them anywhere in the ingredients block. A barrier-led competitor ships an INCI Decoded panel that groups ingredients by function and publishes no concentrations at all. Reported survey data has 72% wanting clear explanations of what ingredients do, against 60% wanting disclosure of where they come from. The appetite is for the explanation, and the explanation is the part nobody ships.

    72% want clear explanations of what ingredients do
    NPD Group via Cosmetics Business, source 10 · source

    ImplicationPublishing the full w/w sheet is only half a differentiator. The other half is a sentence per row saying why that number and not another one.

  4. T4surfaced in 3 of 14 sources

    Price has stopped signalling quality on its own

    Only 14% of beauty buyers think a higher price means a better product. Mass beauty grew twice as fast as prestige in the first half of 2025. And the top tag on a £5 serum with 324 reviews is Great Value, at 32%, which is higher than either complaint tag. A £48 serum cannot rely on looking expensive; the £5 one has already claimed the value ground and has the reviews to hold it.

    Only 14% of US beauty buyers think that higher prices mean better quality products
    Circana via eMarketer, 29 August 2025, source 9 · source

    ImplicationThe premium has to be itemised. Per-ml price, batch size, fill location and what the money buys, stated as figures rather than implied by whitespace.

  5. T5surfaced in 1 of 14 sources, but it is the only quantitative behavioural study in the set

    The basket is lost on cost, not on brand

    Extra costs at checkout are the single largest documented reason people abandon a basket, at 40%, ahead of trust in card handling, forced account creation and checkout length. A further 12% abandon because they cannot work out the total cost upfront.

    Extra costs too high (shipping, tax, fees)
    Baymard Institute, source 6 · source

    ImplicationDelivery terms belong above the brand argument, not in the footer, and the shortfall to free delivery should be a live number rather than a banner.

  6. T6surfaced in 2 of 14 sources, by contrast rather than agreement

    Nobody will tell you how often to use an active

    A mass brand's own guide to exfoliating without wrecking your barrier warns about the consequences and then declines to name a frequency. The NHS, with nothing to sell, gives quantities in teaspoons and a two-hourly reapplication interval. The commercial incentive not to say a number is visible in the gap between those two documents.

    As a guide, adults should aim to apply around 6 to 8 teaspoons of sunscreen if you're covering your entire body.
    NHS, source 7 · source

    ImplicationPrinting an actual schedule, two nights a week and which nights, is a differentiator that costs repeat sales and is therefore credible.

Insight to opportunity

  • 29% of reviewers of the category leader tag it irritating (T1)Dose at 4%, print the number, and put the reasoning next to itImpact: HighEffort: Low
  • Transparency is claimed, percentages are not published (T3)Full w/w formula sheet with a why sentence per row and a carrier remainder that reconciles to 100%Impact: HighEffort: Medium
  • Extra costs drive 40% of abandonment (T5)Delivery strip above the fold; live free-delivery shortfall in the drawer; say the £2 gap out loudImpact: HighEffort: Low
  • Price no longer signals quality (T4)Per-ml price in the hero spec table; batch size and fill location stated as figuresImpact: MediumEffort: Low
  • No one publishes usage frequency (T6)An AM/PM builder that shows which nights get neither activeImpact: MediumEffort: Medium
  • Pilling under SPF is specific but thinly sourced (T2)Address it in the product blurb; test it with real users before building a whole page around itImpact: MediumEffort: Low
§ 05How it changed the design

Six things
I had to
go back and fix.

  1. 01

    I removed a strikethrough price, and that was the sharpest thing this research did

    The routine builder showed the full AM set at £112 struck through beside £74, because 06 is out of stock. CAP guidance is that a comparison price must be genuine and must have been charged for a reasonable period. £112 was never charged and never withheld; nothing is on offer. On a site whose entire argument is that it does not mislead you, that was the worst thing on the page. It now reads 'Full set £112 once 06 is back on 19 August', in plain type.

  2. 02

    Delivery moved above the brand argument

    The hairline strip carrying free-delivery threshold, lead time, dispatch location and returns window sits directly under the hero, ahead of any argument about why the range is small. That ordering is a direct read of the abandonment data: extra costs beat trust, account creation and checkout length as a reason to leave. The cart drawer got a live shortfall figure for the same reason, and the hero says out loud that £48 is £2 under the £50 line rather than hoping nobody notices.

  3. 03

    Dead ends became live buttons

    Out-of-stock 06 rendered a greyed 'Unavailable' in the list and a disabled button labelled 'Email me when back' in the quick view, which promised an action the code refused to perform. In a category losing four in ten baskets to friction, a dead control on the one product that is genuinely unavailable is indefensible. Both are now live: they scroll the restock form into view and move focus into the field.

  4. 04

    The niacinamide argument stopped being an assertion

    The formulation note used to say 4% not 10% because the data plateaus. It now also carries the review-tag prevalence from the category leader: 29% of 324 reviewers tag it irritating. Same conclusion, but now it is checkable by anyone who clicks source 1.

  5. 05

    A finding contradicted me, and the sunscreen copy changed

    I had 06 Mineral Screen leading on UVA-PF 11.4 under ISO 24443, which is the number a formulator cares about. The NHS teaches UK shoppers a five-star system and gives quantities in teaspoons, so the ISO figure lands on almost nobody. The blurb now gives the lab value and the star equivalent, and the AM routine step measures the dose in fingers rather than mg/cm². The research said my instinct for specificity was pointing at the wrong specific.

  6. 06

    I kept a claim smaller than the competition's

    A UK competitor's own copy says retinal works up to 11x faster than retinol. 05 Retinal claims that 0.1% does roughly what a 0.5% retinol does, which is a fifth of that multiple. Where the category inflates, the credible move for this brand is to under-claim and let the reader notice.

§ 06Design tokens and one documented component

Nine colours,
one radius.

All of it is declared in one `@theme` block in globals.css. There are no ad-hoc hex values anywhere in the components.

Colour

  • --color-bone#F4F1EAPage ground
  • --color-bone-2#ECE7DCFooter, announcement bar, row hover
  • --color-ink#16150FBody type, primary buttons, Oslo band
  • --color-stone#6B6455Muted copy, interactive borders. 5.20:1 on bone
  • --color-olive#4A5240The only accent. Labels, bars, focus ring. 7.24:1
  • --color-olive-2#3A4132Hairlines inside the ink band
  • --color-clay#C4B7A2Hairlines; body copy on ink at 9.27:1. Never type on bone
  • --color-clay-2#DDD5C5Row rules and bar troughs. Decoration only
  • --color-rust#8A4B2FLow stock and form errors. 5.95:1 on bone

Type

  • DisplayInstrument Serifclamp(2.05rem, 7.2vw, 5.2rem), leading 0.84 to 0.92
  • BodyInter 40013 to 15px, leading 1.75 to 1.85
  • Micro-labelInter 50010px, 0.16em tracking, uppercase
  • NumeralsInter, tabularfont-variant-numeric: tabular-nums on every figure

Spacing, radius, motion, focus, targets

  • SpacingTailwind 4px scaleSections py-16 at base, py-24 to py-28 from lg
  • Containermax-w-[1500px]px-5 / sm:px-8, plus lg:pl-[88px] and xl:pl-[110px] for the rail
  • Radius2pxButtons only. Nothing else on the site is rounded
  • Motion400ms cubic-bezier(0.16, 1, 0.3, 1)Every transition. Disabled under prefers-reduced-motion
  • Focus2px olive, 3px offsetClay inside .on-ink, where olive would be 2.24:1
  • Targetmin-h-11 (44px)Every interactive element

Component: Button

Variants

  • Primary
    bg-ink, bone label, 12px uppercase, 0.14em tracking, 2px radius
    Add to bag, checkout, add set
  • Bordered
    1px stone border, ink label, transparent ground
    Bag, Menu, Back to the range
  • Text
    10px label, clay underline at 4px offset
    Quick view, Close, Remove, Use a different address

States

  • Rest
    As above
  • Hover
    Primary goes olive; bordered gains bone-2 ground; text goes olive. 400ms
  • Focus-visible
    2px olive ring at 3px offset (7.24:1 on bone, 9.27:1 clay inside .on-ink)
  • Disabled
    Only the checkout button has one: bone-2 ground, stone label, clay border, 4.76:1, and the label changes to say what to do instead
  • Loading
    Not used. Nothing on this site posts to a server

Accessibility notes

  • Always a real <button type='button'>. There is not one click handler on a div anywhere in the build.
  • min-h-11 everywhere, so every target clears 44px on the vertical axis.
  • Icon-only and repeated buttons carry the item name in an sr-only span: 'Add to bag' becomes 'Add to bag Ceramide Cream 03'.
  • No button is ever disabled while its label promises an action. Out-of-stock buttons stay live and move focus to the restock form.
  • aria-haspopup='dialog' on the two buttons that open one.
§ 07WCAG 2.1 AA audit

Found 13.
Fixed 13.

3 Critical and 10 Major, audited against the rendered pages at 390, 834 and 1440px rather than against class names. Ratios were computed with the WCAG relative-luminance formula, not estimated by eye. Five further issues were assessed and consciously accepted, with the reasoning written down rather than left out.

Body copy floor stone on bone
5.20:1
Muted on footer stone on bone-2
4.76:1
Accent and focus ring olive on bone
7.24:1
Inverted band body clay on ink
9.27:1
Primary button bone on ink
16.21:1
Errors and low stock rust on bone
5.95:1
Concentration bars olive on clay-2
5.60:1
  • Critical

    Focus indicator suppressed on the restock input

    Removed focus:outline-none; the global focus-visible rule applies.

    WCAG2.4.7 Focus Visibleno indicator → 7.24:1
  • Critical

    Cart drawer had no dialog role, focus move, trap or restore

    role=dialog, aria-modal, focus to Close on open, Tab cycled, Escape closes, focus restored to the trigger.

    WCAG4.1.2, 2.4.3n/a
  • Critical

    Disabled buttons labelled with an action they refused to perform

    Out-of-stock controls are live and move focus into the restock field.

    WCAG2.5.3, 3.2.4n/a
  • Major

    Disabled 'Unavailable' row label, the only stock signal in the row

    Disabled state removed with the finding above; label is now ink.

    WCAG1.4.31.75:1 → 16.21:1
  • Major

    Disabled checkout button

    bone-2 ground, stone label, clay border, and the label says what to do.

    WCAG1.4.31.75:1 → 4.76:1
  • Major

    Focus ring below 3:1 on the inverted Oslo band

    .on-ink :focus-visible switches the outline to clay.

    WCAG1.4.112.24:1 → 9.27:1
  • Major

    Nine interactive elements under 44px, measured on the rendered page

    min-h-11 on every one; the quantity steppers are 44 x 44.

    WCAG2.5.5 / 2.2's 2.5.826 to 38px → 44px
  • Major

    Tab widget announced as tabs, behaved as two buttons

    Roving tabIndex, arrow keys, Home and End, focusable panel.

    WCAG4.1.2 + ARIA tabs patternn/a
  • Major

    Six duplicate image descriptions for one decorative preview

    Preview column aria-hidden with empty alt; cart and row thumbnails likewise.

    WCAG1.1.1n/a
  • Major

    Interactive borders at clay on bone

    Input, stepper and tablist borders moved to stone. Decorative rules stay clay.

    WCAG1.4.111.75:1 → 5.20:1
  • Major

    Empty rating stars nearly invisible

    Unfilled stars are an olive outline; aria-label widened to 'n out of 5 stars'.

    WCAG1.4.111.29:1 → 7.24:1
  • Major

    Mobile navigation had no Escape and no focus management

    Focus moves in on open, Escape closes, focus returns to the Menu button.

    WCAG2.1.1, 2.4.3n/a
  • Major

    Subtotal and delivery meter changed silently

    aria-live on the subtotal; role=progressbar with value attributes on the meter.

    WCAG4.1.3n/a

Accepted rather than fixed, with reasons: 10px micro-labels (no WCAG minimum type size, and all pass contrast); footer link rows at 33px rather than 44px (clears the 24px minimum, and 44 would push the legal block off a phone screen); decorative hairlines at 1.29 to 1.75:1 (1.4.11 exempts decoration); `hidden` on collapsed panels, which is correct and needed no change; and reflow at 320px equivalent, verified in the 390px capture with zero horizontal overflow.