# Embedding Playground

> Compare up to five texts by meaning. A sentence transformer runs in your browser — no upload, no API key — and returns the full similarity matrix.

**Canonical:** https://alexturik.com/tools/embedding-playground

Put in up to five texts and get the similarity between every pair. A sentence transformer runs in this tab and turns each one into 384 numbers; comparing meaning is then just comparing directions. Nothing is uploaded — the model downloads once and everything after that happens on your machine.

## How to read the similarity matrix

Every pair of texts gets a number between roughly -1 and 1. In practice, with
this model, you will see almost everything land between 0 and 1, because the
model was trained on natural language and natural language sentences are rarely
true opposites.

| Score | What it usually means |
|---|---|
| 0.85 – 1.00 | Near-paraphrase — same claim, different words |
| 0.60 – 0.85 | Same topic, different point |
| 0.35 – 0.60 | Related field, genuinely different subject |
| below 0.35 | Unrelated |

Those bands are rules of thumb for *this* model, not universal constants. The
useful move is comparative, not absolute: run two candidate headings against
the question you want to rank for and see which scores higher. The gap between
them is trustworthy even when the absolute number is not.

## What is actually happening

The model is `all-MiniLM-L6-v2`, a sentence transformer that maps any text to
384 numbers — a point in 384-dimensional space. Texts that mean similar things
land in similar directions. Comparing meaning then reduces to comparing the
angle between two vectors, which is what cosine similarity measures.

Length barely matters, because the vectors are normalised before comparison. A
three-word phrase and a three-sentence paragraph making the same point will
score high against each other. That is the property that makes embeddings
useful for retrieval and the reason AI search does not need your exact keyword
to find you.

The full walkthrough, with the maths and the counter-intuitive results, is in
[How AI search turns your page into 384
numbers](/blog/embeddings-how-ai-search-turns-your-page-into-numbers).

## What to use it for

- **Testing a heading against a real query.** Paste the question you want to
  rank for and two or three candidate headings. Pick the one that scores
  highest — that is roughly the signal a retrieval system sees.
- **Finding cannibalisation.** Paste the intros of two of your own pages. Above
  ~0.9 they are competing for the same intent and should probably be one page.
- **Checking a summary.** Paste an article's opening paragraph and your meta
  description. A low score means the description promises something the page
  does not deliver.
- **Watching keyword stuffing fail.** Add the same keyword five more times and
  re-run. The result is not what most SEO advice predicts, which is the point
  of the explainer.

## Limits worth knowing

This is a small, fast, English-first model — the trade for running it in a
browser tab. It handles other languages, but noticeably worse. It has no
knowledge of your domain, so jargon-heavy text scores less reliably than plain
prose. And it is not the model any specific search engine uses; it is a
well-behaved stand-in that demonstrates the same mechanism.

For a five-text comparison that is fine. For production retrieval, use a
current hosted embedding model and evaluate it on your own data.

## FAQ

### Is my text uploaded anywhere?

No. The model downloads to your browser once, then every comparison runs
locally in the tab. Your text never leaves the machine — there is no API call
carrying it and no server that could log it.

### Why does the first run take a while?

It is downloading the model, about 25 MB, into your browser cache. That happens
on your first click, never on page load, so you do not pay for it unless you
use the tool. Every run after that is local and near-instant.

### Which model does this use?

`all-MiniLM-L6-v2`, a 384-dimension sentence transformer, running through
Transformers.js and WebAssembly. It is small enough to ship to a browser and
good enough to make the mechanism visible, which is the goal here.

### Is cosine similarity the same as relevance?

No, and conflating them is the common mistake. Cosine similarity measures
whether two texts are *about* the same thing. A real ranking system also weighs
authority, freshness, intent and dozens of other signals. Similarity is one
input, not the verdict.

### Can I compare more than five texts?

Not in this tool. Five texts already produce ten pairs, which is about the
limit of what a matrix stays readable at. For larger batches, run the same
model locally with Transformers.js — the explainer post has the code.
