Need help with ws-scrcpy?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

151 Stars 35 Forks MIT License 209 Commits 14 Opened issues


Web client prototype for scrcpy.

Services available


Need anything else?

Contributors list

# 166,507
195 commits

ws scrcpy

Web client for scrcpy and more.


Browser must support the following technologies: * WebSockets * Media Source Extensions and h264 decoding (MseDecoder) * WebWorkers (tinyh264) * WebAssembly (Broadway.js and tinyh264)

Server: * Node.js v10+ * node-gyp (installation) *

executable must be available in the PATH environment variable

Device: * Android 5.0+ (API 21+) * Enabled debugging * On some devices, you also need to enable an additional option to control it using keyboard and mouse.

Build and Start

Make sure you have installed node.js, node-gyp and build tools ```shell git clone cd ws-scrcpy

For stable version find latest tag and switch to it:

git tag -l

git checkout vX.Y.Z

npm install npm start ```

Supported features

Screen casting

The modified version of Genymobile/scrcpy used to stream H264 video, which then decoded by one of included decoders.

Remote control

  • Touch events (including multi-touch)
  • Multi-touch emulation: CTRL to start with center at the center of the screen, SHIFT + CTRL to start with center at the current point
  • Capturing keyboard events
  • Injecting text (ASCII only)
  • Copy to/from device clipboard
  • Device "rotation"

File push

Drag & drop an APK file to push it to the

directory. You can install it manually from the included xterm.js terminal emulator (see below).

Remote shell

Control your device from

adb shell
in your browser.

Debug WebPages/WebView


Known issues

  • New versions are most likely not incompatible with previous ones. If you do upgrade, then manually stop
    or just reboot the device.
  • The server on the Android Emulator listens on the internal interface and not available from the outside (select
    proxy over adb
    in interfaces list)
  • Tinyh264Decoder may fail to start, try to reload the page.
  • MseDecoder reports too many dropped frames in quality statistics: needs further investigation.

Security warning

Be advised and keep in mind: * There is no encryption between browser and node.js server (plain HTTP). * There is no encryption between browser and WebSocket server (plain WS). * There is no authorization on any level. * The modified version of scrcpy with integrated WebSocket server is listening for connections on all network interfaces. * The modified version of scrcpy will keep running after the last client disconnected.


This project also contains front-end for NetrisTV/ws-qvh - application for screen streaming and control of iOS devices in a browser.

Run this to build it:

shell script
npm install
npm run dist:qvhack:frontend

Related projects

scrcpy websocket fork

Currently, support of WebSocket protocol added to v1.16 of scrcpy * Prebuilt package * Source code

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.