explaingit

stashapp/stash

12,334GoAudience · generalComplexity · 3/5Setup · moderate

TLDR

A self-hosted web app for organizing a local video and image collection, scan folders, tag content, and browse everything through a web browser on your own server.

Mindmap

mindmap
  root((stash))
    What it does
      Media folder scanning
      Tag and browse
      Metadata scraping
      Multi-language UI
    Tech Stack
      Go
      Docker
      FFmpeg
      GraphQL
    Use Cases
      Local media library
      Performer tagging
      Home server access
    Audience
      Personal media collectors
      Home server users
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Scan a large local video folder and build a searchable, tagged library you can browse in any browser.

USE CASE 2

Automatically pull performer names, descriptions, and cover images from StashDB and community scrapers.

USE CASE 3

Run Stash in Docker on a home server so multiple devices can access the library over your local network.

USE CASE 4

Install community-contributed scrapers from within the app to pull metadata from additional websites.

Tech stack

GoDockerFFmpegGraphQL

Getting it running

Difficulty · moderate Time to first run · 30min

Requires FFmpeg for video processing, available as a pre-built download or Docker image with automatic FFmpeg download.

License type not specified in the explanation.

In plain English

Stash is a self-hosted web application written in Go that helps you organize and browse a local video and image collection. You run it on your own computer or server, and then access it through a web browser at a local address. The project describes itself as a media organizer for adult content, though the underlying software works with any video or image files. The core workflow starts with pointing Stash at your media folders. It scans those directories and builds a searchable database of everything it finds. From there you can tag content, browse by performer, studio, or tag, and see statistics about your collection. The interface runs in the browser and does not require any external accounts or cloud services. To enrich your library with metadata such as performer names, descriptions, and cover images, Stash connects to several community-run databases. The main one is StashDB, a crowd-sourced repository of scene and studio information maintained by the Stash team. Community-contributed scrapers can also pull data from a wide range of other websites. These scrapers are installable directly from within the app. Stash is available as pre-built downloads for Windows, macOS, and Linux, and as a Docker image. It requires FFmpeg for video processing, which it can download automatically if you do not already have it. The app is available in 32 languages through a community translation effort. The project is open-source and funded through GitHub Sponsors and Open Collective. Documentation lives at a separate site and covers installation, setup, and the scraping workflow in more detail than the README alone.

Copy-paste prompts

Prompt 1
I just set up Stash and it finished scanning my media folder. How do I connect to StashDB and run a metadata scrape to get performer info and cover images?
Prompt 2
How do I install a custom community scraper in Stash and use it to scrape metadata for a specific website?
Prompt 3
Give me a docker-compose.yml example for running Stash on a home server with persistent storage and FFmpeg support.
Prompt 4
How do I organize my Stash library using performers, studios, and tags, and then filter by multiple criteria at once?
Prompt 5
Stash is available in 32 languages, how do I change the interface language in the settings?
Open on GitHub → Explain another repo

← stashapp on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.