Not a mask. Another computer.
NinjaSurfer changes the device inside the Chromium engine — where sites actually look. Canvas, WebGL and WebGPU pixels, GPU and OS math, text rendering and WebRTC answer like the persona's real hardware, on any host.

Others paint a mask.
We change the machine.
A typical anti-detect browser rewrites what JavaScript reports and lets the host's hardware draw everything else. A page compares the two — and they don't match.
Hardware, rebuilt in software
We don't hide the host. We model the persona's GPU, OS math, text rendering and network — and the page measures that device instead.
Our own GPU emulation
Readable graphics are rendered by a software model of the persona's GPU, so canvas, WebGL and WebGPU output matches that GPU on any host — even on a server without a graphics card. Per-vendor shader math tables are bit-exact against real hardware on the probes we test.
Native OS math, on any host
Math functions (sin, tan, pow, …) and CSS trigonometry return exactly what the persona's operating system returns, bit for bit, whatever computer runs the browser.
Text the OS would draw
Windows DirectWrite and macOS CoreText raster models, with each OS's native font set and fallback chains — glyph pixels, not just font names.
WebRTC that never leaks
The host's real IP never reaches the page. ICE candidates carry the exit IP of your proxy or VPN, and STUN answers with it even through proxies without UDP. WebRTC agrees with everything else.
Any persona on any host
One engine runs Windows, macOS and Android personas on Linux, macOS and Windows computers — no separate builds, no compromises per host.
verified devices in production
Every profile is a real configuration — GPU, CPU, memory, screen and fonts that exist together in the wild. The catalog is larger: a device is handed out only after it passes our checks.
Every drawn profile passes leading fingerprinting checks with no device flags (internal test, Oct 2026).
Every proxy. Every VPN.
Proxies with authentication and built-in VPN clients — each profile gets its own route. Timezone and geolocation follow the exit IP automatically.
Where the difference is
The checks a page runs today go far beyond the User-Agent. Here is what changes when the persona lives in the engine.
One test. One IP.
Five browsers.
We opened the same fingerprinting check, Fingerprint Pro Playground, in NinjaSurfer and in four popular anti-detect browsers: a fresh Windows 10 profile in each, the same Mac, the same home Wi-Fi. NinjaSurfer is the only one the check found nothing wrong with.
About the red “Proxy” line
Every run used one and the same home Wi-Fi connection. That IP is listed in a residential-proxy database, so the check flags “Proxy detection” for every browser alike, NinjaSurfer included. It describes the connection, not the browser: same IP, same flag, in all five profiles.
See for yourself
Measured on 20 October 2026 at demo.fingerprint.com/playground on one macOS host, with a Windows 10 profile in each browser; every browser reported Chrome 155. Versions: Octo Browser 3.1.3, Dolphin{anty} 2026.287, Vision and AdsPower as released that day.
A control panel you'll enjoy
Profiles, proxies, VPNs and sync in one place. Press Start — the profile opens in a full Chrome window with its name next to the address bar. Try it below.
Profiles
Import Quick TempFull Chrome UI
Menu, DevTools, settings and extensions — with a profile badge by the address bar and its name on the dock icon.
Always-fresh engine
The app keeps one up-to-date engine for every profile. No profiles stuck on an aging browser core.
Sync between computers
Everything a profile holds is encrypted on your computer with your workspace key before it reaches our server. A profile runs on one computer at a time.
Proxies and VPN built in
Check a proxy in one click, import VPN subscriptions, and see at once if a route can't carry WebRTC.
Your Playwright scripts, a new device
The Node.js SDK launches NinjaSurfer through Playwright. From Python or any other language, start a profile with ninjasurfer start or in the app, and connect Playwright to it over CDP.
- Drop-in Playwright: the same pages, locators and contexts.
- navigator.webdriver stays false; Playwright's site-visible switches are dropped.
- Turn on Automation in the app's settings, start a profile and copy its CDP address: attach Playwright, Puppeteer or any tool.
- An MCP server and a built-in agent for AI workflows.
Connect your AI agent.
It controls everything.
One click adds NinjaSurfer to your agent over MCP. Then just ask.

MCPAnother MCP client? The app's Agents page adds NinjaSurfer to it for you.Setup guide
Starting profiles needs an active plan, the same as in the app.
The page, as the browser
understands it
NinjaSurfer hands your agent Chromium's own page model: the text, the structure and every button, link and field, in one compact snapshot it can act on.
From the browser itself
Chromium builds it, not a script injected into the page.
Invisible to the site
No DOM changes and no events: the page can't tell it was read.
A small, reliable context

Ride the wave.
Leave the mask behind.
Early access is opening for Linux, macOS and Windows. Write to us — we'll send access as soon as your platform opens.