For site owners
Embed a test on your own site
Three of our tests run inside an iframe on your page. One block of HTML, no script tag, no API key, no account. Free for commercial use as long as the caption credit stays.
What you can embed today
- Reaction Time Test
/embed/reaction-time/Wait for red to turn green, then click as fast as you can. Five trials, then we place you in the population. - Mouse Test
/embed/mouse-test/Press every button, scroll both ways, move the cursor. Each one lights up when it registers. - Visual Memory Test
/embed/visual-memory-test/Squares flash, then vanish. Click the ones that lit up. The grid grows as you go.
The other fifteen tests on the site are not embeddable yet. If you want one of them on your page, the fastest route is to link to it: every test page works on its own and needs no setup at all.
The code
This is the whole integration. Pick the test you want and paste the block whole. Each test page also carries its own copy button with three size presets (480 x 360, 640 x 480, Fluid x 520), so you do not have to edit any of this by hand.
Reaction Time Test
<!-- BenchSelf embed -->
<div style="max-width:640px">
<iframe src="https://benchself.com/embed/reaction-time/"
width="100%" height="520" loading="lazy"
title="Reaction Time Test - BenchSelf"
sandbox="allow-scripts allow-same-origin allow-popups"
style="border:1px solid #e5e7eb;border-radius:8px"></iframe>
<p style="font:13px/1.5 system-ui;color:#6b7280;margin:6px 0 0">
<a href="https://benchself.com/">Reaction Time Test</a> by BenchSelf.
See the <a href="https://benchself.com/statistics/">population data</a>.
</p>
</div>Mouse Test
<!-- BenchSelf embed -->
<div style="max-width:640px">
<iframe src="https://benchself.com/embed/mouse-test/"
width="100%" height="520" loading="lazy"
title="Mouse Test - BenchSelf"
sandbox="allow-scripts allow-same-origin allow-popups"
style="border:1px solid #e5e7eb;border-radius:8px"></iframe>
<p style="font:13px/1.5 system-ui;color:#6b7280;margin:6px 0 0">
<a href="https://benchself.com/mouse-test/">Mouse Test</a>
by <a href="https://benchself.com/">BenchSelf</a>
</p>
</div>Visual Memory Test
<!-- BenchSelf embed -->
<div style="max-width:640px">
<iframe src="https://benchself.com/embed/visual-memory-test/"
width="100%" height="520" loading="lazy"
title="Visual Memory Test - BenchSelf"
sandbox="allow-scripts allow-same-origin allow-popups"
style="border:1px solid #e5e7eb;border-radius:8px"></iframe>
<p style="font:13px/1.5 system-ui;color:#6b7280;margin:6px 0 0">
<a href="https://benchself.com/visual-memory-test/">Visual Memory Test</a>
by <a href="https://benchself.com/">BenchSelf</a>
</p>
</div>The caption sits outside the iframe on purpose. It is plain HTML in your document, nothing of ours ever rewrites it, and it is the only thing we ask for in exchange. Reword it to suit your page if you like, but keep both links.
The caption links and the iframe URL are not interchangeable. The captions point at pages a reader should actually land on: the test itself, and either our home page or the population data behind the curve. The iframe points at /embed/, which is a stripped frame carrying noindex and is not worth linking to. Each block above already has all of this filled in correctly.
Parameters
All optional, all appended to the iframe URL as a query string.
| Parameter | Values | Default | What it does |
|---|---|---|---|
| theme | light, dark, auto | auto | auto follows your reader's system setting. Set it explicitly if your page is always one or the other. |
| compact | 0, 1 | 0 | 1 drops the heading and the intro line, leaving the test and the readout. Use it when your own heading already says what the test is. |
| ref | your domain | empty | Labels the outbound link so we can tell your readers apart from everyone else's. It is not stored anywhere and it is not required. |
Sizing
The iframe has a fixed height and fluid width, which is the combination that survives a responsive layout. Give the wrapper a max-width and leave the iframe at width="100%". 520 pixels of height is enough for the test and its readout on a phone; below about 360 pixels wide the test still works but the population strip stacks under it.
Keep loading="lazy". It means the embed costs your page nothing until a reader scrolls to it, which is also why it will not move your Core Web Vitals.
Live preview
This is the exact URL in the snippet above, running here.
Licence
Free to embed, including on commercial and ad-supported sites, on one condition: both caption links stay visible next to the test. You do not need to ask us first and there is nothing to sign.
- Do not add
rel="nofollow"to the caption links, and do not inject them with JavaScript. If the credit is not in your HTML, the arrangement does not work for us. - Do not rehost the test, copy it into your own page, or wrap it in your own branding. Point the iframe at us and it stays current.
- Do not present the test as a medical or diagnostic tool. It measures what a browser can measure, which is not a clinical instrument.
What the embed does with data
A result taken inside an embed is recorded anonymously and is deliberately kept out of the published population curves. Browsers partition storage inside a third-party frame, so we cannot tell a reader's first attempt from their tenth, and a distribution that cannot do that is a distribution that drifts toward whoever practises. Percentiles in an embed are read from the same curves as the main site.
We record the domain an embed runs on, and nothing else about your readers. No IP addresses, no user agents, no accounts, no cookies. The privacy page is the whole list, and the methodology page explains where the curves come from.
Questions
Email support@benchself.com. If you want a test that is not on the list above, say which one and which page it would go on; that is how the next one gets picked.