[{"data":1,"prerenderedAt":284},["ShallowReactive",2],{"i-ph:moon-bold":3,"i-ph:globe-simple":8,"i-ph:caret-down":10,"i-ph:list":12,"i-ph:heart-fill":14,"i-ph:discord-logo-bold":16,"i-ph:github-logo-bold":18,"i-ph:cookie-bold":20,"feature-article-en-screenMirror-web":22,"i-ph:arrow-left":280,"i-ph:monitor-bold":282},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,256,false,"\u003Cpath fill=\"currentColor\" d=\"M236.37 139.4a12 12 0 0 0-12-3A84.07 84.07 0 0 1 119.6 31.59a12 12 0 0 0-15-15a108.86 108.86 0 0 0-54.91 38.48A108 108 0 0 0 136 228a107.1 107.1 0 0 0 64.93-21.69a108.86 108.86 0 0 0 38.44-54.94a12 12 0 0 0-3-11.97m-49.88 47.74A84 84 0 0 1 68.86 69.51a84.9 84.9 0 0 1 23.41-21.22Q92 52.13 92 56a108.12 108.12 0 0 0 108 108q3.87 0 7.71-.27a84.8 84.8 0 0 1-21.22 23.41\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":9},"\u003Cpath fill=\"currentColor\" d=\"M128 24a104 104 0 1 0 104 104A104.12 104.12 0 0 0 128 24m87.62 96h-39.83c-1.79-36.51-15.85-62.33-27.38-77.6a88.19 88.19 0 0 1 67.22 77.6ZM96.23 136h63.54c-2.31 41.61-22.23 67.11-31.77 77c-9.55-9.9-29.46-35.4-31.77-77m0-16c2.31-41.61 22.23-67.11 31.77-77c9.55 9.93 29.46 35.43 31.77 77Zm11.36-77.6C96.06 57.67 82 83.49 80.21 120H40.37a88.19 88.19 0 0 1 67.22-77.6M40.37 136h39.84c1.82 36.51 15.85 62.33 27.38 77.6A88.19 88.19 0 0 1 40.37 136m108 77.6c11.53-15.27 25.56-41.09 27.38-77.6h39.84a88.19 88.19 0 0 1-67.18 77.6Z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":11},"\u003Cpath fill=\"currentColor\" d=\"m213.66 101.66l-80 80a8 8 0 0 1-11.32 0l-80-80a8 8 0 0 1 11.32-11.32L128 164.69l74.34-74.35a8 8 0 0 1 11.32 11.32\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":13},"\u003Cpath fill=\"currentColor\" d=\"M224 128a8 8 0 0 1-8 8H40a8 8 0 0 1 0-16h176a8 8 0 0 1 8 8M40 72h176a8 8 0 0 0 0-16H40a8 8 0 0 0 0 16m176 112H40a8 8 0 0 0 0 16h176a8 8 0 0 0 0-16\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":15},"\u003Cpath fill=\"currentColor\" d=\"M240 102c0 70-103.79 126.66-108.21 129a8 8 0 0 1-7.58 0C119.79 228.66 16 172 16 102a62.07 62.07 0 0 1 62-62c20.65 0 38.73 8.88 50 23.89C139.27 48.88 157.35 40 178 40a62.07 62.07 0 0 1 62 62\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":17},"\u003Cpath fill=\"currentColor\" d=\"M108 136a16 16 0 1 1-16-16a16 16 0 0 1 16 16m56-16a16 16 0 1 0 16 16a16 16 0 0 0-16-16m76.07 76.56l-67 29.71A20.15 20.15 0 0 1 146 214.9l-8.54-23.13c-3.13.14-6.27.24-9.45.24s-6.32-.1-9.45-.24L110 214.9a20.19 20.19 0 0 1-27.08 11.37l-67-29.71a19.93 19.93 0 0 1-11.3-23.15L34.15 57a20 20 0 0 1 16.22-14.81l36.06-5.93a20.26 20.26 0 0 1 22.79 14.84l4.41 17.41c4.74-.33 9.52-.51 14.37-.51s9.63.18 14.37.51l4.41-17.41a20.25 20.25 0 0 1 22.79-14.84l36.06 5.93A20 20 0 0 1 221.85 57l29.53 116.38a19.93 19.93 0 0 1-11.31 23.18M227.28 176L199.23 65.46l-30.07-4.94l-2.84 11.17c2.9.58 5.78 1.2 8.61 1.92a12 12 0 1 1-5.86 23.27A168.4 168.4 0 0 0 128 92a168.4 168.4 0 0 0-41.07 4.88a12 12 0 0 1-5.86-23.27c2.83-.72 5.71-1.34 8.61-1.92l-2.83-11.17l-30.08 4.94L28.72 176l60.22 26.7l5-13.57c-4.37-.76-8.67-1.65-12.88-2.71a12 12 0 0 1 5.86-23.28A168.4 168.4 0 0 0 128 168a168.4 168.4 0 0 0 41.07-4.88a12 12 0 0 1 5.86 23.28c-4.21 1.06-8.51 1.95-12.88 2.71l5 13.57Z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":19},"\u003Cpath fill=\"currentColor\" d=\"M212.62 75.17A63.7 63.7 0 0 0 206.39 26A12 12 0 0 0 196 20a63.71 63.71 0 0 0-50 24h-20a63.71 63.71 0 0 0-50-24a12 12 0 0 0-10.39 6a63.7 63.7 0 0 0-6.23 49.17A61.5 61.5 0 0 0 52 104v8a60.1 60.1 0 0 0 45.76 58.28A43.66 43.66 0 0 0 92 192v4H76a20 20 0 0 1-20-20a44.05 44.05 0 0 0-44-44a12 12 0 0 0 0 24a20 20 0 0 1 20 20a44.05 44.05 0 0 0 44 44h16v12a12 12 0 0 0 24 0v-40a20 20 0 0 1 40 0v40a12 12 0 0 0 24 0v-40a43.66 43.66 0 0 0-5.76-21.72A60.1 60.1 0 0 0 220 112v-8a61.5 61.5 0 0 0-7.38-28.83M196 112a36 36 0 0 1-36 36h-48a36 36 0 0 1-36-36v-8a37.87 37.87 0 0 1 6.13-20.12a11.65 11.65 0 0 0 1.58-11.49a39.9 39.9 0 0 1-.4-27.72a39.87 39.87 0 0 1 26.41 17.8a12 12 0 0 0 10.1 5.53h32.35a12 12 0 0 0 10.11-5.53a39.84 39.84 0 0 1 26.41-17.8a39.9 39.9 0 0 1-.4 27.72a12 12 0 0 0 1.61 11.53A37.85 37.85 0 0 1 196 104Z\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":21},"\u003Cpath fill=\"currentColor\" d=\"M167.31 160.69a16 16 0 1 1-22.62 0a16 16 0 0 1 22.62 0m-86.62-8a16 16 0 1 0 22.62 0a16 16 0 0 0-22.62 0m14.62-33.38a16 16 0 1 0-22.62 0a16 16 0 0 0 22.62 0m48-6.62a16 16 0 1 0 0 22.62a16 16 0 0 0 0-22.62M236 128A108 108 0 1 1 128 20a12 12 0 0 1 12 12a36 36 0 0 0 36 36a12 12 0 0 1 12 12a36 36 0 0 0 36 36a12 12 0 0 1 12 12m-24.67 10.65A60.17 60.17 0 0 1 165 91a60.17 60.17 0 0 1-47.66-46.32a84 84 0 1 0 94 94Z\"\u002F>",{"id":23,"title":24,"body":25,"category":35,"date":268,"description":269,"extension":270,"featureKey":271,"meta":272,"navigation":273,"path":274,"platform":275,"readingTime":276,"seo":277,"stem":278,"__hash__":279},"features_en\u002Ffeatures\u002FscreenMirror\u002Fweb.md","Screen Mirroring in the Web Dashboard",{"type":26,"value":27,"toc":258},"minimark",[28,37,53,60,65,128,132,182,186,209,213,230,234],[29,30,31,32,36],"p",{},"The ",[33,34,35],"strong",{},"Screen Mirror"," view in the web dashboard renders your Android phone's screen in a browser tab — and it's the only place this feature has a real user interface. On the phone side there's no dedicated Screen Mirror screen; a background service starts streaming as soon as you begin a session from the browser, and every control lives here.",[29,38,39,40,44,45,48,49,52],{},"Because the stream is decoded with WebCodecs and painted to a ",[41,42,43],"code",{},"\u003Ccanvas>",", the page must be served in a secure context (HTTPS or ",[41,46,47],{},"localhost","). PlainApp's local server already meets this requirement — but if you've somehow loaded the dashboard over plain HTTP on a non-localhost address, the page shows a ",[33,50,51],{},"needs HTTPS"," prompt with a link to the secure URL instead of trying to start the stream.",[29,54,55],{},[56,57],"img",{"alt":58,"src":59},"Screenshot: Screen Mirror","\u002Ffeatures\u002FscreenMirror\u002Fscreen-mirror.webp",[61,62,64],"h2",{"id":63},"key-capabilities","Key capabilities",[66,67,68,78,84,94,100,110,116,122],"ul",{},[69,70,71,74,75,77],"li",{},[33,72,73],{},"Live canvas mirror"," — frames are decoded with WebCodecs and painted to a ",[41,76,43],{}," element. No plugin, no native client — just the browser.",[69,79,80,83],{},[33,81,82],{},"Full remote control"," — once control is enabled, clicking, dragging, and scrolling on the canvas is translated into real taps, long-presses, swipes, and scrolls on the phone, normalized to the actual screen coordinates. Dedicated buttons send Back, Home, and Recents.",[69,85,86,89,90,93],{},[33,87,88],{},"Fullscreen mode"," — expand the canvas to fill the screen; press ",[41,91,92],{},"Esc"," (or the toolbar toggle) to exit.",[69,95,96,99],{},[33,97,98],{},"HD \u002F Smooth quality modes"," — switch quality mid-session: HD prioritizes sharpness, Smooth trades resolution for lower latency on congested Wi-Fi.",[69,101,102,105,106,109],{},[33,103,104],{},"Screenshot capture"," — one click downloads a ",[41,107,108],{},".png"," of the current frame.",[69,111,112,115],{},[33,113,114],{},"Session recording"," — record the canvas locally to a video file, with a running recording timer in the toolbar.",[69,117,118,121],{},[33,119,120],{},"Audio mirroring"," — request audio passthrough from the phone and mute\u002Funmute it independently in the browser.",[69,123,124,127],{},[33,125,126],{},"Relaunch and pause"," — pause the stream to stop consuming bandwidth without ending the session, or relaunch the phone's mirror service if it hangs.",[61,129,131],{"id":130},"walkthrough","Walkthrough",[133,134,135,145,151,157,166,172],"ol",{},[69,136,137,140,141,144],{},[33,138,139],{},"Open the Screen Mirror page"," from the dashboard sidebar. If the phone isn't currently mirroring, click ",[33,142,143],{},"Start"," to request that the phone begin casting.",[69,146,147,150],{},[33,148,149],{},"View the live mirror"," — once the phone grants the screen-capture permission, frames appear on the canvas within a second or two.",[69,152,153,156],{},[33,154,155],{},"Enable remote control"," from the toolbar, then click, drag, or scroll on the canvas to interact with the phone as if you were holding it — plus dedicated Back\u002FHome\u002FRecents buttons.",[69,158,159,162,163,165],{},[33,160,161],{},"Switch to fullscreen"," by clicking the fullscreen button; press ",[41,164,92],{}," to return to the dashboard layout.",[69,167,168,171],{},[33,169,170],{},"Change quality"," with the HD\u002FSmooth toggle in the toolbar — the switch takes effect on the next keyframe.",[69,173,174,177,178,181],{},[33,175,176],{},"Capture a screenshot or start a recording"," from the toolbar, and ",[33,179,180],{},"Stop"," when you're done to end the session.",[61,183,185],{"id":184},"tips-tricks","Tips & tricks",[66,187,188,194,200,206],{},[69,189,190,193],{},[33,191,192],{},"Mute audio"," from the toolbar if you're mirroring in a shared space — it only affects your browser, not the phone's speaker.",[69,195,196,199],{},[33,197,198],{},"Pause without disconnecting"," by clicking the play\u002Fpause button — useful when you need to read a static screen without burning bandwidth on updates.",[69,201,202,205],{},[33,203,204],{},"Relaunch the app"," from the toolbar if the mirror service on the phone has hung — this restarts it without rebooting the phone.",[69,207,208],{},"Remote control coordinates are normalized to the actual video resolution, so control still lines up correctly even if you've resized the browser window or gone fullscreen.",[61,210,212],{"id":211},"privacy-security-notes","Privacy & security notes",[214,215,216],"web-security-notes",{},[66,217,218,227],{},[69,219,31,220,223,224,226],{},[33,221,222],{},"WebCodecs"," API requires this secure context — the page shows a ",[33,225,51],{}," prompt if it's ever missing.",[69,228,229],{},"Remote control input is only accepted while you've explicitly enabled it for the session — closing or stopping the mirror immediately revokes it.",[61,231,233],{"id":232},"related-features","Related features",[66,235,236,244,251],{},[69,237,238,243],{},[239,240,242],"a",{"href":241},"\u002Ffeatures\u002Fmedia\u002Fweb","Photos, Videos & Music in the Web Dashboard"," — browse media files instead of a live screen.",[69,245,246,250],{},[239,247,249],{"href":248},"\u002Ffeatures\u002Ffiles\u002Fweb","File Management in the Web Dashboard"," — pull screenshots and recordings off your computer.",[69,252,253,257],{},[239,254,256],{"href":255},"\u002Ffeatures\u002Fapps\u002Fweb","App Manager in the Web Dashboard"," — another way to manage the phone remotely from a browser.",{"title":259,"searchDepth":260,"depth":260,"links":261},"",3,[262,264,265,266,267],{"id":63,"depth":263,"text":64},2,{"id":130,"depth":263,"text":131},{"id":184,"depth":263,"text":185},{"id":211,"depth":263,"text":212},{"id":232,"depth":263,"text":233},"2025-08-01","View and control your Android phone's screen in a browser — live canvas, fullscreen, HD\u002FSmooth quality modes, full remote control (taps, swipes, scrolls, nav keys), recording, and one-click screenshots.","md","screenMirror",{},true,"\u002Ffeatures\u002Fscreenmirror\u002Fweb","web","5 min read",{"title":24,"description":269},"features\u002FscreenMirror\u002Fweb","2xqyqgc3znBMnYb1usOdWk-tFIC7NFTMWZ2wm_lvqts",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":281},"\u003Cpath fill=\"currentColor\" d=\"M224 128a8 8 0 0 1-8 8H59.31l58.35 58.34a8 8 0 0 1-11.32 11.32l-72-72a8 8 0 0 1 0-11.32l72-72a8 8 0 0 1 11.32 11.32L59.31 120H216a8 8 0 0 1 8 8\"\u002F>",{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":283},"\u003Cpath fill=\"currentColor\" d=\"M208 36H48a28 28 0 0 0-28 28v112a28 28 0 0 0 28 28h160a28 28 0 0 0 28-28V64a28 28 0 0 0-28-28m4 140a4 4 0 0 1-4 4H48a4 4 0 0 1-4-4V64a4 4 0 0 1 4-4h160a4 4 0 0 1 4 4Zm-40 52a12 12 0 0 1-12 12H96a12 12 0 0 1 0-24h64a12 12 0 0 1 12 12\"\u002F>",1788009009430]