01 / IN SHORTFour things to know first.
- Speed is distance over time. Positions run from 0 to 100, so at 500 units a second a full sweep from 0 to 100 takes at least 200 ms.
- The gap is the time between points. At 80 ms, one axis gets no more than 12.5 points a second.
- They are defaults. Slower devices need lower limits.
- Slow down; never skip. A careful player shortens a move that is too fast and keeps its timing, and merges points that are too close while keeping the turns. Skipped strokes break sync.
02 / THE NUMBERSTwo limits, and what a player does.
| Limit | Default | In practice | A player should |
|---|---|---|---|
| Fastest move | 500 units a second | A full sweep takes at least 200 ms; a full cycle down and up, 400 ms. That is about 150 full strokes a minute. | Shorten the move, keeping its timing. |
| Smallest gap | 80 ms | No more than 12.5 points a second on one axis. | Merge closer points, keeping the turns. |
03 / WHY LIMITSMachines, links and bodies.
- Machines have a top speed. Motors, belts and screws only go so fast, and each device differs. FunscriptForge's device-limits page gives about 400 units a second for the Handy and 500 for the OSR2, and describes both as community estimates rather than makers' specifications.
- Links need time. Each point becomes a command over Wi-Fi, Bluetooth or a cable, and each device needs a moment to take it. Some drop commands that come too quickly: under TCode's Bluetooth companion, a device ignores a short command that arrives on the same axis within 5 ms of the last.
- Bodies notice. Asked for the impossible, a device lurches, stalls or skips. Something you use on the body should move smoothly and predictably.
- Skipping is worse. A skipped stroke leaves the device in the wrong place and out of step with the picture. ANANGA's spec says a player should not skip moves silently.
04 / FOR SCRIPTERSWrite inside the lines.
- When the picture moves faster than 500 units a second, script shorter strokes at the right moments rather than full ones no device can make.
- Keep points at least 80 ms apart. One point per turn is enough.
- Write whole numbers, sorted by time, with no two points at the same moment and every position between 0 and 100.
- Leave
invertedfalse andrangeat 100 unless the script truly needs them.
Then run the checker. Its plot marks moves faster than 500 units a second in red, and it counts points that come less than 80 ms after the one before. It runs in your browser; the file is never uploaded. The full method is in how to make a funscript.
05 / FOR PLAYERSHold the line, keep the time.
- Shorten, don't skip.Keep each move's timing and reduce its distance until it fits under the limit.
- Merge, keeping the turns.When points come closer than the gap, keep the highest and lowest so the rhythm survives.
- Go lower for slower devices.500 and 80 are ceilings, not targets. Use each device's own limits where they are lower.
- Let people choose less.A user's own speed cap is good practice; MultiFunPlayer, for one, has per-axis speed limits and smoothing.
- Say what changed.Tell the user when points were skipped for missing numbers, and when moves were limited.
ANANGA's player holds every device under 500 units a second, with at least 80 ms between moves, whatever a script asks. Developers can check and repair scripts in code with the open @ananga-ai/funscript library. The rules are written down in the funscript format, as a spec.
06 / QUESTIONSAsked often.
Is 500 units a second the same as 500 mm a second?
No. Positions are hundredths of the range the device is set to use. On a 100 mm range, 500 units a second is 500 mm a second; on a shorter range, it is less.
Will the limits change how a script feels?
Only where the script goes beyond them. The checker shows how many moves that is, and the fastest one.
Why 80 ms, if some devices can take commands faster?
It is a margin. A script written to 80 ms plays well on more devices, over more kinds of link.
Do vibrators have limits too?
The gap applies: every change of strength is a command. The speed limit is about moving parts. See vibrators.
Does the checker upload my script?
No. It reads the file in your browser and nothing leaves your device. Use it on any script, wherever it comes from, including those in ANANGA's free, open catalogue at ananga.ai/scripts.
07 / SOURCESWhere the facts come from.
- The funscript format, as a spec, ANANGA docs: the defaults and what players should do.
- Device limits, FunscriptForge documentation.
- TCode specification, Tempest Multiaxis.
- Generic device messages, Buttplug protocol specification.
- MultiFunPlayer, GitHub.
- ANANGA's checker and player: as built.
Written and checked by ANANGA in Paris against the pages above on 6 November 2026. Corrections are dated on this page.