Tutorials

Spoolman without the server: what to use if you don't want to self-host

October 10, 2026 · Kartzy Studio · 1 min read

Spoolman without the server: what to use if you don't want to self-host
Spoolman is free and good. It also needs a machine that stays on. Here's who should keep it, where it stops, and how to bring your spools with you.

⚡

The short version

  • If you like running your own server, keep Spoolman. It's free, open source, and its printer integrations are excellent, especially with Klipper.
  • If you don't want to keep a box running, you need something hosted. That's the whole reason this page exists.
  • Spoolman tracks grams. It doesn't tell you what a finished item cost. The sellers I talked to keep that in a spreadsheet next to it.
  • Your data isn't stuck. A Spoolman export imports directly.

What Spoolman does well

I'm going to be fair here, because it earned it.
  • It has a real API, and other tools build on it.
  • Your data stays on your own machine.
It's a good tool. It's clean, and it keeps track of your spools well. The trouble starts when you're away from home: you're at a supplier's sale wondering whether you already own that color, and the old laptop that runs Spoolman is sitting in the basement.

Who should keep using it

  • You already run a home server or a Pi and you enjoy it.
  • Your printers run Klipper and the automatic deduction already works for you.
  • You're one person and nobody else needs to log in.
If that's you, you don't need me.

Where it stops

It has to live somewhere. Spoolman is software you install and keep running. If that machine is off, or you're away from your network without a VPN, you can't check what's on the shelf.
There are no user accounts. Spoolman's own security page says it has no authentication: anyone who can reach it on your network can read and change your whole inventory. That's a deliberate choice for a tool meant to sit on a trusted home network. It also means you can't give a helper their own login, and if you want to reach it from outside, the docs tell you to put it behind a reverse proxy with its own login, never to open a port straight to it.
It knows grams, not money. An operator running ten Klipper printers on Spoolman told me where his costs live:
"I use a dedicated spreadsheet with a formula that factors in Amortization, Electricity, Filament, Materials, Labor, failure rate (10%), and Markup."
That's a real gap. The filament is tracked in one place, the cost is worked out in another, and nothing joins them.

What I built instead

I run a print farm and I built the tool I wanted. It's hosted, so there's nothing to install, and it works on a phone next to the printer.
  • Every spool tracked, with QR labels and a location down to the shelf.
  • Log a print and the filament comes off the loaded spools.
  • Each logged print shows what it cost: filament, electricity, machine wear, labour.
What it doesn't do: it's not open source, and you can't self-host it. It doesn't talk to your printers yet, so for now you log a print yourself instead of Klipper deducting it for you. And you can't change the QR label layout yet.

Bringing your Spoolman data over

It takes four steps, and it works with any spreadsheet of spools, not only Spoolman's. A Spoolman export is recognized and its columns are matched for you; with any other file you match the columns by hand.

First, get the CSV out of Spoolman

Spoolman exports through its API, so it's one command. You only need the spools export: Spoolman puts each spool's filament and brand in the same file.
Run this on the computer Spoolman runs on. If you're on a different device, replace localhost with the address you open Spoolman at, for example 192.168.1.50. 7912 is Spoolman's default port; use yours if you changed it.
Mac or Linux (Terminal):
curl -o spools.csv "http://localhost:7912/api/v1/export/spools?fmt=csv"
Windows (PowerShell or Command Prompt):
curl.exe -o spools.csv "http://localhost:7912/api/v1/export/spools?fmt=csv"
On Windows, type curl.exe, not curl: in PowerShell, plain curl runs a different command. Either way, you'll find spools.csv in the folder the terminal was open in.
Archived spools are left out by default. To include them, add &allow_archived=true to the end of the address, inside the quotes.
No terminal? Paste the same address into your browser on a device on your home network. The browser downloads spools.csv for you.

Then, import it

You'll find the import under Filament → Import spools.
The Import spools button on the filament page
The Import spools button on the filament page
 
1. File. Drag and drop your CSV. Nothing is uploaded yet: the file is read in your browser, and nothing is written to your inventory until the last screen.
Step 1: drop a Spoolman export or any spreadsheet of spools
Step 1: drop a Spoolman export or any spreadsheet of spools
Name where the spools came from, for example "Spoolman". Every import is filed under its source, so a spool ID from Spoolman can't clash with one from another file, and importing the same file again skips the spools you already have.
Naming the import source
Naming the import source
2. Columns. Check the matches and map any column the import couldn't match on its own. A preview on the right shows exactly how a row will come in.
Step 2: the columns of a Spoolman export, matched automatically, with a preview of one row
Step 2: the columns of a Spoolman export, matched automatically, with a preview of one row
 
3. Rows. Check each spool. Untick any you don't want, add empty-reel weights the file doesn't have, and answer the color questions when a color could match more than one catalog entry. Anything you skip comes in as a custom filament.
Step 3: checking each row, setting empty-reel weights and answering color questions
Step 3: checking each row, setting empty-reel weights and answering color questions
 
4. Confirm. Check the totals (spools, kilograms and value) and import.
Step 4: the summary before importing, with spools, kilograms and value
Step 4: the summary before importing, with spools, kilograms and value
 
Reels, locations and custom filaments come across with the spools. A row that can't be imported isn't dropped silently: it's listed, and you can download it with the reason, fix it and import it again. In my test, 20 rows became 19 spools, and the one left out needed a fix in the file.
Import complete: 19 spools imported, one row listed for a fix
Import complete: 19 spools imported, one row listed for a fix
 
The filament page after the import
The filament page after the import
From a Spoolman export, the whole thing took me under five minutes.
 

We're building software for people who sell 3D prints. Join the waitlist and you'll be first in.
The cost calculator is live and free, no signup.
K

Written by

Kartzy Studio

Related posts