EroScripts is a community for scripts that sync up interactive sex toys with porn. Learn more.

To discover, download, and help choose what gets scripted, create an account.


ScriptAxis - a searchable, sortable, filterable funscript directory

I can easily think of ~10 or so ways of improving the site other than what I already mentioned:

  1. Post prefixes - this allows files to be sorted by their main attributes (IRL :video_camera:, Drawn :fountain_pen:, 3DCG :computer: , Pack :card_file_box:, Paid :moneybag: , Audio-Only :musical_note:, Album :minidisc:, Cock Hero :guitar:, etc), these won’t be at the title of the post but before it. Clicking on these prefixes will allow you to search by them. More than one prefix can be added, resulting in stuff like this: Paid IRL :moneybag::video_camera:, Audio-Only Pack :musical_note::card_file_box:
  2. Filters - Gives the ability to remove files with tags you don’t want. The filters are able to remove the posts with one of these tags from your search. As well, it can also be used to only find posts with a specific tag.
  3. Members can tag and edit any post (see Danbooru/Gelbooru/Rule34) - Great way of improving the site as it allows tags that aren’t there to be added without having to have a moderator see it, but requires active moderation for any vandalism. (and no removing or adding embedded charts unless you are verified)
  4. NSFW Filter - For those times you don’t want to be violated by a ton of random oral and PIV pics. Replaces the image with "NSFW Filter Enabled: Please go to Account Settings to turn off) or excessively blurs the image beyond recognition. Alternatively, make it be like a filter where it hides all NSFW posts (and says "# posts were marked “explicit” and were filtered out).
    • An option will be shown when uploading to pick whether a file is “:green_circle: Safe” (safe for work), “:yellow_circle: Questionable” (softcore, ie: nipples showing, nudity), or “:red_circle: Explicit” (sex acts). The filter would be able to filter out explicit posts only or all non “Safe” posts. Posts that do not have this rated are assumed to be “explicit”
  5. Linking to external services - Someone already mentioned this but linking your account to EroScripts can be an easy way of getting verified on the site. A way to do this is by linking a simfile release post on EroScripts and then uploading the file to the site and if the metadata matches, it’ll verify you (probably requires manual verification as some users like me go by different names in different services)
  6. Voting and Score - The higher the score, the more likely it’s going to be trending. Only verified users can vote (going with Danbooru’s system where only gold+ can vote). :small_red_triangle: votes increases 1 score, :small_red_triangle_down: votes remove 1 score (1 score = 3 favorites)
  7. Favorites - Pressing the :heart: button will allow you to add it to your favorites. The more favorites, the more likely it’s going to be trending. Any member can favorite a post.
  8. Saved Searches - Allows searching by tag/circle/performer/stepper (and multiple tags) and saves it a selection option at the “Saved Searches” page
  9. Recommendations and “You’ve might’ve missed” - Recommends other files based of the tags of the file you are on. As well, the “You’ve might’ve missed” page gives 5 random files, allowing new and old files to be shown.
  10. Collections - Because ScriptAxis is designed for individual charts and not entire packs, collections allow charts in one pack to be clumped into one collection (instead of having to hunt for the files yourself). Something like this:

PS: These should be the categories

  • IRL
  • Cartoon
  • Ero-Anime (that’s what the Japanese call it, plus it actually describes what it actually is)
  • Music Video
  • Cock Hero
  • Audio-Only
  • Other

instead of shoehorning in actions like this:


I read every comment here and wow, so much proposals. That is beyond the scope of a non-commercial project.

Don’t get me wrong, the most ideas and proposals are great but who should do all the work … for free?

1 Like

Priorities man. Push off the harder stuff until the easier and more essential stuff is done (like putting the charts in the site, that’s always the top priority). The dev can open source the project and allow volunteers as well, but that has the problem of actually getting volunteers.

Some of the stuff we proposed are easy to implement (like the random charts in the details page), but some are harder and not worth it at the end.

It was mentioned the site will be in GitHub, if it’s open source then community can build it or just contribute.
As long as feature requests are properly created in the issue tracker, and coding best practices are followed, I don’t see an issue with it.

As a casual scripter, I would like my scripts to remain free, I wouldn’t like someone to either make money from them, or re-upload claiming ownership without giving credit.

