PeakSync Guide
Your first funscript
Turn a video into a funscript and play it in sync with your device.
Start to finish: a video goes in, a funscript comes out, and you play it back — optionally with a device attached.
A funscript is a plain text file listing positions and timings. It contains no video and no audio, only motion, and it is what a connected device follows.
You need: an account, a video, and a few credits. No device required until chapter 4.
1. Open ANALYZE A VIDEO, OPEN SCRIPT EDITOR or OPEN PLAYER from Home

This is the home page. Three buttons, and between them they are the whole product:
| Button | What it does |
|---|---|
ANALYZE A VIDEO | Opens Motion Analysis and extracts timestamped motion from a video |
OPEN SCRIPT EDITOR | Opens Script Studio so you can create, import, or change a script |
OPEN PLAYER | Plays a script in sync with a video, with or without a device |
The same three sit in the top navigation as MOTION ANALYSIS, SCRIPT STUDIO and PLAYER, so you can
move between them at any point. HOME returns you here. SUPPORT opens the Guide, FAQ, Community and
Contact Us. ACCOUNT opens your account, with shortcuts for Scripts, Tasks, Devices and Credits.
Two things in the top right, worth knowing before you start:
NO DEVICE— nothing is attached to this browser tab. It stays that way until you connect hardware, which happens later, in the Player. A connected device replaces the label with its name.- Your account chip — the initial and display name beside it. Open it for My Account, Scripts, Tasks, My Devices, Credits, Notifications and Log out.
NEW TO PEAKSYNC? SEE HOW IT WORKS stays on this page. It scrolls to the four steps underneath:
choose a video, analyze the motion, review and edit, then export as Funscript or CSV — or open the
script in the Player.
This guide follows that order: analyze a video, play it, optionally connect a device, then edit it.
2. Create a funscript from a video in MOTION ANALYSIS
Choose and inspect a video, review the estimated usage, then authorize the upload and generation
with one action. No video is uploaded to PeakSync until you select UPLOAD & GENERATE.
The task names, account, and status rows in this section's screenshots are illustrative test data.
2.1 Open MOTION ANALYSIS from Home
Click ANALYZE A VIDEO, or MOTION ANALYSIS in the top navigation. Both open Video Motion
Analysis. NEW TASK is the starting view; CURRENT and HISTORY show your activity.

2.2 Choose a source and read the source notice
Use Upload file for a video on this device, or Video URL for a local file path or a video served on your local network. Both routes ultimately use the same upload and generation process.
The Source notice explains that, by submitting the source, you confirm you are authorized to access and process it and will comply with the Terms of Service and Content Safety Policy. Selecting a file only inspects it locally; the confirmation takes effect when you start the request.
The Preflight panel lists the supported format, maximum duration, and upload-size limit. It is a checklist before submission, not a sign that a selected file has already been uploaded or validated by the server. Your credits and the Script 3h / Script 24h quota meters appear alongside it.
2.3 Select a local video with Upload file
Drop a file on the dashed area or click it to use your file picker. Supported formats are MP4, MOV, and WEBM, up to 60 minutes. The upload must be no larger than 1 GB after preprocessing. PeakSync checks the video in your browser before showing an estimate. You can replace it before starting the request.
If it is a VR recording, check VR video before loading it. The page exposes its projection and stereo layout, and a fisheye source also has a lens field-of-view setting. Review these before submitting; conversion to a flat video runs on your device after you authorize the request. The original stays on your device.

2.4 Load a local video with Video URL

