scrcpy: Mirror & Control Android From Your PC (2026)

Quick answer. scrcpy is a free, open-source tool from Genymobile that mirrors and controls a real Android phone from your PC over a plain USB or Wi-Fi (ADB) connection. It needs no app on the device, no root, and no account — only USB debugging. Because it drives a physical device, interaction latency is far lower than an emulator's.

Emulators are great until you need the thing an emulator can't give you: a real GPU, a real camera, real sensors, a real SIM, and real performance on the exact hardware your users hold. That's where scrcpy (pronounced "screen copy") earns its place in a developer or QA toolkit. It mirrors and controls an actual Android device from your computer over ADB — no virtualization layer, no BlueStacks-style bloat, no ads, and latency low enough that the mirrored screen feels like the phone in your hand.

This guide covers installation on Windows, macOS, and Linux, your first connection, the power-user flags that make scrcpy genuinely useful for testing, and an honest breakdown of when to reach for scrcpy versus an emulator.

What is scrcpy and what do you need to run it?

scrcpy is maintained by Genymobile and released under the Apache 2.0 license. The current release is v4.1 (July 2026). It streams the device's video (and audio) to a desktop window and injects your keyboard, mouse, and clipboard back into the device. Nothing is installed on the phone — scrcpy pushes a small server binary over ADB at runtime and removes it when you disconnect.

Requirements are minimal:

  • Android 5.0 (API 21) or newer on the device.
  • USB debugging enabled (Developer Options). The one exception is OTG mode, covered below.
  • No root. scrcpy never needs elevated access on the device.
  • Audio forwarding needs Android 11+; on older devices you still get video and full control.

How do you install scrcpy on Windows, macOS, and Linux?

scrcpy ships as a single self-contained package. On Windows the release archive even bundles a compatible adb, so there's nothing else to set up.

OSRecommended install
Windowswinget install --exact Genymobile.scrcpy, or download the release ZIP from the GitHub Releases page and extract it (adb is bundled). Scoop and Chocolatey also carry it.
macOSbrew install scrcpy (Homebrew pulls in android-platform-tools for adb).
Linux (Debian/Ubuntu)sudo apt install scrcpy. For the latest build, sudo snap install scrcpy or build from source — distro packages can lag a version or two.

Confirm the install and that your device is seen:

scrcpy --version
adb devices

If adb devices lists your phone with the word device next to the serial, you're ready.

How do you make the first connection?

The device needs USB debugging switched on. It's a two-step unlock in Android settings:

  1. Open Settings → About phone and tap Build number seven times to unlock Developer Options.
  2. Open Settings → System → Developer options and enable USB debugging.
  3. Plug the phone into your computer with a USB cable. On the phone, accept the "Allow USB debugging?" prompt (tick "always allow" for this computer).
  4. Run one command:
scrcpy

A window opens showing your live device. Your mouse acts as touch, your keyboard types into focused fields, and the scroll wheel scrolls. Right-click is BACK, middle-click is HOME. That's the whole setup — no pairing dance, no account, no cloud.

Which scrcpy flags do developers actually use?

The defaults are fine for a quick look, but a handful of flags turn scrcpy into a real testing instrument. The default modifier key (MOD) referenced in shortcuts is left Alt or left Super.

GoalCommand
Mirror with the device screen off, kept awakescrcpy --turn-screen-off --stay-awake (short: scrcpy -Sw)
Cap resolution and framerate (smoother on slow links)scrcpy --max-size 1024 --max-fps 60
Lower the video bit rate (default is 8 Mbps)scrcpy --video-bit-rate 2M
Record the session to a filescrcpy --record=session.mp4
Record headless with no mirror window (CI / servers)scrcpy --no-window --record=session.mkv
View only, disable all controlscrcpy --no-control
Show finger taps on screen (demos & bug repros)scrcpy --show-touches
Choose one of several connected devicesscrcpy -s <serial>
Keyboard/mouse only, no USB debuggingscrcpy --otg

Turn the screen off (the flag everyone wants)

When you're mirroring, the phone's own display is redundant — it drains battery and can leak notifications on your desk. Blank the device screen while keeping full control on your PC:

scrcpy --turn-screen-off --stay-awake

At runtime you can toggle this with MOD+o (screen off) and MOD+Shift+o (screen back on). The device is still fully live — only its physical panel is dark.

Record what happens on the device

scrcpy records straight to MP4 or MKV without any capture-card or screen-recording app on the phone:

scrcpy --record=repro.mp4

Press Ctrl+C in the terminal to stop and finalize the file cleanly. This is the fastest way to attach a reliable, real-device video to a bug report. Add --no-window to record without opening a mirror window at all, which is handy on a headless CI box or a device shelf.

Go wireless with ADB over Wi-Fi

USB gives the lowest latency, but you can cut the cable. The simplest path: plug in once and let scrcpy switch the device to TCP/IP automatically, then unplug.

# Phone plugged in via USB; switches to Wi-Fi and drops the cable
scrcpy --tcpip

