PixlStash 1.8

A justified grid layout

PixlStash 1.8 adds a justified grid. Thumbnails keep their own aspect ratio and each row is filled to the full width of the grid, instead of every picture being cropped to a square. A single thumbnail-size control, from Tiny to Huge, replaces the columns slider and sets the size in both layouts. The square grid is still available.

  • A justified thumbnail layout, and one Tiny to Huge size control in place of the columns slider
  • Imports stream to the server and finish in the background, so closing the tab does not cancel them
  • Delete forever in the Scrapheap now removes the files from disk, behind a preview and a type-to-confirm dialog
  • An Agreement chart in the stats panel plots your star ratings against the Smart Score
  • Every API route goes through one deny-by-default authorization gate
The PixlStash justified grid, with thumbnails at their own aspect ratios filling each row to the full grid width

The justified grid while scrolling

Rows are filled to the grid width at every scroll position, and the date pill shows the date range of the pictures currently on screen. Selection, rating, and keyboard navigation work the same as in the square grid.

The PixlStash Appearance settings with a Square and Justified thumbnail layout picker

Choosing the layout

The layout is set in Settings under Appearance. The same pane sets the sidebar thumbnail size and switches the sidebar between full width and a narrow icon dock. The grid thumbnail size is in the toolbar, next to the sort and filter controls.

Scrapheap delete and auto-empty

Delete forever in the Scrapheap now removes the files from disk. It lists what will be deleted and asks you to type to confirm. Auto-empty is off by default: nothing is removed on a timer until you set a retention window of 30, 60, 90, or 120 days in Settings. Installs upgrading from 1.7 stay off until you set one. Originals in reference folders are never auto-purged.

Background imports

Imports stream to the server and complete there. Closing the tab or navigating away does not cancel them. A running import appears in the task manager with progress, and can be aborted from there.

Agreement chart

The stats panel has a new chart that plots your star ratings against the Smart Score. Cells off the diagonal are pictures where the two differ: rated high and scored low, or the reverse. Clicking a cell opens those pictures in the grid.

Smart Scores are recomputed on upgrade

The whole library is re-scored in the background the first time you open 1.8, so the grid may re-order compared to 1.7. Two things changed. The built-in reference points used to score a library with few ratings of its own had stopped loading and now load again, so if you have rated only a handful of pictures your scores will change more than most. The scoring weights are also rebalanced so the top of the 1 to 5 range is reachable. The recompute runs in small batches and does not re-run any AI models. Originals and snapshots are not modified.

One authorization gate for the API

Every API route now goes through a single deny-by-default authorization gate that enforces object access from a declared policy. A route with no declared policy is refused rather than served, so a share link or API token can only reach what it was granted. This release also fixes snapshot restore hard-deleting files that were added after the snapshot was taken, and stops deletions removing pictures in locked sets.

Get PixlStash 1.8

Download the desktop app for Windows, macOS, or Linux. Or keep using pip, Docker, or the source build.

Previous release: PixlStash 1.7
PixlStash 1.7

Fix your tags, one clear decision at a time

PixlStash 1.7 adds a tag review queue. It finds the tags most likely to be wrong or missing in your library and walks you through them picture by picture. Each card shows why the picture was flagged and asks one question: should this picture have the tag or not. Answer with a click or a single key, and the tagger learns from your decisions.

  • A ranked queue of the tags most worth reviewing, with estimated wrong and missing counts per tag
  • Lockable picture sets: freeze a set as a read-only eval or training set
  • Object detection that draws labelled boxes and exports them as COCO or Ideogram JSON
  • A smarter, calibrated Smart Score with new checks for compression artifacts, noise, and watermarks
  • A refreshed visual design across the whole app
PixlStash 1.7 tag review card asking whether a picture should have a tag, with similar images shown for context

See which tags need attention

The tag health view ranks every tag in your library by how much a review is likely to fix. It estimates how many pictures have the tag wrongly, how many are missing it, and where the tagger disagrees with your past decisions. Start a review straight from the row, and filter by project, set, or character to keep the session focused.

Tag health table ranking tags by review priority with estimated wrong and missing counts
Sidebar context menu locking a picture set in PixlStash

Lock a set when it is done

Lock a picture set to freeze its pictures' tags, descriptions, and scores. Locked sets are read-only until you unlock them, and a lock badge shows wherever the pictures appear. Useful for eval sets and training data that must not drift after you have curated them.

Object detection in PixlStash drawing labelled bounding boxes around a camera, a car, and starfish

Find the objects in your pictures