Enter a local file path or a local-network HTTP(S) video address in Local video path or URL, then
select Confirm URL Load. Pasting text alone does not load anything. For example:
/Users/me/Movies/video.mp4, C:\Videos\video.mp4, file:///home/me/video.mp4, or
http://192.168.1.10/video.mp4.
For a path, your browser opens a file picker so you can authorize access to the actual file. For a network address, the browser must be allowed to reach the local server, which must allow browser requests. Public internet links, redirects, and login-protected resources are unsupported. You can cancel a read or choose Choose file instead if it fails. PeakSync does not save the path or URL; once loaded, the video follows the same local inspection and upload steps as Upload file.
2.5 Set the task name and rhythm profile
Task name defaults to the video filename without its extension and can be changed before you start. Select INTENSE, BALANCED, or GENTLE for the rhythm profile; BALANCED is the default. This controls how motion is turned into strokes, not your device's output limits.
After local inspection, the page checks usage and displays an estimated credit cost with the 3h and
24h quota windows. The UPLOAD & GENERATE button stays unavailable when the video cannot be
inspected or the quote says credits or quota are unavailable. Review the estimate before clicking:
the server may find different actual usage after upload and ask you to confirm it.
2.6 Select Upload & Generate once
Upload & Generate adds your configured video to the browser's upload queue. The acknowledgement says Added to upload queue; choose Add another video to configure the next file, or View queue to open Current. You can keep up to five unfinished items. A full queue keeps your next draft and disables the same Upload & Generate button until capacity returns.
Videos upload one at a time across tabs in this browser. Only the executing item is submitted to the server and prepared. Keep each source tab open while its videos are waiting or uploading. When one video finishes uploading, the next can begin while the first continues through server validation and generation. Navigating within PeakSync retains queue work. Other devices have independent queues.
If estimated usage or policy changes while an item waits, it shows Review required. Read its updated usage and explicitly Confirm upload. Waiting videos do not allocate a server upload or charge credits. Existing server capacity can still delay dispatch even when the browser queue has room.

The initial click does not charge credits. Credits and both quota windows are reserved when a computation task is created. An interrupted or rejected upload before that point shows 0 credits. If actual usage or a validation warning needs your approval, the request enters Needs attention: open Review, read the revised usage and warnings, accept them, and select Confirm & Generate. Without that confirmation, it does not start the computation task.
2.7 Follow the request in CURRENT
Current shows the upload queue above the normal task list. Waiting items have Pause and Remove; Resume or Retry puts an item at the runnable tail. Active upload progress is measured from preparation or transport. A missing file shows Select file to continue, which is different from Upload interrupted. Reloading or closing the source tab never starts media automatically: resume explicitly or select the original file again. Matching prepared bytes resume the existing upload offset; changed bytes use a replacement attempt.
After complete receipt, the browser queue releases its slot and the existing server activity shows validation and analysis. Temporary status failures do not upload received videos again. Local queue items use Added timestamps; accepted server requests use Created. Interrupted uploads before computation do not use credits or quota. Sign-out clears the old account's browser queue.

After validation, a task may show Queued, Analyzing, or Generating. A queued task can be
canceled; its reserved credits are refunded if cancellation wins before processing starts. You can
leave the page while server processing continues. CURRENT also shows requests waiting for your
confirmation, so check there if generation does not begin automatically.
2.8 Open, edit, play, or download the result in HISTORY
When a task finishes, its row moves to HISTORY with Ready status. Select Edit to open Script Studio or Player to open the script for playback. Download opens a menu: choose Funscript (.funscript) for the script file or CSV (.csv) for timestamp and position rows.

History also shows failed, canceled, and expired activities. A terminal activity may offer Retry; that starts a new request and requires a new authorization. Its Cost column shows whether credits were used or refunded. Keep a downloaded copy of any script you want to use elsewhere.
3. Play the video and funscript together in PLAYER
Opened on its own, the Player lets you select a .funscript and a video; you can also choose
BROWSE MY SCRIPTS or try the sample. Coming from PLAYER in HISTORY, the script is already
loaded. Select the matching video on this device if the Player has not found a local copy.
With both sources loaded, the video and the Sync Scope trace the same moment.

This local test clip and script show the video pane, timeline, Sync Scope, and projected output without connecting hardware. Scrubbing keeps their positions together; during playback, they advance together.
Press SPACE, or the Play button, and the video and the script advance together. The readout keeps
pace: Source N → Range N is the script position mapped to the output, and the timecode counts up
with the video.
Two traces:
- Source — the script exactly as generated.
- Projected Output — what will actually be sent, once your offset, invert and stroke range are applied.
With no settings changed they sit on top of each other. The moment you adjust something, they separate — which is how you see what a setting does instead of guessing.
Underneath, TIMING shows your current offset and LIVE OUTPUT shows the target position and device
state.
3.1 Sync the script to the connected device before playback
When a playback device is already connected, loading a funscript adds one setup step before hardware
motion can begin. The connection card shows Syncing script to device… while Player prepares the
current actions and supported output limits for that device.
Important: The device must be reachable by its connection method before Player can sync the script. For a Wi-Fi device such as The Handy, check that it is online. A saved device profile or credential identifies the device but does not make offline hardware available.

