NEWChromium 156 engine is out

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.

0
verified device profiles
0
persona OS: Windows, macOS, Android, iOS
0
host OS: Linux, macOS, Windows
0
lines of injected JavaScript
NinjaSurfer
WebGL rendererIntel UHD Graphics · D3D11
Text engineSegoe UI · DirectWrite
WebRTCsrflx = exit IP
navigator.platformWin32
Canvas hash9f3a…c21e
Canvas 2DWebGLWebGPU GPU shader mathMath.sin · tan · powCSS trig DirectWrite textCoreText textFont fallback EmojiUser-AgentClient Hints WebRTC ICEMedia devicesTimezone GeolocationhardwareConcurrencynavigator.webdriver
Engine-level, not JS

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.

    What a page reads
    Our own emulation

    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.

    UNMASKED_RENDERER—
    Backend—
    Shader math—
    Canvas hash—

    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.

    Math.tan(1e300)…

    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.

    DirectWrite
    CoreText

    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.

    Browser10.0.0.7
    Proxy / VPN185.12.4.9
    WebsiteSTUN
    a=candidate:1 1 udp 1686052607 185.12.4.9 51820 typ srflx
    Real IP never exposed STUN via any proxy

    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.

    Win
    macOS
    Android
    Linux host
    Mac host
    Windows host
    Real device profiles
    0

    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).

    Network

    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.

    Side by side

    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.

    Benchmark · 20 Oct 2026

    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.

    IP

    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.

    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.

    The app

    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.

    NinjaSurfer

    Profiles

    Import Quick Temp
    All systems Any status Folder Trash · 2
    NameStateStatusTagsDeviceProxy

    Full 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.

    For developers

    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.
    
            
    AI agents · MCP

    Connect your AI agent.
    It controls everything.

    One click adds NinjaSurfer to your agent over MCP. Then just ask.

    One click to connect
    Claude Code
    Claude Desktop
    Cursor
    Windsurf
    VS Code (Copilot)
    Cline
    Codex CLI
    Gemini CLI
    Zed
    Continue
    NinjaSurfer Add to agentConnected
    1Click “Add to agent”
    2Ask in plain words
    3The agent does the rest
    Full control: profiles and the browser
    MCP
    Profiles
    Start · stop
    Proxy check
    Tabs
    Navigate
    Click
    Type
    Scroll
    Screenshots
    Upload files
    Cookies
    JavaScript
    Read pages
    CDP
    Human-like input Every action logged Runs on your computer

    Another 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.

    AI agents · page model

    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

    Raw HTMLScreenshotPage model
    MCPpage_content DevToolsPage.getAIPageContent SDKgetAIPageContent(page) How agents use it

    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.