Programming language: Python
License: MIT License
Tags: Photo and Video Galleries    
Latest version: v1.0.9

Fussel alternatives and similar software solutions

Based on the "Photo and Video Galleries" category.
Alternatively, view Fussel alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of Fussel or a related project?

Add another 'Photo and Video Galleries' Software solution



License Badge Version Badge

Fussel is a static photo gallery generator. It can build a simple static photo gallery site with nothing but a directory full of photos.

Features and Properties:

  • Absolutely no server-side code to worry about once deployed
  • Builds special "Person" gallery for people found in XMP face tags.
  • Adds watermarks
  • Mobile friendly
  • Automatic dark-mode


Albums Screenshot Album Screenshot
People Screenshot Person Screenshot


Demo Gif



  • Python 3
  • Node + Yarn

Install dependencies

Site Generator

  • pip install -r requirements.txt

Node Frontend

  • cd web
  • yarn install
  • cd ../

Setup Site


  • Copy .env.example to .env
  • Edit .env to your needs (minimal change is to set INPUT_PATH)

Curate photos

The folder you point INPUT_PATH at, must have albums in subfolders inside it with the folder names as the name of the albums you want in the gallery. Any further-nested folders will be ignored.


If you have your .env setup with: INPUT_PATH = /home/user/Photos/gallery

Then that path should look like this:

  - Album 1
  - Album 2
  - Album 3
  - ...

Generate your site

Run the following script to generate your site into web/build folder.

  • ./generate_site.sh

Host your site

Point your web server at web/build or copy/upload the web/build folder to your web host HTTP root.

Quick setup

After running generate_site.sh

  • python -m http.server --directory web/build (go to localhost:8000 in browser)

Development setup

  • cd web
  • yarn start


If you don't want to fuss with anything and would like to use docker instead to generate your site...



  • /my-input-folder is the absolute path to top-level photo folder
  • /my-output-folder is the absolute path to where you want the generated site written to

Note: The two -e env variables PGID and PUID tells the container what to set the output folder permissions to once done. Otherwise it is set to root permissions

docker run \
    -e PGID=$(id -g) \
    -e PUID=$(id -u) \
    -v /my-input-folder:/input:ro \
    -v /my-output-folder:/fussel/web/build \

Optional: You can provide any value found in the .env.sample file in a docker env variable using -e MYVAR=THING

docker run \
    -e PGID=$(id -g) \
    -e PUID=$(id -u) \
    -v /my-input-folder:/input:ro \
    -v /my-output-folder:/fussel/web/build \
    -e HTTP_ROOT=/my/alternate/path \
    -e WATERMARK_ENABLE=false \

Once complete you can upload the output folder to your webserver, or see what it looks like with python -m http.server --directory /my-output-folder

*Note that all licence references and agreements mentioned in the Fussel README section above are relevant to that project's source code only.