A new Segment action detects objects and draws labelled boxes in the grid and the picture view. Export the boxes as COCO or Ideogram JSON to use them in your own training and annotation pipelines.

A cleaner look across the app

The whole app has been restyled on a design token system, with consistent type, colour, spacing, and icons. Dialogs, menus, and settings follow one visual language, in both light and dark themes.

The refreshed PixlStash settings dialog in the new visual design

A Smart Score you can trust more

Smart Score is now calibrated and precision aware. It weighs each defect tag by how confident the tagger is, groups related defects so correlated flaws do not count twice, and adds three new full-image checks for compression blockiness, noise, and watermarks. Your whole library is re-scored in the background the first time you open 1.7, so the grid may re-order compared to 1.6. That is expected. Your originals and snapshots are untouched.

Previous release: PixlStash 1.6
PixlStash 1.6

PixlStash comes to the desktop

PixlStash 1.6 introduces the PixlStash Desktop app for Windows, macOS, and Linux: one download that wraps the local server in a native window. It runs offline out of the box and opens straight into your library. No terminal, no Docker, no login screen.

Already running PixlStash from pip, Docker, or the Windows installer? The desktop app picks up your existing library, so nothing moves and nothing is lost.

  • A native app for Windows, macOS (Apple Silicon), and Linux: one download, simple install.
  • Runs offline out of the box and opens straight into your library, no login
  • GPU acceleration added on demand. NVIDIA CUDA and experimental AMD ROCm
  • Lives in the system tray and keeps serving in the background when you close the window
  • Optional remote access so other devices on your network can open your library
  • Don't worry: PixlStash server isn't going anywhere. It remains and will remain a clear focus.
PixlStash 1.6: the desktop app showing the library grid in a native window

Match the speed to your hardware

The app ships with a built-in runtime that works on any machine: CPU on Windows and Linux, and Apple Silicon GPU acceleration (Metal) on macOS out of the box. On Windows and Linux, if you have a discrete GPU, add acceleration on demand from the Backend settings and choose from NVIDIA CUDA or experimental AMD ROCm libraries download straight from PyPI into a private overlay, and the bundled runtime is never touched. The same panel turns on optional remote access so other devices on your network can open the library in a browser in the same way as PixlStash server.

PixlStash desktop Backend settings: compute acceleration and remote access

Runs offline, lives in your tray

Everything is local. The bundled runtime means the app works with no internet connection, and it opens directly into your library with no login prompt because it talks to its own private local server. Close the window and PixlStash keeps running in the system tray, so your library, and any remote access you enabled, stays a click away. The pip, Docker, and source installs are all still fully supported; the desktop app is simply the easiest way to run PixlStash on your own machine.

Previous release: PixlStash 1.5
PixlStash 1.5

Snapshots and restore with a full API

PixlStash 1.5 puts a safety net under all your organising work. Automatic, compressed snapshots capture your library's metadata: tags, scores, faces, descriptions, and how everything is organised, so any mistake is a few clicks from undone. Roll all your metadata back, or restore just the pictures you select.

(Your image files are never touched.)

  • Automatic daily / weekly / monthly snapshots, compressed with zstd
  • Full metadata restore with an automatic safety snapshot
  • Selective restore of just the pictures you choose
  • Breadcrumb navigation and drag characters & sets between projects
  • A clean snapshot & restore REST API
PixlStash 1.5: snapshots panel with daily, weekly, and monthly restore points

Restore only what you choose

A full restore rolls all your metadata back to a point in time, but you don't always want that. Select any pictures and restore just their metadata from a snapshot, leaving everything else exactly as it is.

Selective restore previewing exactly which selected pictures will change
Breadcrumb navigation showing the path to the current view in PixlStash

Find your way with breadcrumbs

A breadcrumb trail above the grid always shows where you are: project, character, or set. This allows you to jump back up the hierarchy with a single click. No more guessing how you reached a view or navigating back from scratch.

Dragging a character onto a different project in the PixlStash sidebar

Drag characters & sets between projects

Reorganise on the fly: grab a character or picture set in the sidebar and drop it onto another project. Their pictures are re-assigned for you. The move is reference-aware, so a picture that still belongs elsewhere stays put. Reshaping large libraries is now a drag away.

Snapshots without the disk bill or the wait

A snapshot copies only your metadata database, never the image files, which would be wildly impractical to duplicate over and over. That database is compressed with zstd for roughly a 3× saving, yet still keeps the expensive parts, CLIP embeddings and face data, so a restore comes back fully populated with no re-tagging or re-embedding pass afterwards. Retention follows a true grandfather-father-son policy: the most recent 7 daily, 4 weekly, and 12 monthly snapshots are kept and the oldest are pruned for you.

