Spool Studio

From order confirmation to organised spools

A good first setup.

Import what you own, check the details, then prepare tags for your printer. No extra approval boxes here—come back whenever you need a reminder.

Importing: start with the clearest source

Several order emails? Copy our ChatGPT prompt to make an Excel-friendly CSV, then review and import the file. A blank template is available too.

For a small order: paste the product text from your email. It avoids image-recognition mistakes. This works with copied text from any email provider; the app does not connect to or scan your inbox.

  1. Keep the useful details. Include the brand, exact shade name, material, finish, number of rolls, weight per roll and whether it is a refill or supplied on a spool. Remove delivery addresses and unrelated email content. Keep per-roll prices and purchase references if you want to import costs.
  2. Separate each product. Start each item with its brand and material. Put the shade and quantity on the following lines if that is clearer. Use “Quantity: 2” for two individual rolls; check pack quantities carefully.
  3. Find and review. Choose Find filament entries, review the detected table and its library checks. Open Review on a row to correct details or inspect similar saved purchases; select the entries you actually own, then approve and choose Add selected entries. Nothing is saved just by reading a source.

Example you can select and copy

SUNLU PLA Matte
Colour: Orange
1 kg refill
Quantity: 2

Bambu Lab PLA Basic
Colour: Jade White
1 kg with spool
Quantity: 1

Replace these example details with your own stock. For an unrecognised brand, use Add a blank entry and fill in the fields yourself.

For screenshots and spool-label photos

Check these before saving

Up to 500 candidate entries and 60,000 text characters per batch. Source images and text stay on your device; approved fields and a duplicate-check fingerprint sync to your account. Privacy details.

Open importer

Phone & printer prerequisites

What you need

  • An NFC-capable Android phone, NFC switched on, and Chrome. Open Spool Studio over HTTPS or use its installed Android app. Allow the site’s NFC permission and keep the phone unlocked with the app in the foreground.
  • Writable NTAG215 or NTAG216 stickers for this workflow. Do not substitute MIFARE Classic, a locked tag or a factory Bambu tag. An “NFC” label alone does not identify the chip.
  • A Snapmaker U1 running paxx12 extended firmware with OpenSpool support. Stock firmware is not the target for these custom tags.

You program tags in Spool Studio → Program filament. SpoolPainter and NFC Tools are not required for normal writing. Installing the PWA does not add Web NFC support to iPhone or desktop browsers.

Set up the printer once

  1. With the printer idle, enable Settings → Maintenance → Advanced Mode on its touchscreen and restart if you have just enabled it.
  2. On the same local network, open http://<printer-ip>/firmware-config/ in a browser, replacing the placeholder with your printer’s IP. This is the printer’s web page—not Spool Studio’s settings.
  3. Under Snapmaker Components, find Filament Detection (called RFID Detection System in some documentation). For this guide’s built-in reader/OpenSpool setup, use Snapmaker. Changes can restart printer services; never change this during a print.

OpenSpool is the tag format; OpenRFID is an alternative reader system. Paxx’s Snapmaker mode reads OpenSpool, so OpenRFID is not a prerequisite. External mode disables the built-in readers. If another reader setup already works, do not change it just to follow this guide.

Menu labels vary by firmware version. If the setting is absent, check your installed build against the maintainer’s instructions rather than looking for an invented “prioritise tag” switch. Sources checked 9 September 2026: Paxx configuration, reader compatibility and OpenSpool tag format. Follow the maintainer’s installation guide if firmware installation is needed; this app does not install it.

From desktop model to phone

  1. Load your 3MF in Match a print. Check which saved colour slots the print actually needs, review the material/finish and choose Use filament beside your selected library filaments. Colour similarity alone is not proof of an exact filament match.
  2. Open Program filament on your phone with the same Spool Studio account. The latest selected batch syncs to that saved page—no new QR code is needed. If you previously loaded a QR snapshot, choose Live page.
  3. Check the batch once. Tap Write & verify for the chosen colour and hold just one sticker against the phone’s NFC antenna. If asked, lift it and tap it again for a fresh read-back. Continue with Next colour.

Download the model with your chosen filaments

Choose Suggest close stock to fill unchosen slots with close, same-finish matches, or pick Use filament yourself. After every included slot has a choice, select Review & download 3MF. Review the list, then download a new -my-filaments.3mf project. These are the same choices used for NFC.

Painted regions and slot numbers stay intact. Unticked slots stay original; they are not deleted. The source file is untouched and the new file stays on your device. It retains the original metadata, attachments and preview images, so review those before sharing it.