The device connection and the script sync are separate. A green device indicator means the connection
is live; wait for Script synced before expecting device output. The success message clears after a
moment, and the card returns to its normal connected status.
Player stops device output while a new sync is in progress. Replacing the funscript, reconnecting the device or changing an output setting that requires a new device-side script can start the sync again. Keep the page open and the device connected until it completes.
If Script sync failed appears, click Retry sync. Do not expect hardware motion until the sync
succeeds. If it keeps failing, reconnect the device and retry; chapter 4 covers the complete
connection and playback flow.
3.2 Read the device status after a successful sync
After the connection succeeds and the script is synced, press Play and check both device status
areas before relying on the hardware output. The sample panel below shows the connected state.

- Top device chip —
Player playing: this activity means Player currently controls the device and synchronized output is active. When playback pauses, it changes toPlayer paused. - Device Interface —
Connected / HANDY_API_V3in this sample: the green indicator confirms a live connection; the text after the slash identifies the protocol used for this session. Session ready in …ms: this is how long the connection took to become ready. It is not the playback delay and is not the value adjusted by Timing Calibration.DEVICE READY: Player can see a connected playback device. This label alone does not mean the device is moving — check the top chip and the physical device for active output.
If the page shows DEVICE READY but not Player playing, playback may be paused, device output may
be paused, or a safety stop may be active. Resume only after checking the video position and Output
Limits. The shield beside the top device chip and the SAFETY STOP button stop device output
immediately.
If no picture ever appears and you only see the Sync Scope, that is normal — see below.
3.3 Use local video or SCRIPT-ONLY playback
PeakSync deletes the server copy of your source video after the analysis task ends. The current
UPLOAD & GENERATE flow does not automatically save a replay copy in your browser. When you open
the finished script from History, you may need to select the original video again in the Player.
Keep the video on your own device if you want to watch it alongside the script later.
Without an attached video, the Player shows NO VIDEO · SCRIPT-ONLY and can play the script anyway:

Transport, seeking, Sync Scope, and supported device output still work. Select PICK LOCAL VIDEO
to add the matching video. Clearing browser data or moving to another computer may also mean
selecting local sources again; PeakSync cannot restore a server video copy after the task ends.
4. Set up devices in ACCOUNT and use them in PLAYER
Everything so far works with no hardware at all. This chapter adds a device.
The current test-dialog screenshots use an illustrative device profile and simulated responses. They show what to review and confirm, without performing a hardware test for this guide.
4.1 Distinguish an OFFLINE profile from a live connection
This is the single thing people get wrong most often, so it is worth reading carefully.

A device is saved here. It reads OFFLINE, and the header says NO DEVICE.
A profile is a name and a set of default limits, stored in your account. It cannot make anything move. A connection is live, belongs to one browser tab, and ends when that tab does.
So a saved profile reads OFFLINE on every computer, in every session, until you connect it there.
That is not a fault. It is the design.
4.2 Add a device profile in My Devices

ACCOUNT → DEVICES → ADD DEVICE.
| Field | What it's for |
|---|---|
DEVICE NAME | Any name you choose. It labels the device everywhere afterwards |
DEVICE | The family — The Handy · Autoblow Ultra · VacuGlide 2 · Lovense · Buttplug / Intiface |
SPEED LIMIT | SLOW ←→ FAST, as a percentage |
INTENSITY CAP | SOFT ←→ MAX |
STROKE RANGE | SHORT ←→ LONG, a two-handled range |
SYNC OFFSET MS | A timing correction, if you already know yours |
Set as default device | Pre-selects it in the Player |
These are defaults, not locks. The Player can tighten them for a session without changing what you saved here.
Start somewhere middling and adjust. SPEED LIMIT 60% is a comfortable first setting to feel out
a new device — the profile above uses exactly that. Move it wherever you like from there.
4.3 Connect a saved device in My Devices

Press CONNECT on the card. You will be asked for one credential. For The Handy, that is the
connection key from the Handy app. If you don't know where to find it, the dialog links to
Finding your connection key.
The key is handled entirely on your side. It never reaches PeakSync's servers — where your browser supports it, PeakSync stores it encrypted on your own machine so a later connection can reuse it instead of asking again. It is only ever used to talk to your device, directly from your tab.

The card changes: CONNECTED, a green SUPPORTED badge, LAST CONNECTED with a timestamp,
and the actions become DISCONNECT, SAFETY STOP and FORGET CONNECTION KEY. The header pill
follows — NO DEVICE becomes the device's name.
FORGET CONNECTION KEY discards the stored key straight away, whenever you want it gone.
4.4 Test hardware with TEST CONNECTION
Connect the device first, then select TEST CONNECTION. The Device Connection Test dialog shows
the expected response, effective limits, and estimated duration. Review these before selecting
Start test. The response varies by device; for The Handy it is a bounded six-second stroke motion.