I’ll keep an eye on this to see how it develops, and I agree (brought it up in the past as well), that a discussion/forum is not the best place to prevent de-duplication or find scripts (though having a template nowadays helps as performer names are in the title.)

1 Like

That helps me heaps actually, thank you!

I wonder whether it might be good to figure out a ‘standard’ color scheme that everyone can use in all applications, some kind of standardized ‘mapSpeedToHue’ function. Ultimately there is a pretty fixed upper limit for what the speed could be without ripping someone’s cock off, so that could be the ‘max’ value and everything is interpolated in a nice way between that…

I’ll spend a little time messing around with it and let you know!

It’s technically possible I believe, but would require some support from the EroScripts admins. If I were able to collaborate with EroScripts directly, then there are other cool things that could be done, including letting script creators automatically create a script-release post on EroScripts when adding their scripts to ScriptAxis, which would be pretty cool!

These are great suggestions, thanks so much for taking the time to write all that up! I have many thoughts:

  1. I think all of this can be done with tags - the title of the script should just be the video name and in theory shouldn’t include ‘metadata’ like studio, actresses, category, etc.
  2. Yeah I actually already have an ‘exclude tags’ filter function built in. However I’ve discovered that Firestore DB doesn’t support any function like “give me all records that don’t have any of these items in a particular array field”, so I’m going to move to a relational database today instead
  3. Yes I absolutely agree with this. I think the system that Steam has for tagging is really excellent. I think something like a very lightweight ‘voting’ system should exist, where you can ‘downvote’ tags that others have applied that you don’t think should apply, and ‘upvote’ tags that you agree with. I think most people won’t actually do this, however, so the scripts will mostly rely on the original creator to provide tags.
  4. I don’t think enough people would find this useful to justify the time it would take to build this in. There could be a category or tag for “SFW” and “Softcore” scripts, and so if you didn’t want to see anything intense, you could just navigate directly to or whatever.
  5. This is a really interesting point. If I were to rely on EroScripts to verify accounts on ScriptAxis, there are a bunch of things I could do, but I’d need to collaborate with the EroScripts admin(s). For example, when you create an account on ScriptAxis and are given a special passcode, and you need to go and paste that passcode into a special “ScriptAxis Verification Thread” on EroScripts. Then I could scrape that thread a few times a day and verify all the accounts that have successfully posted their passcode. Obviously I don’t want to be scraping EroScripts without permission from the admins though.
  6. While it would be cool, I think integrating any kind of time-series data that allows for ‘trending’-style functions is probably a little bit beyond me right now. This can go into the ‘one day’ pile, because I really would like it.
  7. Yeah I already have a ‘like’ system built in, once user accounts are created, I intend on keeping track of which videos a user has liked so that they can refer back to it later.
  8. This is an interesting idea. My current filter system already stores the full list of filters as an object in memory, so it wouldn’t be too hard to just save that to a ‘saved searches’ array on the user. I might give it a shot!
  9. Yes having some kind of ‘similar scripts’ system would be great to help people find content they might like. I’m not exactly sure how to go about building that though, so I might need to do some research. It would be easy enough to just return a few random scripts that share a category, or at least two tags, or something like that…
  10. I can only see this being useful in a few really particular circumstances, like how @Schorsche is currently scripting all the Cock Hero Island videos, so it would be cool to be able to find them all in one place. I think that I’d rather just rely on authors to put links to the other scripts in the ‘collection’ in the description of each script, rather than introduce a whole new organizational hierarchy level to the database, which just makes everything way more complex for a feature that most people won’t use…

