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, but want a player that feels current instead of patched together. The point is straightforward: cleaner playback, cleaner device control, and a 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 and supports separate script folders
- 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
- Supports sequential playback, 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
- Fullscreen
FITbehavior was refreshed so playback can fill the screen more naturally - Fullscreen controls were reworked for better readability and cleaner overlay behavior
- Funscript
invertedmetadata is now respected more reliably for Intiface / Buttplug playback - Release assets are now published for Windows, macOS, and Linux from GitHub Actions
| 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 |
| 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 localized 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.

