(Promo code inside) UwU Player — watch, feel, remember: the whole script setup in one app [Updated v0.5.1 — Script Post-Processing]

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
2 Likes

MacOS please!

What Apple device do you have?

Android
tried it out last night!
im not sure if it was intifiace or the player probably intiface but it keep disconnecting after every 2 videos or so.
would like to see a marked as watched button for videos!
everything else was great :+1:

Thanks for trying it out! Glad to hear everything else was great.

I’ll try to reproduce the Intiface disconnecting issue locally to investigate what’s going on.

As for the “watched” button, your suggestion has been received and the watched/unwatched display and filtering feature is currently being worked on. It’s expected to be released this week!

1 Like

Update: v0.3.2 is out :tada:

Quick follow-up to share what’s new in the latest release. This round is mostly about keeping a large collection easy to track — plus a fun new way to look at your scripts.

Script visualization (preview) You can now watch the script itself, not just feel it. The action chart draws out each axis as playback runs, so you can see what’s coming. It’s currently in preview — the structure may change in future updates as it settles.

Watch state on media cards Cards now show where you left off: unwatched items get a NEW badge, so it’s easy to spot what you haven’t gotten to yet. Right-click (or long-press on Android) a card to mark it watched or unwatched.

Library niceties

  • The filter dialog gained a watched/unwatched filter, along with some interaction polish.
  • The flat view grid now has adjustable card size — make those thumbnails as big or as small as you like.
  • The folder list shows a summary per folder: media count, unwatched count, and when you last played something from it.

That’s it for this round. If anything feels off or there’s something you’d like to see next, the feedback form on the website or in the app is the fastest way to reach me — or just leave a comment below.

Downloads for Windows and Android, as always, at uwuplayer.com.

1 Like

Update: v0.4.0 is out :tada:

This round is headlined by native Handy support, plus two additions to the script visualizer that make a script easier to read before and during playback.

The Handy, native protocol The Handy now connects through the Handy cloud: grab the Connection Key from handyfeeling.com, paste it into the “Handy cloud” tab in the device panel, and play. The session bar shows how the device is keeping up (following / sync / buffer), drift from the playback position is compensated automatically, and seek, pause, and speed changes are followed. The output range slider doubles as a stroke limiter, so you can keep the device working within a range you like. The cloud connection needs firmware 4 or later, and response speed depends on your network.

Intensity heat coloring The visualizer’s line can now be colored by intensity — blue for calm, red for intense. On position axes that reflects stroke speed; on vibration and rotation, command strength. Handy for spotting the rough stretches of a script before you’re in one. The setting is saved and can be toggled during playback.

Global offset If a script runs consistently early or late, the chart’s adjust mode now drags all lanes as one: line the waveform up with the red playback position line and the offset applies to the whole script, in milliseconds, with a reset button to zero it out. Zooming in gives you finer control.

Library niceties

  • Folder view can sort by path or last played.
  • The library header now shows the media count.
  • The About page gained a “Check for Dev Updates” entry (supporters only).

Under the hood: fixed cover thumbnails failing on audio files with embedded art, thumbnail-related UI stutter on Windows, and playback progress not being saved in some cases.

If anything feels off or there’s something you’d like to see next, the feedback form on the website or in the app is the fastest way to reach me — or just leave a comment below.

Downloads for Windows and Android, as always, at uwuplayer.com.

Update: v0.4.1 is out :tada:

This round is about looking back: the Session History tab has grown into a full session dashboard, and the library gained some long-overdue upkeep tools.

The Recap dashboard The tab you knew as Session History is now Recap. It opens on a dashboard instead of a plain list, starting with a 6-month activity heatmap — visible to everyone — where the color depth is that day’s usage time. Click a day and the Recent Sessions card re-centers on it. Supporters additionally get the session trend chart (per-metric colors, hover details), KPI summaries like total sessions and longest session, and a device ranking.

Speed view in session detail Actuator cards in the session detail can now toggle their chart between the motion curve and a speed view drawn as a step line — how hard the device was actually working, at a glance.

Visualizer default view The script visualizer now opens with a single expanded axis and keeps the rest collapsed, so multi-axis scripts start readable.

Library niceties

  • New library maintenance tools: batch-backfill missing video durations, and generate or regenerate thumbnails.
  • Media scanning no longer takes over the screen — it runs as a cancellable progress banner while the library stays usable, and missing durations are backfilled automatically as thumbnails lazy-load.
  • Wide windows get a side navigation rail (new navigation layout preference), and page content adapts to the window width.

