Private beta — join the waitlist
Does your web app run on a $180 phone?
Paste a URL. We run it on a fleet of real devices — flagships to five-year-old mid-range Androids — and send back FPS, frame times, and jank you can act on. No SDK, no device drawer.
Built for WebGL apps, web games, three.js sites, and anyone whose users don't own flagships.
- 60 fps
Pixel 8
2023 · real device
- 34 fps
Galaxy A52
2021 · real device
- 12 fps
Moto G7
2019 · real device
▸ 14 more devices in this run…
Your dev machine is lying to you.
It hits 120 fps on your M-series laptop. Half the web is browsing on hardware from another universe.
Lighthouse has never met a Mali GPU
Simulated throttling slows a desktop CPU and calls it a phone. It can't see shader cost, fill-rate limits, or what a mid-range GPU does to your particle system.
Device clouds test function, not framerate
BrowserStack-style platforms answer “does it render and click correctly?”. They don't tell you that your hero scene runs at 11 fps on a Galaxy A52.
A drawer full of test phones doesn't scale
Manually poking your app on three old Androids before each release is slow, unrepeatable, and the first thing skipped under deadline pressure.
How it works
One input, real hardware, actionable output. That's the whole product.
- 01
Paste your URL
Point us at any public or tunneled URL. Add an optional test script to drive interactions — load a level, open the heavy scene, scroll the page.
$ diro run https://yourapp.com --script warmup.ts - 02
We run it on real phones
Actual hardware in our rack — recent iPhones and Pixels down to the mid-range Samsungs and Motos your users actually own. Instrumented, warmed up, repeatable.
▸ running on 17 devices · Adreno / Mali / Apple GPUs - 03
Get numbers you can act on
Median and p95 FPS, frame-time distribution, jank events, thermal throttling over time — per device. Set FPS budgets and fail your CI when a scene drops below target.
✗ galaxy-a52: median 34 fps < budget 45 fps
The report you actually want
Not a screenshot gallery. Per-device frame timing from real hardware — this is a sample of what every run produces.
Frame time · Galaxy A52 · 30s run
Median FPS
34
p95 frame time
41 ms
Jank events
12
Thermal drop after 90s
−18%
Device matrix · 17 devices, 6 shown
| Device | GPU | FPS | p95 | Verdict |
|---|---|---|---|---|
| iPhone 152023 | Apple A16 | 60 | 17 ms | smooth |
| Pixel 82023 | Mali-G715 | 60 | 18 ms | smooth |
| Galaxy S212021 | Mali-G78 | 54 | 24 ms | smooth |
| Galaxy A522021 | Adreno 618 | 34 | 41 ms | playable |
| Redmi Note 92020 | Mali-G52 | 27 | 52 ms | playable |
| Moto G72019 | Adreno 506 | 12 | 96 ms | janky |
Why not BrowserStack?
Keep it — it's great at functional cross-browser QA. It just answers a different question than the one that's keeping you up at night.
| Device clouds (BrowserStack & co.) | DoesItRunOn | |
|---|---|---|
| Primary question | “Does it work correctly?” | “Does it hit 60 fps?” |
| Core output | Screenshots, logs, test results | FPS, frame times, jank, thermals |
| WebGL & canvas workloads | Runs, but unmeasured | First-class citizen |
| Device pool | Thousands of combos for QA coverage | Curated performance spread, incl. old mid-rangers |
| Setup | Test suites, SDKs, framework configs | A URL (+ optional test script) |
| CI gating | Functional pass / fail | FPS budgets per device |
Full breakdown: DoesItRunOn as a BrowserStack alternative for performance testing →
Early-access pricing
Join the waitlist from any plan to lock in this pricing at launch. No card required today.
Indie
$29 /month
For solo devs and side projects that still need to run everywhere.
- 50 runs / month
- 5 devices per run
- FPS + frame-time reports
- Shareable report links
Team
Most popular$99 /month
For studios and product teams shipping performance-critical web apps.
- 300 runs / month
- 15 devices per run
- CI integration + FPS budgets
- PR status checks
- Run history & regressions
Scale
$299 /month
For platforms and agencies testing many apps across the full fleet.
- Unlimited runs (fair use)
- Full device pool + custom devices
- API access
- Priority hardware queue
Questions people ask us
How is this different from BrowserStack or LambdaTest?
Those platforms are built for functional cross-browser QA: does the page render, do the buttons work. We answer a different question — how fast does it actually run — by measuring FPS, frame times, jank and thermal throttling on real phones. Many teams will use both.
How do you measure FPS on real devices?
Your URL runs in an instrumented browser session on physical hardware in our rack. We record per-frame timing while your scenario plays — real GPU, real thermals, real memory pressure. Runs are repeated and warmed up so numbers are stable enough to gate a release on.
Which devices are in the fleet?
A curated performance spread rather than thousands of QA combos: recent iPhones and Pixels, the popular mid-rangers (Galaxy A-series, Redmi Note), and 4–6 year old budget models your analytics say still exist. Early-access members vote on which devices we add.
Can I test a specific scene or interaction, not just page load?
Yes. Alongside the URL you can provide a Playwright-style test script that drives the app — load a level, open the heaviest scene, scroll the page — and we measure while it runs.
Does it work for Unity WebGL, three.js, PixiJS or Babylon.js?
Anything that runs in a browser. GPU-heavy WebGL and WebGPU content is exactly what the service is built for — that's where simulated testing fails hardest.
Isn't Lighthouse enough?
Lighthouse is great for load performance, and its throttling simulates a slow CPU on your desktop machine. It doesn't measure runtime framerate, and it has no idea what a Mali-G52 does to your shaders. Real hardware is the only honest answer.
Can I run it in my CI?
That's the plan for launch: a CLI and GitHub Action where you set FPS budgets per device, and the check fails when a scene drops below target.
What do I get for joining the waitlist?
Early access when the beta opens, locked-in early-access pricing, and a vote on the device pool and integrations. We send one email when it's live — no drip campaigns.
Something else? Email hello@doesitrunon.app
Find out what your app runs like in the real world
Join the waitlist and be first in line when the beta opens — early members lock in launch pricing and pick the device pool.