HomeArticlesFilter Bubbles

Filter Bubbles: How a Recommender Turns Homophily Into Isolation

Bounded-confidence opinion dynamics, a biased exposure graph, and why exposure diversity collapses before opinions do.

mysimulator teamUpdated June 2026≈ 7 min read▶ Open the simulation

Opinions as points on a line

The standard way to model opinion change is a bounded-confidence model: every agent holds an opinion as a real number, usually normalised to [0, 1], and two agents only influence each other if their opinions are already within a confidence threshold epsilon. Meet someone whose view is close to yours and you both drift toward the average; meet someone far outside your threshold and neither of you moves at all. This single rule, formalised independently by Hegselmann & Krause and by Deffuant & Weisbuch around 2000, is enough to turn a uniformly spread population into a handful of stable opinion clusters with nothing else added.

// Deffuant-Weisbuch pairwise update
if (Math.abs(oi - oj) < epsilon) {
  oi += mu * (oj - oi);
  oj += mu * (oi - oj);   // mu in (0, 0.5], the convergence speed
}
// else: no interaction — the pair is outside each other's confidence bound
live demo · agents pulled toward similar neighbours, split by a biased feed● LIVE

What a recommender adds

A plain bounded-confidence model already produces clustering from a purely social mechanism — people simply prefer to talk to people who are not too different from them, which is homophily. A recommender system changes the mechanics of who meets whom. Instead of sampling interaction partners uniformly at random, it samples with a bias toward content the agent already agreed with, because that is what keeps the agent engaged and clicking. In model terms, the pairing probability between two agents is no longer flat; it is weighted up for agents who are already close in opinion space and weighted down for agents who are far — the graph of who influences whom becomes correlated with the opinions themselves.

That feedback loop is the whole story. Every exchange nudges opinions slightly closer together, which makes the recommender's model of "what this person likes" slightly sharper, which narrows the next batch of exposures a little further. Run it for enough rounds and the population that started as one broad distribution separates into isolated, internally uniform clusters that barely interact with each other at all — a filter bubble is a bounded-confidence model with the exposure graph itself pulled tight by an optimiser.

Filter bubble vs echo chamber

The two terms get used interchangeably but describe different mechanisms. Filter bubble, coined by Eli Pariser in 2011, refers to the algorithmic narrowing of exposure — you did not choose to see less diversity, ranking and personalisation chose it for you based on past clicks. An echo chamber is the older, purely social version of the same outcome: you chose your friends, your subreddits, your church, and homophily did the narrowing without any algorithm involved. A recommender-biased model like the one in this simulation actually contains the echo chamber as a special case — set the recommender's bias weight to zero and you are left with plain homophily; turn it up and the algorithm compounds a tendency that was already there.

Measuring how closed the bubble is

Two numbers make the effect concrete. Opinion variance across the whole population tracks how far apart the surviving clusters have spread — under strong bias it collapses per-cluster while the gap between clusters grows. Exposure diversity, the fraction of an agent's recent interactions that fall outside its own cluster, is the more direct diagnostic: in an unbiased network it stays near the population's natural heterogeneity, while under a strong recommender it decays toward zero within a few dozen rounds, well before the opinions themselves finish separating. Diversity collapses first; polarisation is the visible symptom that follows.

Implementing the biased sampler

The only change from a plain agent-based opinion model is the pair-selection step. Instead of picking a random neighbour, weight candidate neighbours by a kernel that favours closeness — a simple exponential works and one parameter, the bias strength, interpolates smoothly between an undistorted social network and a fully sorted one:

function pickPartner(i, agents, bias) {
  // weight ~ exp(-bias * |opinion difference|); bias = 0 -> uniform sampling
  let weights = agents.map(j => Math.exp(-bias * Math.abs(agents[i].o - j.o)));
  return weightedRandomChoice(agents, weights);
}

Frequently asked questions

Is a filter bubble the same thing as an echo chamber?

Not quite. An echo chamber comes from people choosing similar people to talk to (homophily); a filter bubble comes from a recommender algorithm narrowing what you see based on past engagement. They compound each other, but a filter bubble can exist even among people who never chose to self-segregate.

Does a bounded-confidence model need a recommender to form clusters?

No. Plain homophily with a fixed confidence threshold epsilon already fragments a population into a handful of stable opinion clusters — Hegselmann-Krause and Deffuant-Weisbuch showed this with no algorithm involved. A biased recommender narrows the exposure graph further and speeds up the same collapse.

What is the earliest warning sign that a population is bubbling?

Exposure diversity — the share of an agent's interactions that cross cluster lines — drops well before the opinions themselves finish separating. By the time opinion variance visibly collapses into distinct clusters, the underlying exposure network has usually been sorted for a while.

Try it live

Everything above runs in your browser — open Filter Bubbles and change the parameters while it is running. Nothing is installed, nothing is uploaded, the whole model lives in one tab.

▶ Open Filter Bubbles simulation

What did you find?

Add reproduction steps (optional)