Under the hood: fixed Patreon action rows only being tappable across part of their area, and the tier badge / account labels not reflecting the effective tier.

If anything feels off or there’s something you’d like to see next, the feedback form on the website or in the app is the fastest way to reach me — or just leave a comment below.

Downloads for Windows and Android, as always, at uwuplayer.com.

1 Like

Update: v0.5.0 is out :tada:

This round gives devices a home of their own: a dedicated Devices tab for connection, control, and testing — plus a speed view in the script visualizer, Handy zeroing, and desktop keyboard shortcuts.

The Devices tab Connection and control move out of the player’s floating panel into their own main tab. New here: device testing. Every device card has a quick test action for a short motion check, and script test playback drives the device with a script right from the tab — a dry run to check response and direction before the real thing. The floating button on the player screen still opens the same panel as before, which is now drag-resizable in height on narrow screens. Device cards also carry a connection-adapter badge, so a device connected over BLE direct, Intiface Central, or the Handy cloud is identifiable at a glance.

Speed view in the visualizer Position lanes can now flip from the position waveform to a speed view of the same axis — handy for seeing where a script pushes hard, not just where it goes. A new speed unit preference (strokes/s or u/s) is applied consistently in the visualizer and the session stats.

Handy zeroing The Handy’s card gains a reset action: it stops any running session and gently drives the slide back to the zero position at the top of the stroke window — for when a manual test or an interrupted script left it mid-travel.

Connection hints If Intiface Central is holding a Vorze device while you try a direct Bluetooth connection, the app now says so, and the device card hints at the native connections available.

Desktop keyboard shortcuts Space toggles playback, ←/→ seek 10 seconds, F/Enter toggle fullscreen, Esc exits.

Under the hood: the Windows file/folder dialogs becoming unresponsive are fully fixed, the dashboard trend chart no longer misrenders with only a few sessions, and dark-theme error/status colors, narrow-screen layout, and visualizer alignment details got polish.

If anything feels off or there’s something you’d like to see next, the feedback form on the website or in the app is the fastest way to reach me — or just leave a comment below.

Downloads for Windows and Android, as always, at uwuplayer.com.

Update: v0.5.1 is out :tada:

This round is the one for everyone who collects scripts here: Script Post-Processing — reshape any script live during playback to fit your taste and your device, without editing the file.

Every script you download was authored on someone else’s setup, for someone else’s taste. When that shows up — a reversed axis, jittery passages, sections faster than your hardware can follow, long dead gaps — the options used to be living with it or reaching for a script editor. Now it’s four switches, each previewed on the waveform in real time, and the processed timeline is exactly what the device follows:

Invert mirrors the whole script (100 − p), so a script recorded on a reversed axis plays in the intended direction — no editor roundtrip.

Smoothing / noise reduction folds the tiny jitters inside dense passages into single clean strokes, without changing the timing.

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.

The original file is never touched, and while post-processing is active the Script card wears an Adjusted badge — you always know when your device is following your version instead of 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, and any adjustments you keep re-apply on their own next time.

Heat coloring, now the default The visualizer’s color-by-intensity mode is on by default, and a new Heatmap color scale setting makes its readings honest across scripts: Standard (absolute speed) maps velocity onto a fixed 0–600 UPS scale — “red everywhere” means the same thing in every script, handy for judging a download before you commit to it — while Auto contrast (relative) normalizes to the current script for maximum contrast within it. The speed view supports the coloring too.


Smaller touches Connection-adapter tabs arrange as a 2×2 grid on narrow screens, and the Patreon login flow no longer dead-ends: unlinked accounts get a register / email-login guide.

Under the hood: fixed the Windows title-bar minimize/maximize/close buttons occasionally going unresponsive.

The app checks for updates on launch, or update manually from Settings. The Supporter trial code from the v0.5.0 post is still live (until Oct 18): 1 month of the Supporter perks, free — keep it for a friend who hasn’t seen the supporter side yet.

Claim the code — patreon.uwuplayer.com/redeem/36D8E

If anything feels off or there’s something you’d like to see next, the feedback form on the website or in the app is the fastest way to reach me — or just leave a comment below.

Downloads for Windows and Android, as always, at uwuplayer.com.