And in terms of the categories:

  • I respectfully but strongly disagree with removing “actions” as categories. The problem with actions as tags is that videos with both actions get tagged equally. It’s a huge pet-hate of mine that when I search for, say, a blowjob video, I get videos that start with a 2 minute blowjob and then have 15 minutes of vaginal sex (looking at you, SexLikeReal!).
  • I think having a category of “IRL” to catch basically everything that isn’t animated or a particular format makes primary categories almost useless. Ultimately, the categories should be centered not on what is “logically true”, but what people are likely to find meaningful as “rough indications of what the video is about”. It does make me think that perhaps hentai should be a tag, rather than a category, however, to make it easier for people to find more specific kinds of hentai content…
  • While “ero-anime” might be a more correct term, it’s not the term that people use in the west, and therefore isn’t useful as a category name - I’d rarely heard the term used in-context before and I’ve got hundreds of GB of hentai on my PC :stuck_out_tongue:
  • I think I agree that furry should be a tag, not a category.
  • Writing all this up, I think that perhaps the way I think about it is that “category” should refer to the best single-description of what happens in the video, while “tags” should refer to anything else (such as details of what happens, like ‘creampie’, ‘femdom’, ‘asian’, or such as presentation, like ‘hentai’, ‘HD’ or ‘3D animted’)

Yeah this is probably the #1 thing that I’m spending all my time thinking about how to avoid. I think that’s why I’m liking more and more the idea of a manual verification system being required for people to actually post .funscripts. That way, the worst thing that can happen is that someone steals a script, posts it on EroScripts as their own, and links to it. The great thing about EroScripts is that the community is incredibly strong, so that kind of abuse is found very quickly - so EroScripts can continue to function as the heart of the scripting community as a place for discussion, learning and anouncements, and ScriptAxis becomes the tool to share, discover, manage and use scripts.

Oh yeah I should probably share the GitHub link so people can create issues!

RIght now only I’m able to actually contribute code, but I would welcome feature requests or ideas in the Issues section! Everything is changing a little too quickly right now I think for me to bring on any active collaborators, but once things are a little more stable I’d definitely love to have people helping to actually build the site!


Here are the colors I am using in .NET. I can easily change them as they are stored in a dictionary.
{HeatMapColor.White, Color.White},
{HeatMapColor.Blue, Color.DodgerBlue},
{HeatMapColor.Green, Color.ForestGreen},
{HeatMapColor.Yellow, Color.Gold},
{HeatMapColor.Red, Color.Crimson},
{HeatMapColor.Purple, Color.Purple},
{HeatMapColor.Black, Color.FromArgb(15, 0, 30)}}

Color Values

The black color is used to make the purple color darker for insane speeds. It fades slower than the other colors. I could easily add more colors to the heatmap or change the steps or even add color schemes where the user can select from.

Dim f As Double
Dim c As Color
Dim StepSize = 60
   Select Case Intensity   'Intensity of the chunk
            Case = 0 * StepSize
                c = HC.HeatMapColorDict(HC.HeatMapColor.White)
            Case <= 1 * StepSize '0-60
                f = (Intensity - 0 * StepSize) / StepSize
                c = GetMixedColor(HC.HeatMapColorDict(HC.HeatMapColor.Blue), HC.HeatMapColorDict(HC.HeatMapColor.Green), f)
            Case <= 2 * StepSize '60-120
                f = (Intensity - 1 * StepSize) / StepSize
                c = GetMixedColor(HC.HeatMapColorDict(HC.HeatMapColor.Green), HC.HeatMapColorDict(HC.HeatMapColor.Yellow), f)
            Case <= 3 * StepSize '120-180
                f = (Intensity - 2 * StepSize) / StepSize
                c = GetMixedColor(HC.HeatMapColorDict(HC.HeatMapColor.Yellow), HC.HeatMapColorDict(HC.HeatMapColor.Red), f)
            Case <= 4 * StepSize '180-240
                f = (Intensity - 3 * StepSize) / StepSize
                c = GetMixedColor(HC.HeatMapColorDict(HC.HeatMapColor.Red), HC.HeatMapColorDict(HC.HeatMapColor.Purple), f)
            Case Else '240-640
                f = (Intensity - 4 * StepSize) / (5 * StepSize)
                If f > 1 Then f = 1
                c = GetMixedColor(HC.HeatMapColorDict(HC.HeatMapColor.Purple), HC.HeatMapColorDict(HC.HeatMapColor.Black), f)
        End Select

