Awesome Open Source
Awesome Open Source

ws scrcpy

Web client for Genymobile/scrcpy and more.


Browser must support the following technologies:

  • WebSockets
  • Media Source Extensions and h264 decoding;
  • WebWorkers
  • WebAssembly


  • Node.js v10+
  • node-gyp (installation)
  • adb executable must be available in the PATH environment variable


Build and Start

Make sure you have installed node.js, node-gyp and build tools

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 /data/local/tmp directory. You can install it manually from the included xtermjs/xterm.js terminal emulator (see below).

Remote shell

Control your device from adb shell in your browser.

Debug WebPages/WebView


Known issues

  • The server on the Android Emulator listens on the internal interface and not available from the outside. Select proxy over adb from the list of interfaces.
  • TinyH264Player may fail to start, try to reload the page.
  • MsePlayer 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:

npm install
npm run dist:qvhack:frontend

Related projects

scrcpy websocket fork

Currently, support of WebSocket protocol added to v1.17 of scrcpy

Get A Weekly Email With Trending Projects For These Topics
No Spam. Unsubscribe easily at any time.
javascript (69,571
typescript (11,188
android (6,274
mobile (483
websocket (463
browser (453
phone (80
control (77
remote (74
remote-control (70
screen (30
mirroring (19