The result panel reports the connection, acknowledged commands, state checks, and whether the final
stop was confirmed. It then asks Did you observe the expected response on the physical device?
Select Yes, it moved or No response according to what you actually observed. Automatic command
acknowledgements alone do not confirm physical movement.

The test keeps the existing connection available afterward. Select DISCONNECT when you want to end
that connection.
4.5 Connect the device in PLAYER and start playback
Open a script in the Player and connect there.

Your saved device is pre-selected by name — but selecting is not connecting. Nothing reaches your
hardware until you press CONNECT.
Below it are the same three limits, marked SESSION ONLY. Change them here and your saved
profile stays as it was. SAFETY STOP sits at the bottom, always within reach.
If you'd like it gentler or stronger than it comes, that's what these limits are for — and Limit script speed with Speed Guard does the same thing in the script itself.
Read PROJECTED device output
Everything the Player reports about output is labeled Projected — Projected target 44.
PeakSync knows what it told the device to do. Most hardware never reports back what it actually did. The word is there for accuracy; it does not mean something is wrong. Judge by feel, not by the screen.
4.6 Calibrate device timing with CALIBRATE
If the motion runs slightly ahead of or behind the picture, fix it once instead of living with it.
CALIBRATE sits beside the Sync Scope and opens Calibration Mode: a short passage loops so you
can adjust while feeling the result. It appears once a video is loaded — on a script-only session the
Sync Scope says Add a video to calibrate timing. and you set the offset in the Device Interface
instead.

Calibration Mode keeps the Sync Scope, draft offset, frozen loop, PAUSE DEVICE and SAFETY STOP in
view while you compare the video with the connected device.
Use START LOOP to compare the same passage. When Calibration Mode opens, it freezes a
15-second passage around the current playhead (or the whole video when it is shorter). Select
START LOOP to safely seek to the beginning of that passage and play it repeatedly. At the end,
Player stops device output, returns to the frozen start time and resumes the video, Sync Scope and
connected device together. Repeating exactly the same motion makes small timing differences easier
to feel and compare.
START LOOP seeks to 00:44.952; after the playhead reaches 00:59.952, Player safely restarts the
same frozen passage. STOP LOOP ends the comparison and leaves the passage ready to run again.
While the loop is running, adjust the Draft Offset slider or use −10MS and +10MS; the Sync Scope
and device timing update with the draft value. PAUSE DEVICE and SAFETY STOP still override
physical output. Select STOP LOOP to pause playback and device output before choosing
APPLY TIMING or CANCEL. Without a connected device, the video and Sync Scope can still loop as a
visual preview, but there is no physical output to compare.
| Symptom | Fix |
|---|---|
| Device is late | Negative offset — advance it |
| Device is early | Positive offset — delay it |
The readout says it in words — +120ms · Device delayed — so you never have to remember which way
the sign goes. Adjust in 10 ms steps until you stop noticing the gap.
Drift is a different problem. An offset is a constant shift. If sync is right at the start and wrong five minutes later, that's a clock problem — check connection quality, and prefer wired over Wi-Fi. Recalibrating won't fix it.
4.7 Know when PLAYER stops device output
Worth knowing in advance, because most of it is deliberate:
PAUSE DEVICE · SAFETY STOP · pausing · seeking · hiding the tab · navigating away ·
refreshing · closing the tab · changing the source · a disconnect or error · the end of playback.
Hiding the tab is the one that surprises people. Browsers slow down tabs running in the background, and a slowed-down tab cannot keep millisecond timing. PeakSync stops instead of drifting out of sync. Keep the window visible — side by side or fullscreen both work.
Refreshing may restore the connection, because your saved key can be reused without asking you
again. It never resumes output. You always press Play again yourself.
If a device keeps moving after SAFETY STOP — rare, and serious — power it off at the device.
Then reconnect and retry.
5. Continue refining the script in SCRIPT STUDIO
Your script is playing, and it traces the video faithfully. What it feels like — the pace, the depth, how smooth it runs — is yours to set.
→ How to edit a funscript — read the timeline, shape the motion to your taste, and set how strongly it plays. Editing costs nothing.
You generated a funscript from a video and watched it play in sync. If you chose to use hardware, you also connected and tested a device.