# Or connect directly to a device already listening on TCP/IP
scrcpy --tcpip=192.168.1.50:5555

The manual equivalent, if you prefer driving ADB yourself:

adb tcpip 5555
adb connect 192.168.1.50:5555
scrcpy

Expect noticeably higher latency over Wi-Fi than over USB, especially on a congested network — fine for demos and light QA, less ideal for anything timing-sensitive.

Use the clipboard bridge

Copy-paste crosses the boundary in both directions, which alone saves a lot of typing when you're filling forms or pasting tokens into an app:

  • MOD+c — copy the device clipboard to your computer.
  • MOD+v — push your computer clipboard to the device and paste.
  • MOD+Shift+v — paste your computer clipboard as raw key events, for fields that reject a normal paste.

Control without USB debugging (OTG mode)

OTG mode simulates a physical keyboard and mouse over HID, as if they were plugged into the device directly. It needs no ADB and no USB debugging — but it also disables mirroring, so you're controlling a device you look at directly. It's useful for locked-down or freshly-reset phones:

scrcpy --otg

scrcpy vs an emulator: which should you use?

This is the real decision, and the honest answer is "both, for different jobs." An emulator creates a virtual Android device on your machine; scrcpy mirrors a physical one. The difference in what they can prove is significant.

ScenarioBetter choiceWhy
Reproducing a device- or GPU-specific bugscrcpyReal hardware, real drivers, real rendering path.
Testing camera, sensors, NFC, fingerprint, real SIMscrcpyEmulators fake or omit most hardware.
Low-end / real-world performance and battery behaviorscrcpyYou measure the actual device under actual thermal limits.
Recording a demo or bug repro from a real phonescrcpyClean MP4 capture with zero on-device software.
No physical device on handEmulatorscrcpy needs real hardware to mirror.
Testing many API levels / screen sizes fastEmulatorSpin up any form factor or Android version on demand.
Snapshot / restore a known state, disposable envsEmulatorSave and roll back device state instantly.
Automated CI without a device farmEmulatorHeadless VMs are easy to provision at scale.

The key trade-off: emulators are flexible (any Android version, any screen size, snapshots, CI) but virtualized — they need CPU virtualization, chew RAM, and can never fully reproduce real-hardware behavior. scrcpy is faithful and lightweight — it's the ground truth of how your app behaves on that exact device — but it's tied to a physical phone and one device per session. Many teams keep an emulator matrix for breadth and a shelf of real phones driven by scrcpy for depth.

If you want the full landscape of virtual-device options to pair with scrcpy, our complete guide to Android emulators in 2026 compares the leading emulators, their virtualization requirements, and where each fits. For a broader look at building a real-device QA process, see our mobile app testing guide.

Honest limitations to know before you rely on it

  • You need a physical device plus a cable or a stable network — scrcpy mirrors, it doesn't create a device.
  • DRM-protected video (some streaming apps) can render as a black rectangle by design.
  • Wireless adds latency and depends on Wi-Fi quality; USB stays the gold standard for responsiveness.
  • Audio forwarding is Android 11+. Older devices still mirror video and accept full control.
  • OTG mode disables mirroring — it's input-only.

For most developer and QA workflows, none of these are dealbreakers. scrcpy remains the fastest, cleanest way to put a real Android device on your desktop and drive it with a keyboard and mouse.

If you're scaling a team that lives in this kind of real-device testing, Codersera can help you hire vetted remote developers and QA engineers who already work this way.

FAQ

Is scrcpy free?

Yes. scrcpy is open source under the Apache 2.0 license, with no ads, no account, and no paid tier. The official source and releases live on Genymobile's GitHub repository.

Does scrcpy require root?

No. scrcpy works on any Android 5.0+ device with USB debugging enabled. It never needs root access.

Can scrcpy mirror over Wi-Fi?

Yes. Use scrcpy --tcpip to auto-switch a USB-connected device to wireless, or connect to a device already on TCP/IP with scrcpy --tcpip=<ip>:5555. Latency is higher than USB but fine for demos and light testing.

How do I turn off the phone screen while mirroring?

Run scrcpy --turn-screen-off --stay-awake (short form scrcpy -Sw), or toggle it live with the MOD+o shortcut. The device stays fully functional; only its physical panel goes dark.

Can scrcpy control a device without USB debugging?

Yes, using OTG mode (scrcpy --otg). It simulates a physical keyboard and mouse over HID and needs no ADB, but it disables mirroring — you look at the device directly.

Does scrcpy work with an emulator?

Yes. Any emulator that exposes an ADB connection (Android Studio's emulator, for example) can be mirrored, though performance depends on the emulator's virtualized hardware. scrcpy shines most on physical devices.

Does scrcpy work with iPhone?

No. scrcpy is Android-only. It relies on ADB, which iOS does not use.

Can scrcpy record the screen?

Yes. scrcpy --record=file.mp4 saves a clean recording with no app on the device. Press Ctrl+C to finalize the file, and add --no-window to record headlessly.