The snapshot & restore API

Everything the snapshots panel does is a plain REST call, so you can script metadata snapshots and restores straight into your own pipelines. Authenticate with an owner token and talk to the endpoints under /api/v1.

Every request carries an owner token: Authorization: Bearer <token>
GET /snapshots

List every restore point, newest first.

Request
curl -H "Authorization: Bearer $TOKEN" \
     https://your-server/api/v1/snapshots
Response
[
  {
    "id": 42,
    "kind": "DAILY",
    "label": null,
    "created_at": "2026-05-31T06:42:37Z",
    "picture_count": 1030,
    "byte_size": 4523754,
    "is_compatible": true
  }
]
POST /snapshots

Take a manual snapshot right now, optionally labelled.

Request
curl -X POST https://your-server/api/v1/snapshots \
     -H "Authorization: Bearer $TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"label": "before big cleanup"}'
Response
{ "id": 51, "kind": "MANUAL", "label": "before big cleanup", "picture_count": 1030 }
GET /snapshots/{id}/restore/preview

Dry-run a full restore. It counts only what actually changes.

Response
{
  "summary": {
    "pictures_to_revert": 12,
    "pictures_to_recreate": 3,
    "pictures_to_delete": 1,
    "pictures_unchanged": 1014,
    "missing_files": 0
  },
  "warnings": []
}
POST /snapshots/{id}/restore

Restore all metadata to this snapshot. A safety snapshot is taken first.

Request
curl -X POST https://your-server/api/v1/snapshots/42/restore \
     -H "Authorization: Bearer $TOKEN"
Response
{ "snapshot_id": 42, "resource_type": "full", "missing_files_count": 0, "errors": [] }
POST /snapshots/{id}/restore/batch

Selective restore. Bring back only the resources you list.

Request: curl
curl -X POST https://your-server/api/v1/snapshots/42/restore/batch \
     -H "Authorization: Bearer $TOKEN" \
     -H "Content-Type: application/json" \
     -d '{"resources": [{"type": "picture", "id": 8123},
                        {"type": "picture", "id": 8124}]}'
Request: Python
# pip install requests
import requests

r = requests.post(
    "https://your-server/api/v1/snapshots/42/restore/batch",
    headers={"Authorization": f"Bearer {token}"},
    json={"resources": [{"type": "picture", "id": 8123}]},
)
print(r.json())  # {'snapshot_id': 42, 'upserted_count': 1, 'errors': []}
Response
{ "snapshot_id": 42, "upserted_count": 2, "errors": [] }
Previous release: PixlStash 1.4
PixlStash 1.4

Search by picture, face, and meaning

PixlStash 1.4 adds powerful new ways to find pictures. Reverse image search is now a right-click away in the grid and with a full API, wired straight into your generation workflows with the new ComfyUI-PixlStash nodes.

PixlStash 1.4: context menu with reverse image search and find similar faces

Search from any ComfyUI workflow

The ComfyUI-PixlStash nodes expose PixlStash search inside ComfyUI. Drop in a reference image and the PixlStash Likeness Search node returns the closest matches from your library. Switch between face_search and picture_likeness modes to match on a person or on an overall picture. Store the pictures straight back into your library with the Picture Saver node.

ComfyUI graph using the PixlStash Likeness Search node in face search mode
ComfyUI graph using the PixlStash Semantic Search node with a text query

Semantic search by description

Describe what you're looking for in plain language: "man searching for photos" and the PixlStash Semantic Search node returns matching pictures ranked by relevance, with a similarity threshold and result limit you control.

ComfyUI graph batching multiple references into a single PixlStash likeness search

Combine several concepts

Batch multiple characters, sets, and individual pictures into a single likeness search and combine them with mean or min. Surface the pictures closest to all of your inputs at once, not just one. Old man drinking beer by a river? No problem!

Even faster grid loading

The grid keeps getting quicker. 1.4 builds on the 1.3 loading overhaul with further optimisations, so even very large libraries feel more responsive as you scroll, filter, and search.

Previous release: PixlStash 1.3
PixlStash 1.3

Snappy grid, smarter tagging

The image grid now loads visually very quickly and fills in details asynchronously. Even at 30 000+ images it feels snappy. Plus full JoyCaption support, selectable tag and description engines, and a URL that remembers where you were.

  • Dramatically faster grid: visual content appears immediately
  • JoyCaption support for tagging and image descriptions
  • Choose your tag or description engine per-request
  • Persistent view URLs: refresh and stay exactly where you were
  • Drag tags to accept or reject them in the tag panel