If an intensity value is between 2 colors then I calculate a mixed color.

 'Mix two colors and get the mixed value - Factor 0.5 is 1:1 Mixing, Factor 0.2 means it's closer to color 1
    Private Function GetMixedColor(Color1 As Color, Color2 As Color, Factor As Double) As Color 
            Dim A As Byte = Color1.A * (1 - Factor) + Color2.A * Factor
            Dim R As Byte = Color1.R * (1 - Factor) + Color2.R * Factor
            Dim G As Byte = Color1.G * (1 - Factor) + Color2.G * Factor
            Dim B As Byte = Color1.B * (1 - Factor) + Color2.B * Factor
            Return Color.FromArgb(A, R, G, B)
    End Function

This is perfect, thank you so much man! Looking at good ol’ C# again after days of bashing my head against javascript is actually really nice as well haha!

I’ll start with this colour scheme, but keep a few neurons thinking about whether there are improvements that could be made.

Also, as an update to anyone following this thread, I spent literally all day today ripping Firestore out of the whole site and switching to PostgreSQL+Prisma instead, which has been a pretty intense learning experience… I just about have all the old functionality integrated (with the exception of being able to sort scripts), plus now it’s possible to filter with an ‘exclude tags’ option! Part of that process also involved laying all the groundwork for the user account system, which I’m now just about ready to slip into place!

Update #2: Two days later, lots has gotten done (I mostly chilled out yesterday since it was Sunday)

  • User accounts are up and running, with email verification, password reset, script favoriting and more!
  • Filtering and sorting is now 100% functional and is really great - you can filter by name (i.e. search), category, include tags, exclude tags, min duration, max duration, studio, talent, has source url and has streaming url
  • Video embedding works! If a script has a streaming URL from pornhub, xhamster, spankbang, xvideos, redtube, porntube, tube8, youjizz, eporner, tnaflix or homemoviestube, you can watch the video directly on the script page!

The current site is now live at if anyone wants to have a look and play with the filtering - I just added the first 40-or so scripts in my collection that I haven’t tried yet alphabetically :stuck_out_tongue:

I’m working towards a ‘public alpha’ within the next week or so. You can track my progress towards that on the dedicated project page over on GitHub. Basically the last missing features are creating/editing scripts, adding pagination to the main script browsing page, redoing the dashboard and redoing the Creator page. Then I need to go through and do all the mobile layout work, and generally do a big UX pass over everything.

Once all that’s done, you can all go ahead and add scripts to the site (I’ll be adding scripts as they are released, as well as slowly working backwards through the scripts that have already been released), and it should prove useful as a script-finding tool! That’ll be version 0.1!

The version after that is going to be the version where people can actually upload .funscripts. There’s a lot to do there to prevent abuse and theft, mainly centered around the admin panel, the account verification system, reporting, etc.


This is awesome. Thank you!

I like the Idea, The only Thing I woud like to see is the strict Categorization of 3D CGI content to a specific Section because I find it annoying if you search for 3D Stereoscopic Content and get Tons of 3D CGI with two or three true stereoscopic Videos.
In the Filters Section there should also be the Possibility to filter for Device Compatibility because I could imagine it could be pretty annoying searching for compatible Scripts for the Launch in 2 Years from now because the newer Devices can handle faster Movements.
Other than that it’s a brilliant Idea!

1 Like

Yeah I hear you. I would think that the appropriate way to tag that would be either ‘stereoscopic’ and ‘3D’ or ‘3D’ and ‘CGI’. Ultimately it’s going to be up to the person adding the script to add tags, but I’m going to be adding a ‘tag voting’ system so that the community can work together to collectively curate the tags for scripts, so hopefully that helps the problem…

As for device compatibility, for all scripts that have attached funscript files, I’ll be able to extract the maximum and average movement speeds for the script, and so it should be pretty easy to get a ‘device compatibility’ filter happening. Funscript upload and analyzing is going to come in ‘version 2’ - right now I’m focusing just on the adding, editing, favouriting, searching, filtering and sorting of scripts.


Great to hear that as an 3D Stereoscopic enthusiast! I find it pretty annoying searching the usual Sources.

I have created a chrome extension for syncing to videos with theHandy, on almost any streaming site, including mega. Though I haven’t shared it yet, as I’m not sure if the server will be able to handle the potential amount of requests. I’m also using it personally, so I would like to be able to keep using it.

It got me thinking, it would be nice if ScriptAxis had a chrome extension. It could work by making the site send the script to theHandy when you click on a video. Then when you click “watch on” it would start syncing to the video on pornhub.

