UwU Player is a local media player built for the way scripts are shared here: download a funscript, drop it next to its video, press play — your device follows along. Your files stay on your machine, and the same app runs on Windows and Android.
A scripted setup usually means a video player, a script player beside it, a connection bridge, a file browser and a script editor. UwU is all of it in one app — plus the parts the chain was missing: read a script before you play it, reshape any script at playback time without editing the file, and look back on every session afterwards.
New in v0.6.0: TCode device support (preview) — OSR2, SR6, FUNSR1 and other DIY builds connect natively over Bluetooth or USB serial, no bridge app. Plus an anchor jump that skips a script’s quiet gaps with one press, and a jog slider for the Handy. Details in the changelog below.
Quick facts
- Windows 10+ / Android 8.0+ (iOS, Linux, macOS planned) — one app for the whole loop: library, playback, script engine, device connection
- Funscripts are discovered, not configured: drop one next to the video and press play — full MultiFunscript multi-axis support, native Vorze CSV
- Script visualizer: per-axis waveforms, intensity heat coloring, speed views, millisecond global offset
- Script Post-Processing: invert, smoothing, speed limit, idle fill — live during playback, original file untouched
- Four device paths: The Handy, Vorze direct Bluetooth, TCode DIY builds (preview), Intiface Central for everything else
- Session Recap dashboard: activity heatmap, per-actuator charts, KPIs, device ranking
One app, not a setup
Library, player, script engine and device connection share one window (or one phone screen). Seeking, pausing and speed changes are followed natively — the same app runs all three, so there is no sidecar app to keep in sync.
The player half is a real media player: multi-format playback, stepless 0.25x–3.0x speed, smart resume, touch gestures on mobile, desktop shortcuts (Space, ←/→, F/Enter, Esc). New in this release, the anchor jump: the flag button (N) jumps to the script’s next action point, over the dead gaps, landing a beat ahead so the device eases in.
Scripts are discovered, not configured
A .funscript next to the video is the whole setup — picked up when you press play, no import step. Your videos and scripts stay plain files on disk.
- MultiFunscript files load as-is, the file name picks the axis:
video.twist.funscript→ R0,video.surge.funscript→ L1 - Vorze’s native CSV scripts are read too —
piston/cyclone/ufosa/ufotwin the name selects the device
A library, not a file browser
Multiple watched folders, incremental scans, and the result stays navigable: thumbnails, search, favorites, custom tags, watched/unwatched tracking with NEW badges, per-folder summaries — plus maintenance tools like batch duration backfill and thumbnail regeneration.
Read a script before you feel it
The visualizer draws every axis of a script as a waveform during playback — position lanes, speed views, and intensity heat coloring from calm blue to intense red, on by default.
- Standard heatmap scale maps speed onto a fixed 0–600 UPS range, so “red everywhere” means the same in every script; Auto contrast normalizes to the current script for maximum detail
- A script running early or late? Adjust mode shifts the whole thing by a global offset, to the millisecond — file untouched
Reshape any script to your taste — no file editing
Every script here was authored on someone else’s device, for someone else’s taste. When that shows, it’s four switches — each re-rendering the waveform live, and the device follows the processed timeline:
- Invert — mirrors the whole script (100 − p) for a reversed axis
- Smoothing — folds jitter inside dense passages into single clean strokes, timing untouched
- Speed limit — re-times passages above your max speed to a pace the device can actually follow
- Idle fill — bridges long dead gaps with a gentle synthetic stroke at your rhythm
The original file is never modified, and an Adjusted badge shows while the device follows your version instead of the author’s. Invert is free for everyone; the other three are Supporter perks — free to preview, acting on device output once you upgrade.
Devices, connected the native way
| Device | Connection | Notes |
|---|---|---|
| The Handy | Native protocol via the Handy cloud | Paste the Connection Key from handyfeeling.com and play; playback drift compensated automatically; firmware 4+ |
| Vorze (A10 Piston SA / Cyclone SA, UFO SA / UFO TW) | Direct Bluetooth — no Intiface | Warns you if Intiface Central is holding the device |
| TCode builds (OSR2, SR6, FUNSR1, …) | Bluetooth or USB serial — new, preview | No bridge app; model presets + Detect axes reads your build’s real axis table; one device at a time; Android: Bluetooth only |
| Everything else | Intiface Central (Buttplug) | Free and open source, broad compatibility |
The device panel shows live status with adjustable output range and direction (0–100%) — the slider doubles as a stroke limiter. Every device gets a card in the Devices tab: adapter badge, motion test, script dry-run; the Handy’s adds a jog slider to drive the slide by hand.
A record of every session
Whenever a connected device moves, the recorder keeps the log — what played, which device, how intense. Each device card has a Rec switch: Rec ON writes that device into the session, Rec OFF keeps it out without unplugging.
- The Recap dashboard opens on a 6-month activity heatmap (everyone) — click a day and the session list re-centers on it; Supporters add past-session browsing with merging, trend chart, KPIs and device ranking
- Session detail turns the log into per-actuator motion and speed charts plus stats: active vs resting time, max & average speed, total travel distance
Feedback & downloads
Questions, bug reports, feature requests — the feedback form on the website or in the app (no login needed), or a comment below. Full usage guide: uwuplayer.com/docs.
Windows 10+ and Android 8.0+ today; iOS, Linux and macOS planned — the more people ask, the higher it climbs. Downloads, the full feature tour and the script guide: uwuplayer.com.
Changelog (last updated: 2026-10-25)
v0.6.0
New features:
- Added TCode device support (preview): connect natively over Bluetooth or USB serial and choose the transport in the connection UI, with built-in device presets for SR6, FUNSR1 and OSR2. (Bluetooth only on Android)
- Added “jump to next script anchor”: a new anchor button in the playback controls, or press N to jump straight to the script’s next anchor, making it easy to skip gaps in the script
- The device test area now includes a stroke jog slider for the Handy, so you can drag its position directly
v0.5.1
New features:
- Added Script Post-Processing: Invert, Smoothing / noise reduction, Speed limit and Idle fill can now be applied to the script live during playback, previewed in real time on the script visualizer, with an “Adjusted” indicator while active; Smoothing, Speed limit and Idle fill are Supporter perks — free to preview, taking effect on device output automatically after upgrading
- The script visualizer’s intensity coloring is now on by default, with a new “Heatmap color scale” setting: standard (fixed 0–600 UPS mapping, comparable across scripts) or auto-contrast (normalized to the current script)
- The speed view now supports coloring by intensity
- Device connection adapter tabs now arrange as a 2×2 grid on narrow screens
- Improved the Patreon login flow: unlinked accounts now get a register / email-login guide instead of a dead end
Bug fixes: - Fixed Windows title-bar minimize/maximize/close buttons occasionally becoming unresponsive
v0.5.0
New features:
- Added a dedicated “Devices” tab: device connection and control now live on their own main tab, with new device test runs; the floating button on the player screen still opens the same panel, which is drag-resizable on narrow screens
- Device cards now show a connection-adapter badge
- Position lanes in the script visualizer can now flip to a “Speed view” showing the speed curve
- Added a speed unit preference (strokes/s or u/s), applied consistently in the script visualizer and session stats
- Added desktop keyboard shortcuts: Space play/pause, Left/Right seek 10 seconds, F/Enter fullscreen, Esc exit
- Handy now supports manual zeroing
- Warns when Intiface Central holds a Vorze device on BLE direct, with device cards hinting at available native connections
- Improved dark-theme error colors, status colors, narrow-screen layout, script-visualizer alignment details and wording
Bug fixes: - Fully fixed Windows file/folder dialogs becoming unresponsive
- Fixed the dashboard trend chart rendering incorrectly with only a few sessions
v0.4.1
New features:
- The Review tab is now a session dashboard: session-level stats with the session list moved into a “Recent sessions” card
- Added a session trend chart and a 6-month activity heatmap to the dashboard (supporter exclusive), with hover details and per-metric colors; heatmap taps re-center the recent sessions card
- Added an actuator speed chart rendered as a step line
- The script visualizer now opens with a single expanded axis and keeps the rest collapsed
- Added library maintenance: batch-backfill missing video durations and generate or regenerate thumbnails
- Media scanning now runs as a non-blocking, cancellable banner instead of a full-page progress screen; missing video durations are backfilled automatically during lazy thumbnail loading
- Better wide-window layout: switch to a side navigation rail on wide windows (new navigation layout preference), and page content width now adapts to the window size
Bug fixes: - Fixed Patreon action rows only being tappable across part of their area
- Fixed the tier badge and account labels not reflecting the effective tier
v0.4.0
New features:
- Script sync now supports the native Handy protocol
- Added a global script offset setting
- Added an intensity heat render mode to the script visualizer
- Folder view can now sort by path or last played
- The media library header now shows the media count
- Added a “Check for Dev Updates” entry on the About page (supporters only)
- Improved some in-app wording and translations
Bug fixes: - Fixed cover thumbnail generation failing for audio files with embedded cover art
- Fixed UI stutter during media thumbnail generation on Windows
- Fixed playback progress not being saved in some cases
v0.3.2
New features:
- Added script visualization (currently in preview; its structure may change in future updates)
- Media cards now show watch state: unwatched items display a NEW badge; right-click or long-press a card to mark it watched or unwatched
- The filter dialog adds a watched/unwatched filter and improved interactions
- The flat view grid now supports adjustable card size
- The folder list shows summary info per folder: media count, unwatched count, and last played time












