XYZ cube · 20 mm

A media library for 3D printing

Find the model you already own.

You have gigabytes of STLs and no idea what is in them. STLibrarian scans the pile, renders every model, groups the parts that belong together, and remembers what you printed.

Free. Runs on your own machine · no account, no server, nothing to sign up for

Test gear · 12 teeth

The problem

A folder is not a library

I know I bought this one. Search, by name or tag
Which of these four files is the body? Parts grouped as one model
Have I printed this before? Print history, per model
Why is this drive full? Duplicates, found by content

What it does

Point it at a folder. It does the rest.

Nothing is moved, renamed or deleted. Scanning reads your files and writes only to its own database, so your folders stay exactly as you left them.

Previews

Every model, rendered

Drawn on the machine holding the library, with no GPU and no browser needed. A three million triangle mini takes about two and a half seconds, at full detail.

Measurements

Will it fit? What will it cost?

Bounding box, triangle count and enclosed volume. Volume becomes grams of resin, and if the mesh has holes it says so instead of quoting a number it invented.

Structure

Packages, tags, collections

Four files that are one dragon become one model. Supported and unsupported copies are recognised as the same thing. It proposes; you decide.

Print records

What you actually made

Printer, material, settings, outcome. Failures included, because how many attempts it took is the interesting part.

Sliced files

Print it again, exactly

Save your slicer's output beside the model. Layer height, time and material are read from it, and a print record points at the file that ran.

Your slicer

One click to Lychee or Prusa

Open any model in whatever handles it on your machine, including when the library lives on a NAS across the room.

What it looks like

Three panes, no menus to learn

What you own down the left, the models in the middle, and everything known about one of them on the right. Nothing below is a mockup: it is the application, rendering its own measurements of real meshes.

The library view: a grid of fourteen models, each with a rendered grey preview, its file size, triangle count and colour-coded tags. The left rail holds the folder to scan, a Packages panel proposing sets of files that look like one model, and collections with their counts.
Every model, rendered Previews are drawn from the mesh by the machine holding the library, so a folder you have never opened arrives already looking like something. Files that belong together are proposed as one model; you decide.
A spur gear selected and shown large in the viewer, with Solid, Wire and Points buttons beneath it. The details panel reads 768 triangles, bounds of 44 by 43.8 by 10 millimetres, a volume of 10.6 cubic centimetres, about 11.7 grams of resin, fits a 220 millimetre bed, printed once, mesh closed.
Measured, not guessed Bounding box, triangle count and enclosed volume, turned into grams of resin and a straight answer about whether it fits your bed. A mesh with holes says so instead of quoting a number it invented.
The print history for a knurled knob: two runs listed, one on a Prusa MK4 in PETG at 0.16 millimetres with four walls, one on a Bambu Lab P1S at 0.12 millimetres with five walls, each with a note about how it went.
What you actually made Printer, material, settings and outcome, per run. Two goes at the same knob on two machines, and the note that tells you which one to use next time. Failures are kept, because how many attempts it took is the interesting part.

Shown running as the shared server, which is why there is a sign-out button — the desktop app is the same front end, built from the same source. The library in the shots is a generated sample, so nobody else's models are on display.

Two ways to run it

Your bench, or the whole shop

Desktop

One person, one disk

  • Reads your folders and never writes to them
  • Drag a folder onto the window to add it
  • Opens models in your slicer
  • No server, no account, nothing to administer

FreeMac, Windows and Linux

Server · in testing

A shared library on the NAS

  • Everything above, in a browser, for everyone
  • Accounts and roles; prints record who ran them
  • Collections shared with the shop, or kept to yourself
  • The only part allowed to rearrange files, and it shows you every move before it makes one
  • Point the desktop app at it and still open files in your local slicer

Free while testingA one-time $19.99 for forever updates when it ships

Download

One app, on your machine

It reads the folders you already have and writes nothing to them. No server, no account, nothing to administer. Open it, point it at your models, done.

Free, and free to keep. No account, no telemetry.

What happens on first run

All three buttons open the same releases page, where you pick the file for your machine. Filenames carry the version number, so there is no fixed link to a particular installer that would keep working from one release to the next.

macOS. These builds are not notarized yet, so the first launch needs a right click and Open instead of a double click. After that it opens normally.

Windows. Unsigned, so SmartScreen will warn: More info, then Run anyway. An OV certificate would not silence that warning, and the EV kind earns its reputation over time rather than buying it, so there is nothing to buy that would help yet.

Linux. The AppImage has to be made executable before it will start: chmod +x it and run it. The .deb and .rpm need no such thing.

Docs

Your library is one file. Back that up.

Everything you tell STLibrarian lives in a single SQLite file: tags, packages, collections, print history, every correction you made by hand. Your models stay where you keep them and are never copied into it.

Where the library keeps itself. The app shows you this path, with a button to reveal it, under Backup.
PlatformFolder
macOS~/Library/Application Support/STLibrarian/
Linux~/.local/share/STLibrarian/
Windows%APPDATA%\STLibrarian\
AnywhereSTLIBRARIAN_DATA_DIR overrides all of the above
Back up

Copy stl.db

That is the whole library. The thumbnails/ folder beside it is drawn from your models and rebuilds itself, so skipping it costs nothing but time.

Do it safely

Close the app first

Or copy stl.db-wal and stl.db-shm with it. Those hold writes not yet folded into the main file, and a copy without them can be a moment stale.

Restore

Put it back and open it

If your models ended up somewhere else, the library will say so rather than looking empty, and it can go and find them.

When your models move

A restore onto a different machine, a library moved to a bigger disk, a share remounted somewhere else: every stored path is wrong at once. Nothing is deleted for being missing, because an unplugged drive must not empty your library. Instead Missing files appears in the sidebar.

Point it at wherever the models are now and it matches them by content, so renames and reorganised folders make no difference. It only opens files whose size already matches something missing, so it is not re-reading your whole collection to find a few strays.

For what searching cannot reach, such as a model re-exported at a different resolution or a mesh you repaired, Locate points one model at one file by hand. The entry is then re-measured from that file, so its triangle count and volume describe what is actually there.

Optional

Running it for a workshop

Sharing one collection between several people? The same library runs on a NAS and serves everyone a browser. In testing, and free while it is.

# Build the web front end, then start the server
yarn install && yarn build
cd src-tauri
cargo run --release --no-default-features \
  --features server --bin stlibrarian-server

# An administrator password is printed once, on first start.
# Then open http://your-nas:3000