While it would be better if you could sync to the video directly on ScriptAxis, without an extension. The issue is that you can’t access the current time from a video, or any other elements that’s in an iframe, such as an embedded pornhub video.


I’m the last guy that would know how to make this work but is there a way to integrate syncydinks functionality into this site?

I’ve never made a Chrome extension before - that sounds like a lot of extra hassle haha. I didn’t realized that CORS would stop me from accessing embedded video elements in an iFrame, that’s such a huge bummer. Hackers ruin everything! :frowning:

I was reading about how it might still be possible by basically setting up a proxy that loads the streaming URL content and then serves it up from the domain - but that might be a security vulnerability, and I’m not sure whether it would actually work…I might give it a shot when I’m feeling bored one day.

Knowing literally nothing about how Chrome extensions work, wouldn’t it be possible to make it ‘local-only’? Like I would have thought that it would just get the client browser to send the necessary HTTP requests to and to receive timeUpdate events from a video element.

If you did end up making your extension public and figure out a way to not overload the server it’s running on, perhaps the easiest thing would be to just suggest to users without the extension to download it. One interesting thing is that the tampermonkey script I’ve been using to sync with pornhub still works in my the embedded iFrames, so perhaps there is something to the idea of creating a ‘scriptaxis-specific’ plugin which is designed to work within those iFrames. Things to think about!

Syncydink has a lot of functionality! What do you mean in particular? Maybe you mean integrating a local video player into script pages, so that if a user has a video downloaded they could drag it onto the page and watch it locally, kind of like a souped-up version of That would definitely be a nice thing to add down the line a little bit!

1 Like

I don’t own a handy so I didn’t know about handyfeeling, but after taking a look at the site I was thinking something similar to it that would be capable of working with most of the other types of toys as well.

Oh haha I’m 100% in the Handy world, I don’t even really know how other devices work I’m afraid. Unless someone sends me a Launch and/or a Keon, I’m not exactly able to make sure that the site works for those devices. But right now the site is device agnostic so that’s a ‘later problem’!

1 Like

Making a chrome extension wasn’t actually too difficult to learn, given that you already know Javascript, html and CSS. If you’re curious about it, you can check out this tutorial: How To Make Chrome Extensions - YouTube

As for local only, yes that would totally be possible. The only reason it uses a server, is just to get the script data from the database. That way scripts only have to be uploaded once. The idea was that people on this forum could upload their scripts to the extension, making it so that users can just open the link to the videos and have it sync. I have created pornhub playlists for that purpose.

But since you got it working with the tampermonkey script directly on the iframe, I think that’s a good solution. It might not be the most elegant at the moment, but I think a solution is better than having to spend 10+ minutes downloading videos, that you most likely only will watch once…

Oh that’s a nice video, thanks for the tip. It definitely does seem pretty doable.

And yeah I see how that would be really useful - like you go to a video page on pornhub and the extension says “hey I have a funscript for this page, do you want to sync?”. I don’t think you’d need to worry about server load though - even if the whole community was using the extension every day it wouldn’t be more than like $20 a year in hosting costs I reckon (just doing some napkin math and using the firebase pricing tables as a guide)

But I agree in general - letting funscripts be a ‘one-time-consumption’ thing rather than almost like a hobby where you have to obsessively collect and store files would definitely help grow the community!

@defucilis HMU if you’re interested in displaying script content. You could probably rip the haptics viewer out of syncydink ( Not sure how useful it’d be, but it’s something. That is, assuming you want to maintain a mess of D3 code. :slight_smile:

If you wanted playback without hosting, you could probably using something like syncydink and just autoload the file, expecting that the user either provides the URL or the file themselves. Syncydink was 100% client-side so you could even host that part statically.

Ooh that’s definitely an intriguing prospect, thank you so much for the offer! The haptics viewer is great - I think it’s quite useful for getting a high-level sense of what a script is ‘like’. Would be awesome to include it, or at least to take inspiration from how it was put together!

The ‘funscript upload’ version of the site is a little ways off though, I’m focusing on getting the viewing/sorting/filtering/adding part correct first. If you make an issue over on the GitHub repo for funscript pre-visualization, then I won’t forget haha