- a website for playing, modifying and generating funscripts!

I’m not sure the best way for me to describe this situation.

Let’s say you’re in manual mode and you want to set it to random. In this example you want the stroke range to be anywhere between 0% to 100% stroke length and you want the longest strokes to be anywhere between medium to fast. This means that if you set it for this, at some point you’re going to have the shortest possible strokes with the fastest possible speeds. If you go the other way and optimize a medium speed for the shortest strokes, then the longest strokes, at some point, are going to take forever to go from 0 to 100. Another way to think of it is if you want an overall slow to medium experience and you want it stroking anywhere in the range between 0 and 100, then there would need to be some kind of bias that makes both the longest stroke slow to medium and the shortest stroke also slow to medium.

If I just made everything more confusing, then just let me know and I’ll try to make it even worse.

I think I understand. It sounds like rather than randomizing stroke length and stroke speed, you want to randomize stroke length and strokes-per-second?

This is actually a pretty good idea, and could just be a checkbox to choose between stroke-speed and stroke-per-second mode.

Obviously, not all stroke lengths support all stroke-per-second values (30% stroke length goes from 36 to 364 strokes per second, while 100% stroke length goes from 11 to 109 strokes per second), but I still think this would probably be useful.

If I’ve understood you correctly, that is :stuck_out_tongue:

1 Like

If saying strokes/second is somehow easier to understand than my novella on how I can’t seem to
get stroked at medium speed at various points along my shaft, then yeah I guess so.

Yeah I have no idea how that happened.

Well, “stroke speed” refers to the actual speed (in millimeters per second) that the Handy moves the ‘shuttle’ at. But when most people think of ‘stroke speed’, they’re thinking of how many strokes per second are happening.

1 Like

Sorry, I was making a joke about how long winded and rambling my explanation was versus how clearly and succinctly you were able to state the situation. You got it right. :slightly_smiling_face:

1 Like

This is so good :heart_eyes: Let us know the features you need in future API updates to improve it further!


Thanks man, good to see you around here!
I’ll keep harassing you all on Discord for new features, don’t worry :sunglasses:


New version is out - just a few small changes since work has unexpectedly become super busy for me again :sob:


  • Added Limiter modifier to ensure a script matches a device’s capabilities
  • Space bar now pauses/unpauses the local script player
  • Left/Right arrow keys now seek 10s back/forward in the local script player (suggestion by @spuzz1127)
  • It is now possible to change the stroke speed/length increment amounts in manual mode (suggestion by @Jupiter)
  • Added changelog page


  • Up/Down arrow keys are now used instead of left/right to change sync offset in the local script player


  • Heatmaps now show gaps in the funscript (rather than continuing the color that was before the gap)

Great update! Thanks for all your hard work!

Two more suggestions:

  1. Please make it so that mouse clicking anywhere in the video area starts and stops the player.
  2. Please make it so that when hovering over the heat map, clicking the mouse moves the video to that point.

Thanks again!

Ok, one more (lol):

  1. Please make it so that it is possible to keep the motion overlay (what you see on the video when hovering over the heat map) visible (perhaps a checkbox?) so that you can see expected motion with the video. It would require the overlay to scroll to keep the current motion point visible. Perhaps but a center line or ball that moves along the motion line to show the exact point in the script. This would be very helpful in figuring out offsets.

Thanks again!

Thank YOU good sir! I know software is all around us, but I have a sort of a new, heartfelt appreciation for software devs / engineers from what I have seen and downloaded from these forums. You guys literally create magic with your skills. And to think that you are doing this on top of your day job is just mind blowing.

Thank you again @defucilis !

So I found myself procrastinating work and decided to at least productively procrastinate, so I added these! The first two were things I was planning on getting to anyway, and the third sounded interesting so I gave it a shot.

The ball motion is a little jerky - I could improve it but it would require a little more shenanigans. Do you think it’s useful enough as-is?

@Jupiter Our universe didn’t get magic, but we did get code, which is pretty damn close in lots of ways. :smiley:
…which makes me not want to think about what I’d be getting up to if we had magic instead hahaha


Nice, but do you plan to support Fleshlight Launch?

would be great if Launch is supported!

I’d certainly like to, but I don’t own one so I don’t have any way to add support and test that it works. Maybe once enough people use the site I can convince fleshlight to send me one :smiley:

Ok. Wow. Cool. :grinning:

Excellent job on all 3 requests! Thanks you!

I think the ball motion is perfectly adequate. Sure, it would be nice if it were smother but I know that effort significantly increases as refinement furthers. If you feel like putting more time into it, great, but I think this could be considered mission accomplished for now. :slight_smile:

Note - it took me a moment to find the switch, but I think that is good too.

A couple more:

  1. (easy) please filter the script file open dialog file list to only valid script file types (.funscript, .csv). A few times I’ve accidentally clicked on the mp4 when meaning to load a script.
  2. (hard) this is really just pushing things (lol) - how about using the mouse wheel to zoom in and out of the motion overlay. It currently moves pretty quick across the screen and zooming out would slow that down. Note that this is totally frivolous and I’m sure there are more useful features to work on.

Sorry if I keep asking. I’ve been involved in UX/UI my entire career and I just can’t help myself when seeing application possibilities. :slight_smile:

Thanks again for all your effort.

Ok… just actually tried it with a handy on a better video.

First, you can completely ignore the #2 request (zoom). It was at a perfect speed just as is.

Second, having the overlay/ball was PERFECT for getting exact sync!!! This is an incredibly useful feature! Thank you again for implementing!!!

Third, how about a bit more vertical space for the player. Perhaps reduce the size of the file drop zones? Maybe reduce some of the padding above the player and above the heat map?

Yeah I tried using it to get sync right and I agree it’s very useful! Definitely a nice suggestion :smiley:
I added the funscript file filtering that was one of those “oh I’ll fix that later” things that I forgot about

As for vertical space, I’m going to be redoing all the styling at some point moderately soon so that I can properly support mobile devices, so I won’t go in and fix that yet since it’s all going to change.

Thanks for the suggestions! My background is…definitely not UI/UX so this stuff is very helpful for me!

Makes sense on the layout.

I see you implemented the zoom! :slight_smile: I find the zoom rate pretty fast (I seem to zoom all the way in and out too easily) and it would prob make sense to implement some limit on how small it can go.

Thanks again!

Amazing project!

Is there a feature planned for the future that will allow you to set a bottom offset in “Manual mode” so that the handy does not go all the way down and stays and strokes further up?