An open-source, community-driven database of 3D printing materials, brands, and packaging specifications. Part of the OpenPrintTag initiative.
Quick Start · Data Structure · Contributing · Detailed Guides
This repository is a publicly editable database of 3D printing materials stored in human-readable YAML files. Think of it as a community wiki for filament specifications, but in a format that machines can also understand.
What's inside:
- 107 brands — Material manufacturers from Prusament to Hatchbox
- 11,365 materials — PLA, PETG, ASA, TPU and many more with detailed properties
- 750 packages — Physical products with GTINs/barcodes
- 66 containers — Spool specifications and dimensions
Note: These values are generated by the scripts/update_stats.py script.
All data follows the OpenPrintTag Architecture schema and can be imported into any database or application.
- Browse to the
data/folder - Find the file you want to edit (e.g.,
data/brands/prusament.yaml) - Click the pencil icon ✏️ to edit
- Make your changes and submit a Pull Request
→ See CONTRIBUTING.md for detailed step-by-step guides.
# Clone the repository
git clone https://github.com/OpenPrintTag/openprinttag-database.git
cd openprinttag-database
# Start the editor (auto-installs dependencies)
make editorThe command checks for Node.js 18+, installs pnpm if needed, and opens the editor at http://localhost:3000.
→ See ui-editor/README.md for more details.
# Clone and setup
git clone https://github.com/OpenPrintTag/openprinttag-database.git
cd openprinttag-database
make setup
# Validate your changes
make validatedata/
├── brands/ # Material manufacturers and suppliers
│ └── {brand-slug}.yaml
├── materials/ # Material definitions with properties
│ └── {brand-slug}/
│ └── {material-slug}.yaml
├── material-packages/ # Physical products (spools, bottles)
│ └── {brand-slug}/
│ └── {package-slug}.yaml
├── material-containers/ # Container specs (spool dimensions)
│ └── {container-slug}.yaml
└── tmp/
└── assets/ # Locally uploaded images (temporary)
Manufacturers and suppliers of materials.
See example: data/brands/prusament.yaml
Individual materials with detailed properties.
See example: data/materials/prusament/prusament-asa-jet-black.yaml
Physical products you can buy — spools with barcodes.
See example: data/material-packages/prusament/prusament-pla-prusa-orange-1000-spool.yaml
Spool and container specifications.
See example: data/material-containers/1000g.yaml
All files use slugified names:
- Lowercase letters
- Words separated by hyphens
- No special characters
Example: prusament-pla-galaxy-black.yaml
- Fork this repository
- Make changes using the UI editor or directly in YAML
- Validate your changes with
make validate - Submit a Pull Request
- Wait for automated validation and review
# Initial setup
make setup # Create Python venv and install dependencies
make fetch-schemas # Download OpenPrintTag schemas
# Working with data
make validate # Validate all data against schemas
make test # Run unit tests
make help # Show all available commandsWe welcome contributions! Whether you want to:
- Add a new brand — Know a manufacturer not in the database?
- Add materials — Have specifications for materials we're missing?
- Fix errors — Spotted a typo or wrong value?
- Add photos — Have product images? You can upload them directly in the UI editor
→ Check out CONTRIBUTING.md for detailed step-by-step guides on:
- How to add a new brand
- How to add a new material
- How to edit existing data
- How to submit your changes as a Pull Request
This database follows the OpenPrintTag Architecture schema. The specific version is configured in schema_version.conf.
Schema ensures:
- Field types are correct
- Required fields are present
- UUIDs are properly formatted and derived according to the UUID specification
- References (brand_slug, material_slug) are valid
- Enum values match allowed options
- GTINs and URLs follow correct patterns
UUIDs in this database are derived using UUIDv5 (SHA1 hash) according to the OpenPrintTag Architecture UUID specification:
- Brand UUID: Derived from brand name
- Material UUID: Derived from brand UUID + material name
- Package UUID: Derived from brand UUID + GTIN
When creating new entries, you can leave the uuid field empty or omit it entirely - it will be automatically derived during validation.
| Resource | URL |
|---|---|
| OpenPrintTag Website | openprinttag.org |
| Architecture Docs | arch.openprinttag.org |
| Schema Repository | github.com/OpenPrintTag/openprinttag-architecture |
MIT License — see LICENSE for details.