Vinted / Negative Filters
The problem
When browsing for a generic item, e.g. “mens suit”, or “mens clogs”, the results are often filled with the same brand and style. If you’re not interested in that particular item, it can feel like you have to scroll through hundreds of items just to see ten that could be a possibility. Why not just use the filter to select a brand you are interested in I hear you ask? Well, that’s fine if you know specifically what you want, say, the Birkenstock. But if you are open to anything, just anything except crocs, could the experience be more effective?
Vinted is one of my most visited sites and I find the UX to be enjoyable and unnoticeable – as it should be. Everything generally works seamlessly and you can see the thought that’s gone into user flows; the way it guides you through a listing means you’re uploading all the information that buyers need to find the listing worthwhile, and you feel safe with the transactions process being completed upon delivery.
I’m sure it’s not the case that this problem hasn’t crossed their minds, but the experience bugged me so I wanted to investigate.
The discovery
So let’s do a bit of work and see if the facts match the feel, and to better understand if there are some obvious reasons not to address this.
Caveats aside, let’s have a look at the distribution of results on the first few pages (for the purposes of this study and working with incomplete data I’m baking in the arbitrary assumption that most people won’t click past the first few pages of results). I gave Claude the task of entering some generic but related search terms (one set around men’s suits, one around dresses and one set around clogs) and reporting on the distribution.
What the data says
18 generic searches on Vinted UK: 6 for footwear, 6 for men’s suits and 6 for women’s dresses. Pick an analysis, then a group.
Share of unique listings on pages 1–3. Teal = the single most common product; greys = the next four combined.
Grouped by product · collected 23 Sep 2026
Grouped by brand · collected 24 Sep 2026
Grouped by brand · collected 24 Sep 2026
Share of each page taken by that search's #1 product: pages 1 → 3, same scale on every panel. Teal bars and tinted panels are where one product or brand takes 25% or more of a page.
Grouped by product · collected 23 Sep 2026
Grouped by brand · collected 24 Sep 2026
Grouped by brand · collected 24 Sep 2026
Top five products on page 1 only: the first 95–96 listings a shopper sees. Footwear page 1 was re-collected on 24 September 2026, so those numbers are a fresh snapshot rather than a subset of the pages 1–3 figures. Suit and dress numbers come from the same 24 September collections, grouped by brand. Pick a group, then a search.
Method and caveats
ShowHide
- Searches were typed into the Vinted UK search box on 23 September 2026 with default sort and no filters. Pages 1–3 were collected for each (about 90 listings per page), and listings that repeated across pages were counted once.
- The “Distribution of products across page one” analysis uses page 1 only, re-collected on 24 September 2026 with the same searches and settings. Promoted closet spotlights were excluded.
- Men's suit searches (pages 1–3) were collected on the evening of 24 September 2026 with the same settings and counted the same way. Across all analyses, #1 for a suit search is the most common brand over all three pages, so on page 1 it can differ from the top slice in the pie.
- Women's dress searches (pages 1–3) were collected late on 24 September 2026 in the same way and grouped by brand. Brand name variants were merged (for example ASOS and ASOS Design, Club L and Club L London, Boss and Hugo Boss). “Kids'” for dresses also counts girls', baby and christening listings.
- Suit listings rarely name a model, so they are grouped by brand. Brand is a coarser grouping than the footwear models, so if anything it overstates concentration for suits. “SUIT (brand)” is a brand named SUIT in Vinted's brand field. Some sellers may pick it for unbranded suits, which would inflate its share in the navy and grey searches. Some suit results are jackets, blazers or jacket and waistcoat sets rather than full suits; they are counted as listed.
- Listings were grouped into products by rules applied to their titles and brand fields. Where a title names no model, the listing falls into a general bucket such as “Birkenstock (unspecified)” or “Adidas slide (unnamed)”.
- “Crocs-style clog” includes Crocs without a named model plus lookalikes from Next, M&S, Clarks and others described as “croc style”. To a buyer scanning the page these read as the same shoe.
- “Kids'” is estimated from sizes marked child or junior and from words such as kids, girls and boys in titles.
- Results are personalised and change between loads, so treat figures as indicative. Colourway searches such as “mx cinder” still return about 80 Yeezy Foam Runners in the first 95 results, but those are near exact searches, not evidence of feed repetition.
- The prototype uses made up listings and prices, chosen to echo the real distributions above. It is a demo of the interaction, not a data source.
What does this all mean?
Crocs-style clogs are 53% of “clogs size 10”; Next alone is 39% of “slim fit suit mens”; the top five brands are 51% of “navy suit mens”; dresses are far more spread, with Zara topping out at 14%. The truth is that the feeling of frustration I had in browsing through irrelevant results was disproportionate to the actual distribution of products. Clearly, when you look at the results for sandals or mens suits, there’s a decent distribution of brands. If this is matched with analytics that indicate users don’t often abandon their search after one or two pages, or that they do click and engage with a number of products, or that the conversion rate in these most popular products is high, then we can determine that it’s good for the buyer, the seller and Vinted, in which case addressing this wouldn’t be a priority.
However, it’s still often the case that around half the results are taken up by a handful of brands which may not be of interest – see the pie chart for “navy suit mens”, for example. So IFassumption without data the average user is only willing to click through three pages, they’re likely going to see 135 potentially interesting results, rather than 270. Surely that’s worth addressing, with at least the option to filter them out?
Solutions
My hypothesis is that giving buyers a way to remove the brands they don’t want will get them to a listing they do want faster, and that most of that benefit lands on searches where a handful of brands dominate the first pages. If that’s true, I’d expect more searches to end in a click, with the first click happening higher up the page, without any drop in what gets bought.
Mock ups
*I’m not addressing persistent account level exclusions here, since I would want to see it working effectively with single searches first.
I’ve mocked up a few ways this could work, each with a trade off between discoverability and noise.
An interactive prototype of a Vinted search results page with three ways to hide what you don’t want. It runs on sample data for one search: clogs size 10.
Click a card above to switch between A, B and C; Reset clears any filters you’ve applied. Best viewed on a laptop or desktop; on a phone, open it full screen.
My preference would be to test option B: it lives with the existing filters, it adds no new surface to design, and it’s the one most likely to be found by the users who filter many items. The cost is that the brands get a third state in the filter, it’s a potential drawback on mobile and it’s only discovered by those already using filters. Option A is more easily discovered but I feel adds noise to the general browsing experience and is harder to reverse. Option C is the cleanest but puts the burden of intuition on the user.
I usually like to come to a decision like this along with at least one engineer and one designer, so we can butt heads on finding the simplest possible solution with the highest impact.
I would prototype this with some users, hearing them vocalise their journey to ensure it’s intuitive and discoverable, before moving on to A/B testing amongst a statistically significant sample.
Experiment design
Laying out the experiment should allow the PM to make a clear and reliable human judgement call between cost and benefit. Clearly, I would need to see and digest the current baseline metrics before deciding on how we’re going to set out our experiment to facilitate that, however, for argument’s sake let’s say it will look something like this:
- Primary metric – a 5% relative lift on search to click. I want my success criteria to be the smallest amount worth building for, and without additional information this seems reasonable. However, I may want to revisit this after seeing adoption rates after week one – if only 5% of searchers adopt the feature this would be an overly ambitious threshold
- Duration – 4 weeks. A minimum of two covers a weekly cycle, but adoption will be low early
- Kill criteria – Primary metric flat after 4 weeks, or guardrails breached beyond a threshold. Again the adoption rates would be instructive here, for setting what is statistically detectable as flat
- Split – 50/50 randomised between the treatment and control, with the experiment starting at 10% of eligible users before ramping up. NB We’re not comparing adopters with non-adopters, we’re comparing the whole test group with the control group, since adopters are more engaged users and give a biased signal. Adopter only figures get analysed to see why the arm moved or didn’t
- Segments to test – anybody who searches in the tested categories. Narrowing to existing filter users would give a stronger signal, but a biased one
- Segments to analyse – 1) People who already use filters vs those who haven’t used one 2) Category – since the data above shows there can be a very different distribution on different search terms. 3) Buyers who have previously bought from a frequently excluded brand, as they’re the segment most likely to hide something they’d have actually bought. These are for giving us richer context, not for deciding on a win.
Our primary metric is our guide for this experiment. The activation metrics and secondary metrics provide critical detail for the PM to digest, but they occur on a fraction of the searches and thus take longer to read.
Metrics
critical for us to have our baselines before beginning the experiment, during and after the testing phase I’d also want to track broader metrics. Of course we’d keep tracking these analytics well beyond implementation.
- Making an offer Activation
- Completing a purchase Activation
- Favouriting an item Activation
- Frequency of returning to search – e.g. within 7 days. Comparing treatment against control would help us understand if the browsing experience left a more positive impression
- Average clicks into an item per session – if this improves clearly we’re returning more interesting results
- Position of first click – this should drop if we’re returning preferable results
- Pages per session – should drop in the treatment group but this is a noisy metric because it could mean more engagement
- How often are the saturated products clicked – does excluding them mean a huge drop off, thus indicating that even though they weren’t a preference people still often found something attractive within that bunch eventually
- Share of users who find and adopt the feature, within which time frame, and how many brands they exclude – is the feature even gaining traction at all?
- Which items get excluded – if there’s a clear oversupply of the same 5 brands or materials, then a ranking algorithm tweak might be more suitable than an exclusion
- Median result count before and after exclusions and how many searches are returning zero or near zero results – are we thinning out results beyond what we can offer?
- Listing rate and sale completion for sellers of frequently listed or excluded items – we need to keep track of changes in supply side behaviour, they’re Vinted customers too
- Support tickets raised
- Product distribution across 1-3 pages – has applying negative filters actually helped the distribution among the first pages, or simply changed it for another top 5 brands?
- GMV – if this falls then the long tail argument is false, and thinner results are losing sales. Does reducing demand and exposure for your most populous sellers diminish your market, or does pushing demand to the long tail help liquidity?
- Exposure distribution across sellers – Sellers are users too, and starving them of impressions squeezes the supply side
- Filter abandonment – how many users are abandoning the filter within the same session?
What I’d do next
Unfortunately I can’t run this experiment and see the results, but here’s what I’d do with a few of the most plausible outcomes.
If the primary metric lifts and guardrails hold, roll out to all traffic on the tested searches, then widen to more categories. Then I’d test account level persistent exclusions, which I’ve kept out of scope here.
If the primary metric is flat but exclusions cluster on a handful of brands, the problem is oversupply at the head of the distribution. A ranking adjustment that diversifies the first pages would probably affect more users than a filter, without asking them to learn anything or take action. I’d stop the test and reframe the problem.
If the primary metric lifts but GMV falls, the long tail argument is wrong: hidden listings were converting. I would stop, investigate if brands were excluded by buyers who’d previously purchased them (or if within the control group users are simply buying what they’re served most frequently), and decide whether the feature needs a softer form (demote rather than hide) before any further test.
What would change my mind before starting
From the data listed in discovery: the share of filter users who already select five or more brands (if it’s low, appetite for exclusion is a hunch and not driven by user demand); how far people actually scroll (if it’s past page three, the concentration problem is less impactful); and brand listing accuracy (if it’s inaccurate the filter leaks and users will blame the feature).