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, watched folders are scanned incrementally, and the same app runs on Windows and Android.
A scripted setup usually means juggling: a video player, a script player beside it, a connection bridge in between, a file browser for the collection, and a script editor for when a download doesn’t fit. UwU collapses all of it into one app — and adds the parts the chain was missing: you can 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.5.1: Script Post-Processing — invert, smooth, speed-limit, and idle-fill any script live during playback, previewed on the waveform as you flip the switches. Plus heat coloring is now on by default, with an absolute 0–600 UPS color scale. The changelog at the bottom has the details.
Supporter trial code (until Oct 18, 2026)
Want to see what the supporter side feels like first? This promo code grants 1 month of the Supporter perks for free:
Claim the code — patreon.uwuplayer.com/redeem/36D8E
Open the link and follow the on-screen instructions to claim it — signing in to Patreon is required. After claiming, sign in to your UwU Player account (you can register one for free) and tap “Link Patreon” under Settings → Account to sync your membership. Script Post-Processing (beyond free Invert), the session trend chart, and the rest of the supporter set are yours for a month.
Quick facts
- Local media player for Windows 10+ / Android 8.0+ (iOS, Linux, macOS planned)
- One app for the whole loop: library, playback, script engine, device connection — nothing to wire together
- Automatic funscript discovery, full MultiFunscript multi-axis support, native Vorze CSV
- Script visualizer: per-axis waveforms, intensity heat on an absolute 0–600 UPS scale, speed views, millisecond global offset
- Script Post-Processing: invert, smoothing, speed limit, idle fill — live during playback, original file untouched
- Three native device paths: The Handy (cloud, native protocol), direct Bluetooth for Vorze, Intiface Central (Buttplug) for everything else
- Session Recap dashboard: 6-month activity heatmap, per-session actuator charts, KPIs, device ranking
One app, not a setup
Everything lives in one window (or one phone screen): the library, the player, the script engine, and the device connection. There is no sidecar app to keep in sync — seeking, pausing, and speed changes are followed by the device natively, because the same app runs all three.
The player half is a real media player, not a checkbox: multi-format playback with stepless speed (0.25x–3.0x), smart resume, touch gestures on mobile, and desktop shortcuts (Space play/pause, ←/→ seek 10 seconds, F/Enter fullscreen, Esc exit).
Scripts are discovered, not configured
Dropping a script next to its video is the whole setup: a .funscript in the same folder is picked up when you press play. MultiFunscript files load as-is with the full axis range, and the file name picks the axis by the usual multi-axis words — video.twist.funscript drives R0, video.surge.funscript L1 (updown / surge / sway / twist / roll / pitch). Vorze’s native CSV scripts are read too, with piston / cyclone / ufosa / ufotw in the name selecting the device.
No import step, no wiring: your videos and scripts stay plain files on disk — UwU just makes them findable.
A library, not a file browser
Scripts pair with videos, and collections grow fast. UwU watches multiple folders, scans them incrementally, and keeps the result navigable: thumbnails, search, favorites, custom tags, watched/unwatched tracking with NEW badges on unplayed items, per-folder summaries, and maintenance tools like batch-backfilling durations and regenerating thumbnails.
Read a script before you feel it
Scripts vary, and UwU treats them as something to read, not just to feel. The script visualizer draws every axis of a MultiFunscript as a waveform during playback — position lanes, speed views, and intensity heat coloring on by default, painting the line from calm blue to intense red. The new Heatmap color scale setting keeps that reading honest across scripts: Standard maps speed onto a fixed 0–600 UPS scale, so “red everywhere” in one script means the same as in another; Auto contrast normalizes to the current script for maximum detail within it.
If a script runs consistently early or late, the chart’s adjust mode shifts the whole thing by a global offset — to the millisecond — without touching the file.
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 up — a reversed axis, jittery dense passages, sections faster than your hardware can physically follow, long dead gaps — the old options were living with it or reaching for a script editor. Script Post-Processing makes it four switches, each re-rendering the waveform live as you flip it, and the processed timeline is exactly what your device follows:
- Invert mirrors the whole script (100 − p), so a script recorded on a reversed axis plays in the intended direction.
- Smoothing / noise reduction folds tiny jitters inside dense passages into single clean strokes, timing untouched.
- Speed limit re-times the sections above your max speed, so even the most intense passages stay at a pace the device can actually follow.
- Idle fill bridges long still sections with a gentle synthetic stroke at your set rhythm.
Each switch carries its own parameter, the original file is never modified, and while post-processing is active the player’s Script card wears an Adjusted badge — you always know when the device is following your version, not the author’s. Invert is free for everyone; the other three are Supporter perks — free to preview as long as you like, acting on device output once you upgrade.
Devices, connected the native way
Three connection paths, each of them first-class:
- The Handy — through the Handy cloud with its native protocol: paste the Connection Key from handyfeeling.com and play. The panel shows live session status (following / sync / buffer), playback drift is compensated automatically, and seek, pause, and speed changes are followed. Firmware 4 or later; the device card also offers manual zeroing that stops the session and parks the slide at the top of the stroke window.
- Vorze, direct Bluetooth — A10 Piston SA / Cyclone SA and UFO SA / UFO TW connect without Intiface; if Intiface Central is holding a Vorze device, the app warns you and the card hints at the native path.
- Everything else via Intiface Central (Buttplug protocol) — free and open source, broad compatibility across brands.
During playback the device panel shows live status with adjustable output range and direction (0–100%) — the range slider doubling as a stroke limiter. The Devices tab gives every device a card with a connection-adapter badge, a quick motion test, and script test playback: a dry run to check response and direction before the real thing.
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’s motion into the session, Rec OFF keeps it out of the log without unplugging.
The Recap dashboard opens on a 6-month activity heatmap, visible to everyone — click a day and the recent-sessions list re-centers on it. The session in progress stays always visible; Supporters additionally get past-session browsing (with merging), the session trend chart, KPI summaries (total sessions, total active time, longest session, average speed), and a device ranking.
The session detail page turns a log into per-actuator charts plus stats: duration split into active and resting time, max and average speed, total travel distance — a precise answer to how a session actually went. Each actuator card toggles between the motion curve and a speed view drawn as a step line.
Feedback
Questions, bug reports, or feature requests — the feedback form on the website or in the app (no login needed) is the fastest way to reach me, or just leave a comment below. There is also a full usage guide covering installation, device connection, and script naming: uwuplayer.com/docs
Availability
Windows 10 or later and Android 8.0 or later today. iOS, Linux, and macOS are planned — the more people ask for one, the higher it moves up the list :)
See the full feature tour, the script guide, and downloads at uwuplayer.com.
Changelog (last updated: 2026-10-10)
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










