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.
Read the explainer: how AI search turns your page into 384 numbers →
Try it
TEXTS → SIMILARITY
every pair scored in this tab · nothing uploaded
model: Xenova/all-MiniLM-L6-v2
dimensions: 384 · dtype: q8
01TEXTS
3/5 · two minimum
02SIMILARITY
1.000 on the diagonal is each text against itself
| 1 | 2 | 3 | |
|---|---|---|---|
| 1 | 1.000 | 0.614 | 0.094 |
| 2 | 0.614 | 1.000 | 0.058 |
| 3 | 0.094 | 0.058 | 1.000 |
The JSON this exports
{
"model": "Xenova/all-MiniLM-L6-v2",
"revision": "751bff37182d3f1213fa05d7196b954e230abad9",
"dtype": "q8",
"dimensions": 384,
"texts": [
"How do I reset my password?",
"I forgot my login",
"Our pricing starts at $9 a month"
],
"similarity": [
[
1,
0.614,
0.094
],
[
0.614,
1,
0.058
],
[
0.094,
0.058,
1
]
]
}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.
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.