Open the result as a project in your slicer, check your printer and filament profiles, recalculate purge volumes and re-slice. Colours and project-local filament labels change; library records cannot supply calibrated temperatures, flow or speeds, so the source settings remain for review. Thumbnails still show the original colours. Pre-sliced files and embedded filament preset bundles must be re-saved as supported unsliced projects first.

Tags use Generic material · Basic subtype; the original brand and matte/silk finish remain library details, not a calibrated printer profile. Temperature fields are optional in this app. If you use them, copy the real spool’s nozzle range. A verified write checks the tag, not the printer’s detected material or temperature.

Open filament programmer

Where to put the sticker

Test before sticking it down permanently. Start on the flat spool face that points towards the printer, near the centre/hub rather than out on the rim. A near-centre position worked in our U1 trial; it is a starting point, not a guaranteed radius for every spool.

Temporarily secure one sticker, load the spool and check recognition. Adjust its position in small steps if needed, keeping the centre hole and moving parts clear. Do not place it on the filament winding.

For Bambu spools: do not stick your new tag directly over a factory tag. Multiple tags nearby may interfere with the test. First confirm the same custom tag works on a plain cardboard or otherwise untagged spool. That helps separate a placement issue from a writing issue; do not cut into a loaded spool or assume a brand-priority setting is the cure.

If it still does not read

The phone cannot write
Check Android NFC is on, Chrome has permission, the screen is unlocked and the tag is writable. Remove other NFC cards from the phone case and reposition the sticker over the phone’s antenna. Use Check an existing tag to inspect the selected tag’s contents.
The phone verifies, but the U1 says unknown
In the printer’s Filament Manager, try Read spool tags and inspect the correct extruder. A Card UID means a tag was detected, not that the material data was decoded. Recheck detection mode and sticker placement; try the known-good single-tag/cardboard-spool test.
I am not sure what tag I bought
The optional NFC Tools app by wakdev can show the chip type, writability and stored NDEF records in its Read tab. Check for NTAG215/216 rather than relying only on a broad “MIFARE Ultralight” family label.
The colours on my phone are old
Check both devices use the same account. Choose Live page if shown, then Refresh. If a new batch arrives while writing, finish or cancel that operation before loading it.

Still stuck? Contact us with the phone model, firmware version, tag type and a cropped screenshot—no passwords or sign-in codes.

Sort, select and edit together

In Collection or List, choose Sort by for purchase date or added/imported date, newest or oldest first. Grouped cards show the latest or earliest member date respectively. Historical import dates that were never recorded stay unknown and sort last; new entries record when they were added.

Choose Select entries and the app temporarily shows individual purchases instead of combined cards. For the rolls you just scanned, choose Added / imported · newest first, then tick only those entries. Select all results includes all filtered pages. An entry containing several rolls includes every roll in that entry. Changing filters removes selections no longer shown; switching to Colour shelf or Match a print clears them. Finishing selection restores your previous grouping.

Bulk edit changes only filled fields for the reviewed entries. Blank means unchanged. Counts, weights, used marks and permanent IDs stay intact. If the library changes elsewhere, reopen the editor before saving.

Print selected labels opens the size and copy controls for available counted rolls in your selection. Used-up reels and unknown-count bundles are excluded. Printed shelf positions come from the entire available library using the Colour shelf order and size, not your Collection filters or date sort; permanent SP numbers never change. To print positions matching a filtered shelf, use Print shelf labels instead.

Labels for boxes and spools

  1. Open Colour shelf, set your filters and colour order, then choose Print shelf labels.
  2. Choose 60 × 30 mm for a compact label, another preset, or your own dimensions. Shipping labels use 4 × 6 inches (101.6 × 152.4 mm). Match the width and height to the actual label orientation in your printer driver.
  3. Choose one copy or Two · spool + box. The two copies carry the same colour, material and permanent SP number (or position number if IDs are not assigned). Select the first and last shelf positions; test one position before a large batch.
  4. Choose Print labels, select your MUNBYN or other installed printer, and set the same paper size, 100% / actual size, zero margins, and browser headers and footers off. You can also use Save as PDF. The app does not connect directly over USB or Bluetooth; your operating system needs a working driver or print service.

Labels use black text for thermal printers, not colour swatches. Text automatically grows to fit the selected size in both preview and print, while QR codes keep their scan size. If the label appears tiny on a large sheet, match the printer paper size to the app; browser headers and footers must be disabled. Long names must fit without clipping; choose a larger size if the app asks. Up to 500 labels per batch, including copies. Bundles with unknown quantities do not get invented roll positions.

