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.
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.
|
Playback-first UI 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. |
- 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
- Improved Handy HSSP playback start reliability by switching back to HSSP mode before play, using ping-aware lead time, retrying after server resync on
400, and cancelling stale upload/play requests - Added
Auto Play After Handy Syncso media can start automatically once Handy upload and sync finish - Added a
Multi-Axis Onlysidebar filter so titles with more than one detected script axis are easier to find - Added stroke range shortcut bindings and a compact playback speed stepper / preset popover in the player controls
- Hardened autoplay and media readiness handling when opening, dropping, or switching media with Handy connected
| 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:devBuild for Windows:
npm run build:winBuild for macOS:
npm run build:macBuild 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
PolyForm-Noncommercial-1.0.0
This project is source-available for noncommercial use. Commercial use requires separate permission from the copyright holder.


