The open-source funscript engine driving multi-axis machines.
- Windows
Install Intiface Central first - it is the universal bridge between toys and everything else on this page. From there: ScriptPlayer for local funscript files on Windows, MultiFunPlayer if you run multi-axis machines, and the Lovense or Kiiroo app if your toy is theirs.
The open-source funscript engine driving multi-axis machines.
The universal toy bridge: buttplug.io for everything community.
The free Windows player with funscript + toy output.
Kiiroo's companion app for Feel content and pairing.
The Lovense control app: patterns, sync, long-distance pairing.
Install Intiface Central first - it is the universal bridge between toys and everything else on this page. From there: ScriptPlayer for local funscript files on Windows, MultiFunPlayer if you run multi-axis machines, and the Lovense or Kiiroo app if your toy is theirs.
There is a layer of the interactive VR porn setup that never shows up in marketing shots: the software running on your desktop. The headset gets the attention, the toy gets the reviews - but between them sits the code that reads a script, decides what the toy should do, and actually makes it move. Get that layer wrong and nothing syncs; get it right and the rest is plug-and-play. This board ranks the desktop apps on file that make that layer work, from the universal bridge to the brand-specific companions.
Three jobs happen on the PC side of a sync setup. First, playback: someone has to read a funscript and a video at the same time. Second, translation: script data is not toy data - something converts "stroke to 80 percent at 1.2 seconds" into commands a specific device understands. Third, connection: Bluetooth, serial links and Wi-Fi toys all need to be paired and kept alive.
Different apps on this board cover different slices of those three jobs. ScriptPlayer is a player with toy output built in. MultiFunPlayer is a translation engine for machines. Intiface Central is deliberately none of those - it is the bridge that lets any compliant app talk to a wide range of toys. The brand apps from Lovense and Kiiroo handle their own ecosystems end to end. None of these overlap completely, which is why the honest answer to "which one do I need" is often "two of them."
<figure class="fig-diagram"><svg viewBox="0 0 734 320" role="img" aria-label="The desktop stack: playback, script translation and the toy bridge - brand apps replace the bridge when the toy is theirs."> <defs> <marker id="dg-head" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"> <path d="M0,0 L6,3 L0,6 Z" fill="#ff4f8f"/> </marker> </defs> <text class="dg-h" x="24" y="40">The desktop stack: which app runs where</text>
<rect class="dg-node" x="24" y="70" width="160" height="100"/> <text class="dg-lbl" x="40" y="100">Playback</text> <text class="dg-lbl-2" x="40" y="124">local video +</text> <text class="dg-lbl-2" x="40" y="142">funscript file</text>
<path class="dg-arrow" d="M184,120 L226,120"/>
<rect class="dg-node" x="230" y="70" width="160" height="100"/> <text class="dg-lbl" x="246" y="100">Script engine</text> <text class="dg-lbl-2" x="246" y="124">ScriptPlayer (single-axis)</text> <text class="dg-lbl-2" x="246" y="142">MultiFunPlayer (TCode)</text>
<path class="dg-arrow" d="M390,120 L432,120"/>
<rect class="dg-node-strong" x="436" y="70" width="150" height="100"/> <text class="dg-lbl" x="452" y="100">Bridge</text> <text class="dg-lbl-2" x="452" y="124">Intiface Central</text> <text class="dg-lbl-2" x="452" y="142">buttplug.io protocol</text>
<path class="dg-arrow" d="M586,120 L628,120"/>
<rect class="dg-node-strong" x="632" y="70" width="78" height="100"/> <text class="dg-lbl" x="646" y="112">Toy</text> <text class="dg-lbl-2" x="646" y="136">or</text> <text class="dg-lbl-2" x="646" y="154">machine</text>
<!-- brand app bypass --> <rect class="dg-node" x="230" y="220" width="356" height="72"/> <text class="dg-lbl" x="246" y="248">Brand apps (single-ecosystem shortcut)</text> <text class="dg-lbl-2" x="246" y="272">Lovense Remote - FeelConnect</text>
<path class="dg-arrow-2" d="M408,220 L408,180"/> <text class="dg-lbl-dim" x="420" y="204">replaces bridge + engine</text> <text class="dg-lbl-dim" x="420" y="220">when the toy is theirs</text>
<text class="dg-lbl-dim" x="24" y="316">A silent toy is almost always a missing box in this chain - not broken hardware.</text> </svg><figcaption>The desktop stack: playback, script translation and the toy bridge - brand apps replace the bridge when the toy is theirs.</figcaption></figure>
Read the stack left to right and you can diagnose most problems before they start. A video with no player means no playback. A player with no bridge or brand app means a script that runs silently while the toy does nothing. A bridge with no compliant toy on the other end is the same story in reverse. The most common real-world fault is a missing middle step: people install a player, expect the toy to react, and never install anything that actually speaks for the toy.
5 tools make up this board. 5 of them carry a numeric meta-review score right now - this layer is scored from documented specs, pros, cons and verdicts rather than purchase data, because every entry here is software you install rather than hardware you buy. Prices are not listed for any of these apps on our board; the cost of this layer is your time, not your wallet.
| Product | Score | Price | Review | |
|---|---|---|---|---|
![]() | Intiface Central | 7.4 | $0 once | Review |
![]() | ScriptPlayer | 7.4 | $0 once | Review |
![]() | MultiFunPlayer | 7.5 | $0 once | Review |
![]() | FeelConnect | 6.2 | $0 once | Review |
![]() | Lovense Remote | 5.9 | $0 once | Review |
The verdict on file for Intiface Central is one line long and worth repeating: "Install this before you troubleshoot any toy sync problem." It is the universal toy bridge - buttplug.io for everything community - and it documents Windows, macOS, Linux and Android as platforms. What that means in practice: any player or tool that speaks the buttplug.io protocol can reach any toy that Intiface can reach, and the list of toys it can reach is the reason the protocol exists.
The strategic advice follows directly. Even if you end up using a brand app day to day, having Intiface Central installed gives you a second opinion whenever something refuses to pair. When a sync problem appears, the question "does this toy work through the bridge?" splits the fault in half: if it does, the problem is your player; if it does not, the problem is the toy or the connection. That is a more useful diagnostic than any troubleshooting guide.
ScriptPlayer, from developer FredTungsten, is documented as "the free Windows player with funscript + toy output" - native funscript support plus buttplug.io, hosted on GitHub. It is the closest thing this board has to a one-program answer for local files on Windows: point it at a video, load the matching script, connect a toy through the bridge, and the whole chain lives in a single window.
The simplicity is the feature and the limit. There is no machine output here, no multi-axis routing, and no macOS or Linux build documented - this is a Windows program for single-axis script playback. For that job, though, the honest description is that it removes steps. If your plan is "download a script, watch a scene, have the toy follow along," starting with ScriptPlayer is a shorter path than assembling the same chain from parts.
MultiFunPlayer by greh is tagged on our board as "the open-source funscript engine driving multi-axis machines," hosted on GitHub, Windows only. The documented pros say exactly what it is for: it drives OSR, SR6 and Motorbunny setups, and its device ecosystem breadth is called out on its own. It outputs TCode natively - the command language those machine builds speak.
The documented cons matter just as much: PC only, config-heavy. MultiFunPlayer is not a player you ease into; it is the engine room of a DIY build, and the configuration is where the weekend goes. The right mental model: ScriptPlayer is an appliance, MultiFunPlayer is a workbench. If you have printed parts, wired servos and a multi-axis frame, you already know you need this - nobody ends up running an SR6 on anything else.
Both remaining entries are ecosystem apps, and both document iOS, Android, Windows and macOS. FeelConnect is Kiiroo's companion app for Feel content and pairing; its scripting path runs through the Kiiroo ecosystem rather than an open protocol. Lovense Remote is the Lovense control app - patterns, sync, long-distance pairing - with scripting handled the same way, through Lovense's own ecosystem.
The trade-off with brand apps is the same for both, and it is structural rather than a flaw you can shop away: within their own toys they are the path of least resistance, and outside them they are not the tool you reach for. If your toy collection is single-brand, the matching app is the correct answer and the desktop layer is nearly invisible. The moment your setup mixes brands or adds community hardware, the open bridge earns its place - which is why the verdict section of this article starts with Intiface and not with either brand.
Every claim on this page traces to a linked source or to the app's own documented specs, and each review page carries the checked date. Nothing here was tested in-house; this is aggregation, stated as such.