Advanced Performer Rating

Advanced Performer Rating

A Stash plugin that adds a multi-category rating system for performers, split across physical and performance criteria. The plugin calculates a weighted average and sets the Stash performer rating automatically.

Credits

Inspired by the Advanced Rating System plugin on the Stash community forums, which introduced the concept of using tags for multi-category ratings. This plugin builds on that idea with a full interactive UI modal, weighted physical/performance scoring, and configurable categories.

Requirements

Installation

Option 1 — Automatic (recommended)

  1. In Stash go to Settings → Plugins → Add Source and enter:
    https://ordureconnoisseur.github.io/plugins/main/index.yml
  2. Find Advanced Performer Rating in the plugin browser and click Install
  3. Run the Create Tags task

Option 2 — Manual

  1. Download this repository (Code → Download ZIP) and extract it
  2. Place the extracted folder inside a category subfolder of your Stash plugins directory:
    • Linux/Mac: ~/.stash/plugins/Utilities/Advanced Performer Rating/
    • Windows: %USERPROFILE%.stash\plugins\Utilities\Advanced Performer Rating\
      The plugin must be two levels deep — plugins/Category/Plugin/. Placing it directly under plugins/ will cause
      it not to appear in Stash.
  3. In Stash, go to Settings → Plugins and click Reload Plugins
  4. Enable Advanced Performer Rating
  5. Run the Create Tags task to generate the rating tag hierarchy

Usage

Click the ★+ button on any performer’s page to open the rating modal.

Rate each category using the 1–5 star selectors. Hover over the ⓘ icon next to a category name to see a description of what it rates. When you close the modal the overall performer rating is calculated and set automatically.

The rating is visible directly on the performer page alongside the category tags that were assigned. The overall rating is the average of physical categories and performance categories, each group averaged separately then combined — so both groups carry equal weight regardless of how many categories are in each.

Configuration

Go to Settings → Plugins → Advanced Performer Rating to configure:

Physical categories (all enabled by default):

Setting Description
Disable: Face Remove Face from rating
Disable: Breasts Remove Breasts from rating
Disable: Ass Remove Ass from rating
Disable: Body Overall Remove Body Overall from rating
Disable: Genitals Remove Genitals from rating

Performance categories (all enabled by default):

Setting Description
Disable: Technique Remove Technique from rating
Disable: Energy & Presence Remove Energy & Presence from rating
Disable: Sluttiness Remove Sluttiness from rating

Other settings:

Setting Default Description
Rating Star Precision 10 Match to your Stash rating precision: 20 = Full, 10 = Half, 5 = Quarter, 1 = Tenth
Minimum Required Tags 1 How many categories must be rated before a score is calculated
Allow Destructive Actions false Must be enabled before the Remove Tags task will run

All categories are active by default — check a box to disable that category.

After changing precision, run Process All Performers to retroactively recalculate existing ratings.

Tasks

  • Process All Performers — Recalculates ratings for every performer based on their existing tags
  • Create Tags — Creates the rating tag hierarchy under a “Performer Ratings” parent tag
  • Remove Tags — Deletes all rating tags (requires Allow Destructive Actions to be enabled)

How It Works

Each category gets a tag in the format Category: N (e.g. Face: 4). When a performer is updated, the hook reads those tags, calculates the weighted average across both groups, and sets the Stash rating. Tags are organised in a hierarchy: Performer Ratings > Category > Category: N.

Rating Calculation

  • Physical score = average of all rated physical categories
  • Performance score = average of all rated performance categories
  • Final score = average of physical and performance scores (equal weight)
  • Snapped to the nearest value matching your Rating Star Precision setting (e.g. Half precision snaps to multiples of 10: 10, 20, 30 
 100)

This plugin is in violation of a license.

Thanks for flagging. I’ve updated the license to AGPL v3 to comply.

hi its not working for me can you help? when i try to give a rating it tells me that no tags are available and that i need to run the “create tags” task. I did that and it still gives the same error

The issue was most likely that stashapp-tools wasn’t installed on your system. I’ve just pushed an update that fixes this, the plugin will now automatically install it if it’s missing. Just update the plugin in Stash and try running Create Tags again. Let me know if you’re still having issues!

Thank you for the quick update!

The create task now finally starts and takes a long time. after it finishes nothing really changed. still the same message and no created tags

Just pushed another fix and tested it on Windows, Mac, and Linux - it should work now. Please update the plugin in Stash and run Create Tags again. If it’s still not working, could you send me your Stash logs? Go to Settings → Logs immediately after running the task and paste anything related to advancedPerformerRating.

026-04-25 15:34:52Error [Plugin / Advanced Performer Rating] WARNING: Retrying (Retry(total=2, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘ReadTimeoutError(“HTTPSConnectionPool(host=‘pypi.org’, port=443): Read timed out. (read timeout=15)”)’: /simple/stashapp-tools/

2026-04-25 15:34:36Error [Plugin / Advanced Performer Rating] WARNING: Retrying (Retry(total=3, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘ReadTimeoutError(“HTTPSConnectionPool(host=‘pypi.org’, port=443): Read timed out. (read timeout=15)”)’: /simple/stashapp-tools/

2026-04-25 15:34:20Error [Plugin / Advanced Performer Rating] WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘ReadTimeoutError(“HTTPSConnectionPool(host=‘pypi.org’, port=443): Read timed out. (read timeout=15)”)’: /simple/stashapp-tools/

WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by ‘ReadTimeoutError(“HTTPSConnectionPool(host=‘pypi.org’, port=443): Read timed out. (read timeout=15)”)’: /simple/stashapp-tools/

i get the same error when i manually run “pip install stashapp-tools” in cmd

The error means your machine can’t reach pypi.org at all to download the package. This a network issue. A few things to try:

  1. Increase the timeout (sometimes pypi.org is just slow):
    pip install stashapp-tools --timeout 60

  2. Try a mirror (pypi.org might be blocked in your region):
    pip install stashapp-tools -i https://pypi.tuna.tsinghua.edu.cn/simple/

  3. Manual install — if pip can’t reach the internet at all, you can install it
    offline:

  • Go to stashapp-tools · PyPI in a browser and download the .whl file
  • Then run: pip install C:\path\to\stashapp_tools-x.x.x-py3-none-any.whl

Are you using a VPN at all? if so maybe try disabling that to install.

Its getting weird. No I’m not using a vpn. pypi doesnt work, the mirror doesnt work. I’ve tried manually downloading the repo and installing it with pip install /path/to/stash-tools and that last option seemed to work until it needed to get dependencies

Your situation is unusual — most systems can reach PyPI fine, but I’ve pushed an update that handles the offline case. The plugin now ships with a bundled fallback copy of the required library, so if pip can’t download it, it automatically uses the bundled version instead. Just update the plugin and it should work without any manual steps.

Okay
 Finally
 It worked lol.

I did “pip install stashapp-tools --timeout 120”
it installed but i needed to manually add the script folder to the PATH.
now your plugin works fine.

in the end it had nothing to do with the plugin, but thanks for the help anyways

Glad it’s sorted, and thanks for reporting back - useful to know it was a PATH issue in the end. Enjoy!

1 Like