Genymobile/scrcpy: Display and control your Android device
AI-assisted โ drafted with AI, reviewed by editorsMei-Lin Zhang
ML researcher focused on autonomous agents and multi-agent systems.
# scrcpy Review: The Ultimate Open-Source Android Screen Mirroring Tool ๐ **140K+ GitHub stars. Zero cost. Zero bloat. Pure performance.** If you've ever struggled with clunky, laggy Android screen...
scrcpy Review: The Ultimate Open-Source Android Screen Mirroring Tool ๐
140K+ GitHub stars. Zero cost. Zero bloat. Pure performance.
If you've ever struggled with clunky, laggy Android screen mirroring solutions that demand root access, force you to install companion apps, or worse โ require an account sign-up โ then scrcpy is about to change your life.
Scrcpy (pronounced "screen copy") is a free, open-source application that mirrors and controls Android devices via USB or TCP/IP. It's lightweight, blazing fast, and works on Linux, Windows, and macOS โ all without installing anything on your Android device. Let's dive deep into what makes this project one of the most celebrated open-source tools on GitHub.
๐ What Is scrcpy and Why Does It Matter?
At its core, scrcpy is a screen mirroring and remote control solution for Android devices. But calling it just "screen mirroring" is like calling a Swiss Army knife just a "knife."
Developed by Genymobile, the company behind the Genymotion Android emulator, scrcpy leverages native technologies โ FFmpeg, SDL2, and ADB โ to deliver an experience that rivals (and often surpasses) commercial alternatives costing hundreds of dollars.
The philosophy is simple: provide a native, non-intrusive, high-performance way to display and control Android devices from a desktop computer. No root. No app installation. No account. No ads. No internet required.
With over 140,690 stars on GitHub and a thriving community of contributors, scrcpy has become the de facto standard for Android screen mirroring among developers, testers, and power users worldwide.
๐ฅ Why scrcpy Stands Out From the Crowd
The Android mirroring landscape is crowded โ but scrcpy carves out a unique position. Here's how it compares to common alternatives:
| Feature | scrcpy | Commercial Tools | Other FOSS Tools |
|---|---|---|---|
| Cost | Free (Apache-2.0) | $50โ$300+ | Free |
| Root Required | โ No | โ No | โ ๏ธ Sometimes |
| App Installation | โ None on device | โ Companion app | โ ๏ธ Varies |
| Performance | 30โ120 fps | Varies | Usually lower |
| Latency | 35โ70 ms | 100โ300 ms | Higher |
| Startup Time | ~1 second | 5โ15 seconds | Varies |
| Audio Forwarding | โ Yes (Android 11+) | โ Usually | โ ๏ธ Limited |
| Cross-Platform | Linux, Windows, macOS | Varies | Usually limited |
| Recording | โ Built-in | โ Usually | โ ๏ธ Sometimes |
| Privacy | No internet needed | โ ๏ธ Telemetry risks | Varies |
The numbers speak for themselves. When you're getting sub-100ms latency, up to 120fps, and 1080p+ resolution from a tool that installs nothing on your device and costs absolutely nothing โ that's exceptional.
๐ Feature Breakdown
Let's explore the full feature set that makes scrcpy so powerful:
๐ฅ๏ธ Core Mirroring
- High performance video: 30 to 120 fps depending on device capability
- Resolution up to 1920ร1080 (or higher on supported devices)
- Low latency: As low as 35โ70ms for real-time interaction
- Near-instant startup: First frame appears in approximately 1 second
- Works over USB and TCP/IP (wireless)
๐ Audio Forwarding
- Forward Android audio to your computer (Android 11+)
- Supports both input (microphone) and output (media) audio streams
๐ฌ Recording
- Record your device screen directly to a file
- Supports multiple video codecs including H.264 and H.265
- Combine with audio for complete capture
๐ท Camera Mirroring (Android 12+)
- Mirror your device's front or rear camera to the computer
- Use your Android device as a webcam via V4L2 (Linux)
- Select camera facing (front/back) and resolution
๐ฎ Control & Input
- Full mouse and keyboard control of the Android device
- Copy-paste in both directions โ seamless clipboard sharing
- Gamepad support with HID gamepad simulation
- OTG mode: Control the device without USB debugging, no mirroring
- HID keyboard and mouse simulation for physical device control
๐ผ๏ธ Virtual Display
- Create a separate virtual display independent of the physical screen
- Keep the virtual display active while the physical screen sleeps
- Perfect for kiosk mode, presentations, or background tasks
๐ง Configuration
- Highly configurable video quality (bitrate, resolution, codec)
- Adjustable frame rate limits
- Tunneling support for custom ADB connections
- Extensive keyboard shortcuts for window management
โก Quick Start: Get Running in 60 Seconds
Getting started with scrcpy is remarkably simple. Here's how:
Prerequisites
- Android device with API 21+ (Android 5.0 or later)
- USB debugging enabled on your device
- Go to Settings โ About Phone โ Tap Build Number 7 times
- Then go to Settings โ Developer Options โ USB Debugging
- ADB (Android Debug Bridge) installed on your computer
โ ๏ธ Xiaomi Users: You may need to enable USB Debugging (Security Settings) โ a separate toggle from standard USB debugging. A reboot is required after enabling it.
Installation
Install scrcpy using your preferred package manager or download binaries directly:
# Debian/Ubuntu
sudo apt install scrcpy
# Fedora
sudo dnf install scrcpy
# macOS (Homebrew)
brew install scrcpy
# Windows (via winget)
winget install Genymobile.scrcpy
# Or download directly from:
# https://github.com/Genymobile/scrcpy/releases
Basic Usage
Simply connect your Android device via USB and run:
scrcpy
That's it. You should see your Android screen appear on your desktop within a second.
Common Usage Examples
Limit resolution and frame rate, disable audio, use HID keyboard:
scrcpy --video-codec=h265 --max-size=1920 --max-fps=60 --no-audio --keyboard=uhid
# Short version:
scrcpy --video-codec=h265 -m1920 --max-fps=60 --no-audio -K
Launch an app in a new virtual display:
scrcpy --new-display=1920x1080 --start-app=org.videolan.vlc
Record the device camera in H.265 at 1080p with microphone:
scrcpy --video-source=camera --video-codec=h265 --camera-size=1920x1080 --record=file.mp4
Use your Android phone as a webcam (Linux):
scrcpy --video-source=camera --camera-size=1920x1080 --camera-facing=front --v4l2-sink=/dev/video2 --no-playback
OTG mode โ control without mirroring (no USB debugging needed!):
scrcpy --otg
Gamepad support:
scrcpy --gamepad=uhid
scrcpy -G # short version
๐ก Must-Know Tips
- Reducing resolution can dramatically improve performance:
scrcpy -m1024 - Right-click triggers the
BACKbutton - Middle-click triggers the
HOMEbutton - Alt+F toggles fullscreen mode
- There are many more shortcuts to discover
๐๏ธ Technical Deep Dive: How It Works
scrcpy's impressive performance comes from its thoughtful architecture:
- ADB Connection: Communicates with the Android device via Android Debug Bridge, which executes a lightweight server binary on the device
- Screen Capture: The device-side server captures the screen using Android's
screenrecordprotocol - Video Encoding: H.264/H.265 hardware encoding on the device for efficient data transfer
- Decoding & Rendering: FFmpeg decodes the video stream, and SDL2 renders it in a desktop window
- Input Injection: Keyboard and mouse events are captured locally and injected back to the device via ADB
The entire device-side component is a temporary binary โ nothing is permanently installed, ensuring complete non-intrusiveness.
Performance Benchmarks
| Metric | Typical Value |
|---|---|
| Startup time | ~1 second |
| Latency | 35โ70ms |
| Frame rate | 30โ120 fps |
| Max resolution | 1920ร1080+ |
| CPU usage (desktop) | Minimal |
| Memory footprint | ~50โ100 MB |
๐ ๏ธ Build from Source
For those who want to compile scrcpy themselves, the process is well-documented:
# Clone the repository
git clone https://github.com/Genymobile/scrcpy.git
cd scrcpy
# Install dependencies (Debian/Ubuntu example)
sudo apt install build-essential cmake libsdl2-dev libavcodec-dev \
libavformat-dev libavutil-dev libusb-1.0-0-dev
# Build
meson xbuild
cd xbuild
ninja
# Install
sudo ninja install
The project is written in C, making it extremely lightweight and efficient. Dependencies include SDL2, FFmpeg (libav), and libusb โ all mature, well-maintained libraries.
๐ค Contributing and Community
With 13,018 forks and contributors from around the globe, the scrcpy community is one of the most active in the open-source Android ecosystem. The project is licensed under Apache-2.0, making it permissive for both personal and commercial use.
Whether you're filing a bug, requesting a feature, or submitting a pull request, the maintainers are responsive and the contribution guidelines are clear.
๐ Final Verdict
In a world where most screen mirroring solutions come wrapped in bloatware, subscription fees, or privacy-invasive telemetry, scrcpy is a breath of fresh air. It delivers what matters most: performance, simplicity, and freedom.
What truly sets scrcpy apart is the combination of:
- Sub-100ms latency at up to 120fps โ making it viable for real-time interaction, not just passive viewing
- Zero device footprint โ nothing installed, nothing left behind
- Complete privacy โ no internet connection required, ever
- Rich feature set โ audio forwarding, camera mirroring, virtual displays, recording, gamepad support, OTG mode, and more
- True cross-platform support โ Linux, Windows, and macOS, all from the same codebase
- Active maintenance โ regular updates, responsive maintainers, and a thriving community
Whether you're a mobile developer needing reliable device mirroring, a tester running manual QA, a streamer wanting to showcase Android apps, or simply a power user who wants to use their phone from a bigger screen โ scrcpy is the tool you've been waiting for.
โญ If you find scrcpy useful, consider starring the repository on GitHub to support the project.
scrcpy proves that the best tools don't need to cost money or compromise your privacy. They just need to work โ and scrcpy works brilliantly.
This article covers scrcpy v4.0. For the latest features and documentation, visit the official scrcpy repository on GitHub.