PixlStash 1.3: tagger and description engine settings
Tagger and description plugin settings in PixlStash 1.3

Selectable tagger & description engines

The settings page now lets you choose which plugin handles automatic tagging and which generates image descriptions. Each engine has its own parameter controls, so you can tweak precision, prompt style, and thresholds without leaving the settings panel.

Browser URL bar showing a persistent PixlStash view URL

Persistent view URLs

Every view, whether grid, character, picture set, or project, has its own URL. Bookmark it, share it with a teammate, or simply refresh and land exactly where you left off. No more navigating back from scratch after an accidental reload.

One-click tagging & descriptions

Right-click any image (or use the selection toolbar) to re-tag or regenerate a description using the engine of your choice. A hover submenu lists every available model so you can pick the right one for the job without touching the settings page.

Context menu with Tag automatically and Generate description submenus

Snappy grid loading

The image grid renders the visual content immediately and fills in metadata such as scores, tags, and faces asynchronously in the background. The result is a dramatically snappier feel: thumbnails appear before the first server response has even finished, and the grid stays responsive while data loads in. This is the single biggest day-to-day improvement in 1.3.

Previous release: PixlStash 1.2
PixlStash 1.2

A whole new look, and picture sharing

The biggest visual overhaul since launch: a redesigned sidebar, new toolbar, and context menus throughout. Plus, share pictures, sets, characters and projects with a single link.

  • Share pictures and collections with read-only links
  • Redesigned sidebar and toolbar
  • Context menus across the grid and sidebar
  • Faster background processing: tagging & face extraction
PixlStash 1.2: redesigned sidebar and toolbar

Picture Sharing

Share individual pictures, sets, characters, and projects with anyone using a read-only link. No account is required for viewers. Tokens are scoped, revocable, and never expose your full library. Ideal for sharing work-in-progress with clients or collaborators. Optionally add your own watermarks to shared pictures for branding.

Sharing dialog in PixlStash showing a generated share link
Shared picture view as seen by a recipient

Recipient view

Recipients see a clean, read-only view of exactly what you shared. No login, no noise, just the content you chose to share.

New PixlStash toolbar design

New Toolbar

The toolbar has been redesigned for clarity. Search, filters, and sort controls are better organised, and the new layout scales more naturally on smaller screens.

Context menu in the PixlStash image grid

Context Menus

Right-click anywhere in the grid or sidebar to access actions for the item under the cursor. Rate, tag, assign, move, share, or delete without leaving your current view.

Coloured icon picker for picture sets in PixlStash

Custom Icons for Sets

Give each picture set its own coloured icon instead of relying on the automatic thumbnail. Instantly recognise your sets at a glance, no matter how similar the contents look.

Redesigned PixlStash sidebar

Redesigned Sidebar

People, sets, projects, and folders are easier to navigate. The new sidebar is more compact, loads faster, and shows more at a glance.

Task manager in the statistics sidebar showing processing throughput

Faster Background Processing

Tagging and face extraction are significantly faster thanks to bulk database operations and smarter grid update scheduling. Watch real-time throughput in the statistics sidebar task manager.

Security Vulnerability Notifications

PixlStash now checks for known security issues in the ChangeLog and alerts you directly in the UI when a fix is available along with the security level and affected versions. Stay informed and keep your installation secure with ease.

Previous release: PixlStash 1.1
PixlStash 1.1

More control over your image folders

This release adds reference folder support, letting you keep your existing folder structure while still benefiting from PixlStash's powerful organisation and metadata features.

  • Reference folders and import folders managed within the UI
  • Context menus in image grid and main sidebar
  • Statistics sidebar for rapid overview
PixlStash screenshot with reference folders, context menu, and statistics sidebar
Tag distribution and confidence statistics sidebar in PixlStash

Tag Statistics

Get useful statistics about your picture sets. See tag distribution and tag prediction confidence. A powerful way to understand your training sets.

Picture statistics including image size and score distribution

Picture Statistics

See statistics about your pictures including size distribution and score distribution. Filter image views by clicking on elements in the sidebar. Quickly find outliers to review or delete.

Boolean Set Operations for People & Sets

Hold Ctrl and click names in the People or Sets sidebar to build a multi-selection, then choose how to combine them using the toolbar at the bottom of the grid. Union shows all pictures from any selected person or set. Overlap finds pictures where every selected person appears together. Difference subtracts one set from another, useful for finding pictures unique to a base set. Unique (XOR) returns pictures that belong to exactly one of the selections, letting you quickly spot what each person or set contributes exclusively.

Multi-select with Overlap mode showing pictures containing both selected people