SP numbers are permanent; shelf positions are not. First use More → Physical spools & usage → Assign permanent IDs. Refresh the library before opening labels. QR links require the owner’s login and identify the same reel after reordering. QR printing requires 60 × 30 mm or larger and a permanent ID for every selected reel; smaller text-only labels are supported. Choose Classic for crisp thermal printing or Soft corners for subtly rounded QR modules. Both keep a clear white border and black-on-white contrast; test a printed code on your phone before printing a batch. Bigger labels also get a larger QR code. Location on label can show the shelf position, the saved reel location, a custom batch location (for example Dry box A), or no location. A custom batch location does not edit the library. Open Label details to hide brand, material/finish or weight/packaging; colour and spool number remain visible. Changing filters or sort order may change shelf positions. Refresh the label preview after changing your shelf. Printing does not change the library or reserve stock.

What about remaining filament?

Physical spools can record manual net remaining weight or receive estimates from a linked Spoolman record. The app does not measure consumption directly. Writing an NFC tag identifies filament; it does not measure how much you print.

Spoolman can store remaining weight. Automatic updates also need a supported printer integration to report consumption and map each loaded physical spool to the correct Spoolman record. Installing SpoolmanSync alone does not connect those records to Spool Studio. Until that integration is configured and verified, do not treat roll counts or NFC tags as a measurement of remaining grams.

Quick ways to add filament

Choose Add spools in your library. Nothing is added until you review the form and select Add to library.

The camera reads EAN-8, EAN-13, UPC-A, Code 128, Code 39 and ITF barcodes on-device. UPC-E and QR codes are not supported in this scanner. Camera permission and HTTPS are required; manual entry is always available. Scanning stops on cancel, when closing the form, when backgrounding the app or after 45 seconds.

Barcode and source-link details are saved with the entry. Edit an entry and open Barcode to change or clear its code. These codes identify products, not permanent IDs for each physical spool. They do not report filament consumption.

Permanent spool IDs

  1. Open Physical spools & usage from the library’s More menu and choose Assign permanent IDs to my rolls. This does not add stock. Unknown-count bundles need a confirmed quantity first.
  2. Each counted reel receives its own SP number. Print two matching labels for its box and spool from Colour shelf. Test one label at actual size and scan it on your phone before printing a batch.
  3. Open a reel to edit its location, net remaining grams or used-up status. Marking one reel used reduces available counts without marking its matching reels used. To correct a mistaken original count after assigning IDs, contact support rather than deleting or renumbering a labelled reel.

A QR identifies a physical reel; a manufacturer barcode identifies a product. Neither is an NFC tag or a measurement of consumption. QR links cannot reveal someone else’s inventory.

Transfer your library to Spoolman

  1. Assign permanent IDs, then choose Export for Spoolman in Physical spools → Spoolman connection. The private JSON excludes used-up spools, uncounted bundles, mailbox details and bridge keys.
  2. In the file, set each material’s density (g/cm³) and diameter (mm) using its manufacturer specifications. Split unusual blends into separate files if their densities differ. Confirm initial and remaining net filament grams; no empty-spool weight is assumed.
  3. From the Spool Studio source folder, run node scripts/spoolman-import.mjs "path/to/spool-studio-transfer.private.json". This is a read-only dry run. Review its counts and back up Spoolman.
  4. Repeat with --apply to create the records. Add --assume-full only if every unmeasured exported reel is full. Partly used spools need a confirmed remaining weight instead.
  5. Select the generated mapping JSON under Import completed Spoolman mappings, review the count and confirm the links. Then configure the bridge below. The importer does not control your printer.

Do not run concurrent imports from different computers. If a write fails, inspect Spoolman before retrying the same source: completed records are retained and reused, not rolled back. Existing weights are never reset. Keep transfer and mapping files private; remove them when no longer needed.

Connect local Spoolman

The bridge is optional and must run on a computer that can reach your local Spoolman. Do not expose Spoolman or your printer directly to the internet.

  1. Create the corresponding physical spool in Spoolman, then enter its numeric Spoolman ID on the matching SP record here. One Spoolman ID can link to only one physical reel.
  2. In Physical spools → Spoolman connection, create a bridge key and download its private configuration. Keep the file out of shared folders and source control. Replace the key if it leaks.
  3. Install Node.js 22 or newer and obtain the source from the Spool Studio repository. In the repository folder run node scripts/spoolman-bridge.mjs "path/to/spool-studio-bridge.private.json" --once. The configuration defaults to local Spoolman on port 7912; edit spoolmanUrl to the origin of your own server.
  4. For ongoing sync, run the same command without --once. It sends absolute remaining weights once a minute while running. Close the process to stop. It does not start automatically after reboot.

