Expression Language
You can use the expression language to filter spools in a flexible way.
You do not need to learn all of it at once. Start with simple searches like PLA Red, then add more only when you need them.
What a Search Looks At by Default
If you do not name a field, the search checks:
- the spool's main text
- the spool ID
- top-level weight checks such as
>250g, which check net weight
The main text is built from the brand, material, subtype, and color name.
Examples:
PLAFinds spools whose main text containsPLA.10Can find a spool whose ID is10.>250gFinds spools whose net weight is above 250 grams.
You can also search one specific field, including fields that are not part of the main text. See Search in One Specific Field and Field Names, Aliases, and Built-In Shortcuts.
Quick Examples
| Expression | What it means |
|---|---|
RED PLA | Find spools that match both RED and PLA. |
PLA (Red, Green) | Find PLA spools that are either red or green. |
Red PLA, Gray PETG | Find red PLA spools, or gray PETG spools. |
ASA >250g | Find ASA spools with more than 250 grams of net weight. |
Use a Space to Mean "and"
To make the simple filter cases simple and appear like regular text as you would expect, a space means both parts must match.
Examples:
PLA RedFinds spools that match bothPLAandRed.Polymaker PLAFinds spools that match bothPolymakerandPLA.
Use a Comma to Mean "or"
A comma means either side can match.
Examples:
PLA, PETGFinds spools that are PLA or PETG.Red PLA, Gray PETGFinds red PLA spools, or gray PETG spools.
Use ! to Mean "not"
Use ! to exclude something.
Examples:
PLA !RedFinds PLA spools that are not red.!(PLA, PETG)Finds spools that are neither PLA nor PETG.
Search by Word
A plain search like PLA or Red matches a whole word.
Examples:
TruckDoes not matchTruck-Red.Truck-RedDoes matchTruck-Red.
Search for an Exact Phrase
Use quotes when you want words next to each other in the same order.
Examples:
"Truck Red"Finds the exact phraseTruck Red."Polymaker PLA"Finds that exact text together.
You can use * inside quotes to match part of one word while still keeping the words next to each other.
Example:
"Bambu Lab*"Can matchBambu Lab,Bambu Lab Basic, orBambu Laboratories.
Inside quotes, * still works inside one word. It does not jump across separate words.
If you need a literal *, write \*. You can also write \" for a quote, \\ for a backslash, and \n, \r, or \t for line breaks and tabs.
An exact phrase is not the same as an exact field match. It only means the words must appear together. To require the whole field to be exactly a value, see Match a Field Exactly.
Text matching treats repeated spaces as one space.
Example:
"Bambu Lab"Can match stored text likeBAMBU Lab.
Group Parts with Parentheses
Use parentheses to keep part of the search together.
Examples:
PLA (Red, Green)Finds PLA spools that are red or green.!(Red, Green)Finds spools that are neither red nor green.
Use * to Match Part of a Word
Use * when you want to match part of a word.
Examples:
PLA*Matches words that start withPLA.*makerMatches words that end withmaker.*red*Matches words that containred."Bambu Lab*"Matches a phrase where the second word starts withLab.
* works inside one word. It does not jump across separate words.
Uppercase and Lowercase Do Not Matter
Searches are not case-sensitive.
Examples:
red,RED, andReDAll mean the same thing.COLOR:redWorks the same ascolor:red.
How Words Are Split
Words split at spaces and at these characters:
, / \ ! # @ ( ) ; | . " { } [ ]
Examples:
Red/BlackCan be found withRedorBlack.Truck-RedStays one word, because-does not split it.#Main/S:5Can be found withMainandS:5.
Search in One Specific Field
Use field:search when you want to search only one field.
Examples:
material:PLAChecks only the material field.note:dryChecks only the note field.description:"Polymaker PLA"Checks only the main text field.
You can use this with fields inside the main text and with other fields such as notes, tags, weights, and locations. See Field Names, Aliases, and Built-In Shortcuts.
Match a Field Exactly
Use field:=value when the whole field must be exactly that value.
Examples:
brand:=PolymakerFinds spools whose brand is exactlyPolymaker.brand:="Bambu Lab"Finds spools whose brand is exactlyBambu Lab.brand:!="Bambu Lab"Finds spools whose brand is not exactlyBambu Lab.brand:="Bob \"Special\" Filament"Finds spools whose brand is exactlyBob "Special" Filament.
Use quotes when the exact value contains spaces, is empty, or looks like a number.
You can also check for one of several exact values.
Examples:
brand:=("Bambu Lab", Polymaker)Finds spools whose brand is exactlyBambu Labor exactlyPolymaker.brand:!=("Bambu Lab", Polymaker)Finds spools whose brand is not exactlyBambu Laband not exactlyPolymaker.
Exact text matches are not case-sensitive, and repeated spaces count as one space.
Wildcards are not active in exact text matches. brand:="Bambu Lab*" checks for a literal * in the brand.
Example:
brand:="Bambu Lab"Can match a stored brand likeBAMBU Lab.
You can also use exact matching to check whether a text field is empty.
Examples:
note:=""Finds spools whose note is empty.note:!=""Finds spools whose note is not empty.
A field that is missing or only spaces counts as empty.
Keep Several Checks in the Same Field
If more than one check should stay inside the same field, use parentheses.
Examples:
color:(red, green)Finds spools whose color is red or green.id:(15, 22, >100)Checks all of those conditions inside the ID field.
Without parentheses, the field name applies only to the next part.
Example:
color:black redMeans color is black, andredcan match somewhere else.
Short Names for Common Fields
Some fields have shorter names.
Examples:
color:redUsescoloras a short name forcolor_name.net:>250gUsesnetas a short name forweight_net.actual:MainUsesactualas a short name forlocation_actual.assigned:Shelf-2Usesassignedas a short name forlocation_assigned.
The full list is in Field Names, Aliases, and Built-In Shortcuts.
Filter by Numbers
Some fields can be checked with numbers.
You can use:
<<=>>==!=
Examples:
net:>250gFinds spools whose net weight is above 250 grams.spools_count:>=2Finds records that contain two or more spools.used:<20Finds spools with less than 20 grams used.
Numeric fields are listed in Field Names, Aliases, and Built-In Shortcuts.
Use g and kg
Weight fields understand g and kg.
Inside a weight field, the unit is optional. If you leave it out, the number is read as grams.
Examples:
net:>250Checks for more than 250 grams.label:160Checks for exactly 160 grams.net:<=0.5kgChecks for 500 grams or less.>250gWithout a field name, this checks net weight, and here the unit is required.
Keep the unit attached to the number when you write one.
Example:
>250 gDoes not work.
Short Form for an Exact Number Match
Inside numeric fields, you can often write just the number.
Examples:
spools_count:2Means exactly 2 spools.tags_count:3Means exactly 3 tags.gross:200Means exactly 200 grams gross weight.
This is the same as using =.
Example:
spools_count:2Means the same asspools_count:=2.
For weight fields, gross:200 means 200 grams. You can still write gross:200g if you want.
How Spool ID Searches Work
The id field behaves a little differently. It can work like text and like a number.
Examples:
id:ABC-42Finds that ID as text.id:*10*Finds IDs that contain10.id:>100Finds numeric IDs above 100.id:010Can match the text010, and can also match numeric ID10.id:="010"Checks the exact ID text010, so it keeps the leading zero.
If an ID is not numeric, numeric comparisons like id:>100 will not match it.
Use exact text matching when 010 and 10 should be treated as different IDs.
Built-In Shortcuts
Some useful checks are already built in. These start with %.
Examples:
%taggedFinds spools that have at least one tag.!%taggedFinds spools with no tags.%stockFinds stock records.%placedFinds spools that have a current location.%inprinterFinds spools that are currently in a printer.
More shortcuts are listed in Field Names, Aliases, and Built-In Shortcuts.
Searching Lists Like Tags and Colors
The tags and color_rgba fields are treated as lists.
Each list item is checked on its own.
Examples:
tags:ABCDFinds a spool that has tagABCD.tags:=ABCDFinds a tag value that is exactlyABCD.tags:=(ABCD, EF12)Finds a tag value that is exactlyABCDor exactlyEF12.tags:*BC*Finds a tag value that containsBC.tags:=""Finds spools with no tags.color_rgba:FF0000FFFinds a spool that has that RGBA color value.
One search does not stretch across two separate list items. Exact matching also checks each list item on its own.
These fields are listed in Field Names, Aliases, and Built-In Shortcuts.
Counting Spools, Tags, and Colors
These fields let you search by count:
spools_counttags_countcolor_count
Examples:
spools_count:2Finds records that contain exactly 2 spools.tags_count:>=2Finds records with 2 or more tags.color_count:1Finds records with exactly 1 saved color value.
Searching Locations
Location searches work for both managed locations and free-text locations.
In saved location values, the first character often tells you what kind of location it is:
#means structured storage, such as#Main/S:3/P:2@means free text, such as@loaned to john!means the spool is in a printer
These leading characters are part of the saved location value. They are not field names, so they are not listed in the table at the end.
For managed locations such as #Main/S:3/P:2, you can search useful pieces of the path.
Examples:
actual:MainFinds spools whose current location includesMain.actual:S:3Finds spools whose current location includesS:3.actual:Main/S:*Finds spools somewhere underMain/S.
For free-text locations, normal word searches and quoted phrases work too.
Examples:
actual:loanedFinds locations that include the wordloaned.actual:"loaned to john"Finds that exact location text.
The location fields are listed in Field Names, Aliases, and Built-In Shortcuts.
The @ Shortcut
At the top level, @... is a short form of actual:....
This is different from a saved location value that starts with @.
Examples:
@MainMeans the same asactual:Main.@"loaned to john"Means the same asactual:"loaned to john".@(Main, loaned)Searches the current location forMainorloaned.@@loanedSearches for the literal text@loanedin the current location.
Matching Different Unicode Forms
Searches also handle different Unicode forms of the same visible text.
Example:
brand:caféCan match a stored value likeCAFÉ.
This does not remove accents.
Example:
brand:cafeIs not the same asbrand:café.
Spaces and Formatting
Extra spaces are usually fine.
Examples:
material:PLA color:RedWorks normally.material: PLAAlso works.weight_net: < 250Also works.
One exception is weight units: the unit must stay attached to the number.
Example:
>250 gDoes not work.
Invalid Searches and Current Limits
Here are a few common things that do not work:
>250A top-level numeric check needs a unit such asgorkg.""Empty quoted phrases do not work by themselves. To check an empty field, name the field, such asnote:="".brand:""Empty quoted phrases do not work inside a field either. Usebrand:=""to check for an empty brand.brand:=()Exact-value lists cannot be empty. Use values inside the parentheses, such asbrand:=(Bambu, Polymaker)."bad\q"Unknown quoted-string escapes do not work. Use only\",\\,\*,\n,\r, or\t.brand:(material:PLA)You cannot put one field search inside another field search.
Current limits:
- Only
*is supported as a wildcard. - Weight units are only
gandkg. - Empty groups do not work.
Field Names, Aliases, and Built-In Shortcuts
Fields and Aliases
| Field name(s) | What it means |
|---|---|
description | Main searchable text built from brand, material, subtype, and color name |
brand | Brand name |
material | Material name |
subtype | Subtype or variant |
color_name, color | Color name |
id | Spool ID |
spools_count | Number of spools in the record |
tags | Tag values |
tags_count | Number of non-empty tag values |
slicer_filament | Slicer filament name |
weight_net, net | Net weight |
weight_label, label | Label weight |
weight_used, used | Used weight |
weight_gross, gross | Gross weight |
note | Note text |
color_rgba, rgba | RGBA color values |
color_count | Number of non-empty RGBA color values |
data_origin | Where the data came from |
location_actual, actual_location, actual | Current location |
location_assigned, assigned_location, assigned | Assigned location |
Built-In Shortcuts
| Shortcut | What it means |
|---|---|
%tagged | Has at least one tag |
%multicolor | Has at least 2 saved color values |
%inprinter | Current location says the spool is in a printer |
%inplace | Current location and assigned location are the same |
%stock | Record contains 2 or more spools |
%transparent | At least one saved color value includes transparency |
%placed | Has a current location |
%assigned | Has an assigned location |