Speed test widget for websites
Embed a speed test on your website
A white-label speed test your visitors run on your own page: your branding, real download, upload, latency and jitter, and every result in your dashboard. Nothing to host.
30-day free trial · 100 API calls · No credit card · Plans from $49/month
What you see above is the same test, embedded on this page with the snippet below.
<button onclick="SomApi.startTest()">
Test my speed
</button>
<script src="https://speedof.me/api/api.js"></script>
<script>
SomApi.account = 'YOUR_API_KEY';
SomApi.domainName = 'yourdomain.com';
SomApi.onTestCompleted = function (r) {
// r.download, r.upload, r.latency, r.jitter
};
</script>const [r, setR] = useState(null);
useEffect(() => {
const s = document.createElement('script');
s.src = 'https://speedof.me/api/api.js';
s.onload = () => {
SomApi.account = 'YOUR_API_KEY';
SomApi.domainName = 'yourdomain.com';
SomApi.onTestCompleted = setR;
};
document.body.appendChild(s);
}, []);// Same numbers, no browser: for a status
// page, a monitor or a support script.
import { SpeedTest } from '@speedofme/mcp';
const r = await new SpeedTest({
apiSecret: process.env.SOM_API_SECRET
}).run();{
"mcpServers": {
"speedofme": {
"command": "npx",
"args": ["-y", "@speedofme/mcp"],
"env": { "SOM_API_SECRET": "..." }
}
}
}What you are embedding
One script tag loads the engine. Your visitor presses a button, the browser downloads and uploads real files to the nearest of our test servers, and your page receives the result. The test files and the servers are ours, so there is nothing to host, size or scale on your side, and the numbers are the Real-World Speed of that visitor's connection, measured from where they sit.
Make it look like yours
The API is headless: it returns numbers and progress events, and you draw the interface. Your logo, your colours, your layout, your wording. Start from the vanilla example (a complete page with a gauge and four result tiles) or the React, Vue and Angular versions, and restyle from there. Nothing in the result says SpeedOf.Me unless you choose to.
Where the results go
Two places, without extra work. Your onTestCompleted callback gets the result object, so you can show it, post it to your own backend, or attach it to a support ticket. And every test also lands in your analytics dashboard with its date, location and device, so you can read what your visitors are getting without building storage first.
| Property | Type | What it means |
|---|---|---|
| download | number | Average download speed in Mbps |
| upload | number | Average upload speed in Mbps |
| maxDownload, maxUpload | number | Peak speeds in Mbps |
| latency | number | Minimum round trip in milliseconds |
| jitter | number | Latency variance in milliseconds |
| testServer | string | Which test server the browser reached |
| ip_address, hostname, userAgent | string | Who ran it, for your records |
Who embeds a speed test
- ISPs and broadband providers: a branded test page for subscribers, and a link support agents send before they escalate a ticket.
- Support and IT portals: a self-service check that answers "is it the connection?" before anyone opens a case.
- Comparison and review sites: a live test next to the plans you compare, with the results in your dashboard.
- Device makers and software vendors: a connection check inside the product, in the same style as the rest of it.
Hiring platforms, contact centres and ISPs have run their connection checks on this API since 2013.
Set-up in three steps
- Register and copy your API key from the portal. The trial needs no card.
- Add your domain in the portal settings. Keys only work on the domains you register, so a copied snippet is useless elsewhere; localhost works from day one for development.
- Paste the snippet where you want the test, wire the callback to your interface, and you are live.
What it costs
Every completed test is one API call. The 30-day trial includes 100 calls and needs no card. Paid plans start at $49 a month for 1,000 calls (Startup), then $149 for 10,000 (Business) and $599 for 100,000 (Pro); enterprise volume is priced on request. The full table is on the API page.
Questions people ask
Can I embed the speed test for free?
You can build and try it free for 30 days with 100 test calls and no card. Running it for your visitors after that is a paid plan, from $49 a month for 1,000 tests. If you want to check your own connection, the free test on our homepage needs no account.
Will it slow my page down?
No. The script is small and loads alongside your page, and the test itself only runs when someone starts it. Nothing transfers until then.
Can I hide your branding?
There is no branding to hide: the API returns numbers and events, and everything the visitor sees is drawn by your page. Attribution is welcome but not required.
Does it work in WordPress, Webflow or other site builders?
Yes. Anywhere you can add a custom HTML or script block, the snippet works. The examples are plain HTML and JavaScript with no framework dependency.
Can I control who runs tests?
Yes. Keys are bound to your registered domains, the test only starts when your code calls startTest(), and your dashboard shows every call, so you can see usage and set your own limits.
30-day free trial · 100 API calls · No credit card · Plans from $49/month