Printer setup is separate. Your printer integration must update the correct Spoolman record for each loaded reel. Multi-tool printers require a verified mapping for each tool; do not assign the same active spool to all tools. NFC programming does not establish this mapping, and installing SpoolmanSync alone does not prove U1 consumption support.

Verify with a small print

  1. Record each loaded physical SP number, Spoolman ID and printer tool.
  2. Confirm the matching remaining weights before printing. Start with one tool and a small, supervised print.
  3. Check only that tool’s Spoolman record decreases, then check its SP record after sync. Repeating a sync must not subtract the same consumption again.
  4. Repeat for each tool before relying on multi-colour tracking. Compare against net scale weight where possible; purge, waste and calibration can affect estimates.

Send to your U1 without NFC

Open Send to printer from a library card or App & device. Choose the loaded filament in each tool card, select Review 4 filaments, check the changes, then Send 4 filaments. One action sends the full setup, with a verified result for each tool. Leave a tool unchanged for smaller updates. If a tool fails, the remaining tools stop for a fresh review. This works on iPhone as well as Android; no tag is written.

Install Spool Studio Bridge (desktop beta) on a computer on your printer’s network. Under Local bridge setup, create a separate printer key, enter the local addresses and download the private configuration. In the desktop app choose Import configuration, Check connection (read-only), then Start bridge. Keep that computer awake; closing the window leaves it in the tray or menu bar. No GitHub account or Node installation is needed. No public printer ports are required. Advanced source and Docker instructions are available on the download page.

Only the supported U1 metadata command is used. Printing, paused and unknown states block sends; temperatures and motion are never changed. The app only reports verified success after reading the requested settings back. Lost replies are uncertain, not retried. A later NFC scan or slicer job may overwrite metadata.

Optionally choose an already-linked physical reel for Spoolman. Its server must match the printer configuration; the bridge checks the material, colour and other tools. Colour-only sends clear an old tool assignment so usage is not charged to the wrong reel. Review this explicitly. Assignment can bind an existing tag UID, but does not write a tag or prove consumption tracking. Full setup and safety guide.

Direct Gmail import

Gmail is first in the email-connection rollout, but public access is not enabled until Google configuration and restricted-scope verification are complete. Normal Google login only identifies you; it does not read your inbox.

Approved testers can open Import → Gmail → Check Gmail availability, then Connect Gmail read-only. Search for relevant orders, select up to 10 messages and choose Review selected orders. The detected filament appears in a compact table with quantities, prices and library checks. Similar saved stock and repeated entries are flagged; these are possible duplicates, not proof of the same purchase. Open Review for corrections and purchase details, then approve only the stock you own. The source text stays collapsed and editable on this device. HTML-only emails are converted to plain text without loading images or executing scripts. Attachments still need pasted text or screenshots instead. Disconnect when finished.

Until enabled, use CSV, copied email text or screenshots from any mail provider. Never paste mailbox passwords, sign-in codes or API keys into the importer.

Spool prices and model costs

Add a cost per roll and currency when adding or editing filament. For a multipack, divide its price by its roll count. Apply discounts first; apportion shipping or tax yourself if you want them included. Blank is unknown; zero means free.

Download the CSV template with cost columns. Add costPerRoll and costCurrency, for example 12.99 and GBP. Existing CSV files still work. Gmail, pasted emails and image text can supply costs: explicit lines such as “Cost per roll: GBP 12.99” are recognised. Ordinary order totals, unlabelled prices and bundle totals are not automatically assigned. Review and correct the cost fields before saving.

Already imported your rolls? In Import, choose Update existing costs only before reading your CSV, email text or image. Match each price to its original purchase. An exact entryId, or an unambiguous retailer + order + exact variant, can suggest a match; a colour alone never proves a purchase. Existing prices start protected and need a separate replacement check per entry. Unmatched rows never add stock. Counts, IDs and used marks stay untouched. Optional CSV columns entryId,order,retailer help identify purchases; place explicit Order: and Retailer: lines after each product in pasted text.

In Match a print, enter the slicer’s grams for each included colour. Include supports, purge and waste. The estimate uses grams × cost per roll ÷ original grams per roll. It follows your chosen filament or the top same-finish match. Matching purchases at different prices produce a range; unknown prices produce an incomplete estimate. Currency totals stay separate.

This does not slice your 3MF or automatically read its usage. Use either whole-project or per-plate grams consistently; changing the preview does not change your inputs. Grams stay in this tab only. Electricity, labour, failures and profit are not included.