A modern desktop player for local funscript playback, with a cleaner playback UI, The Handy sync, Intiface / Buttplug multi-axis routing, FunOSR serial support, in-app EroScripts browsing, and a media library that is actually pleasant to use.
Latest Release Downloads Platforms License
Download Latest Release · Watch Overview Demo · 한국어 · 日本語 · 中文
Click the hero image or the demo cards below to open the short product videos.
ScriptPlayer+ is for people who already have local media and scripts and want a player that feels current. The focus is straightforward: clean playback, clean device control, and an efficient library workflow that does not waste time.
Fullscreen playback, timeline and heatmap overlays, subtitle support, audio artwork mode, and quick stroke controls without burying everything in menus. Device support that scales
Use The Handy, Intiface / Buttplug devices, or direct FunOSR serial output from the same app, with per-device routing and multi-axis support. Library workflow that wastes less time
Folder browsing, script and subtitle detection, hover video preview, sorting, EroScripts search, and manual override tools are all built in.
Open the main player walkthrough and see the current playback surface, layout, and device flow. Video Preview Demo
See how file-list hover preview works without leaving the browser or opening the file first. Random Stroke Demo
Check the fallback stroke generation workflow for media that does not ship with a script.
When a title has multiple matching script bundles, switch between the default script and alternates like
Soft directly from the sidebar.
Pattern Preset DemoThe refreshed random fallback presets now separate the base tease motion from the stronger tease preset, and the new short clip shows that flow.
Configure Handy, Buttplug, and serial behavior in one place instead of splitting setup across multiple tools. Keyboard-first control
Playback, seeking, fullscreen, and navigation are all available from configurable shortcuts.
- Plays local video files:
MP4,MKV,AVI,WebM,MOV,WMV - Plays local audio files:
MP3,WAV,FLAC,M4A,AAC,OGG,OPUS,WMA - Detects matching bundled funscripts, supports separate script folders, and can auto-pick unique fallback matches
- Shows a quick script variant panel when multiple matching script bundles are available
- Detects matching external subtitle files and lets you load subtitles manually
- Shows hover video preview inside the file list
- Sorts the library by path, file name, or last modified time
- Separates repeat-current-media,
Auto Next Play, shuffle playback, and adjustable playback rate - Supports drag and drop for opening media directly
- Automatically picks matching cover art for audio playback when available
- Real-time scrolling timeline with configurable window size and height
- Full-media heatmap with speed-based color visualization
- Quick
STRstroke controls in the playback bar - Stroke range min / max controls and inverse stroke toggle
- Optional random fallback stroke generation for media without scripts
- Automatic skipping for long empty script gaps in sparse scripts
- Multi-axis funscript bundle loading and routing
The Handysync with upload, setup, and time offset handlingIntiface / Buttplugmulti-axis mapping for linear, rotate, and scalar featuresFunOSRserial / COM output with adjustable update rate- In-app
EroScriptslogin, browsing, searching, and downloading - Session persistence for EroScripts login on the local machine
- Added stronger script matching with recursive script-folder scanning, script variants, drag-and-drop script matching, and a manual match dialog
- Added per-script / per-media offset controls with configurable keyboard shortcuts
- Added device output smoothing through Motion Speed Limit presets
- Added script debug tools, including current script path, source, axes, offset, copy path, reveal in Explorer, and reload actions
- Added script-folder rescan, Always on Top, folder collapse persistence, and improved same-media script variant handling
| Platform | Package | Notes |
|---|---|---|
| Windows x64 | Latest release | Portable build, extract and run ScriptPlayerPlus.exe |
| macOS x64 / arm64 | Latest release | ZIP package, move ScriptPlayerPlus.app to Applications |
| Linux x64 | Latest release | AppImage build is published with each tagged release |
| Type | Formats |
|---|---|
| Media | mp4, mkv, avi, webm, mov, wmv, mp3, wav, flac, m4a, aac, ogg, opus, wma |
| Scripts | .funscript, .json, .csv |
| External subtitles | .srt, .vtt, .txt |
- Embedded subtitle tracks inside video containers are not parsed yet. Use external subtitle files for now.
- Linux release output currently targets
x64 AppImage. - The Japanese and Chinese READMEs under
docs/have not been refreshed to the same level as this main README yet.
Use Node.js 20.x. The project pins 20.20.2 in .nvmrc.
git clone https://github.com/sioaeko/scriptplayer-plus.git
cd scriptplayer-plus
npm installRun the app in development:
npm run electron:dev
Build for Windows:
npm run build:win
Build for macOS:
npm run build:mac
Build for Linux:
npm run build:linux
| Key | Action |
|---|---|
Space / K |
Play / Pause |
Left / Right |
Seek -5s / +5s |
Shift + Left / Right |
Seek -10s / +10s |
Up / Down |
Volume +5% / -5% |
F |
Toggle fullscreen |
M |
Toggle mute |
Ctrl + , |
Open settings |
- Electron
- React
- TypeScript
- Tailwind CSS
- Vite
ScriptPlayer+ End User License Agreement
ScriptPlayer+ is proprietary software distributed under the terms in LICENSE.
Commercial use, redistribution, modification, and reuse of project media require separate written permission from the copyright holder.