Ws-scrcpy May 2026

ws-scrcpy does not have built-in authentication. By default, anyone on your network can access your device screen. To secure it:

In the world of Android development and device management, scrcpy (Screen Copy) has long been a gold standard. This open-source tool allows users to display and control Android devices via USB or TCP/IP from a desktop computer, boasting low latency and high performance.

However, traditional scrcpy has one limitation: it requires a native client installed on your operating system (Windows, macOS, or Linux). Enter ws-scrcpy – a web-based implementation that brings the power of scrcpy to any browser, anywhere on your network. ws-scrcpy

Understanding the data flow is crucial for debugging.

  • Client (Browser): Connects to the WebSocket server. It uses the browser's native video decoder (WebCodecs API or Broadway.js fallback) to render the screen.
  • ws-scrcpy is a WebSocket proxy for the Android Debug Bridge (ADB) that includes a built-in web server. It is a Node.js-based graphical interface that allows you to:

    Unlike VNC or TeamViewer, ws-scrcpy uses the Android SurfaceControl API (via scrcpy server), resulting in near-native latency (30-70ms) and 60fps mirroring. ws-scrcpy does not have built-in authentication

    docker run -it --rm \
      --device /dev/bus/usb \
      -p 8000:8000 \
      --name ws-scrcpy \
      ghcr.io/totvs/ws-scrcpy:latest
    

    On Linux servers, use pm2 or screen:

    npm install -g pm2
    pm2 start ws-scrcpy --name "android-mirror" -- --port 8000
    pm2 save
    pm2 startup
    

    If port 8000 is blocked, use the --port flag: Client (Browser): Connects to the WebSocket server

    ws-scrcpy --port 8080
    

    If you need browser-based control and you value open-source software, WS-SCRCPY is currently the undisputed champion.