Hi all,
I’m trying to generate a .clb file programmatically rather than enter every material through the UI. I have a spreadsheet of settings and want to emit valid XML directly. I know this topic has come up before (the CSV→CLB direction in the 2025 thread, the export-to-Excel thread, and the LBRN2 XML doc request), but I haven’t found a definitive parameter reference, so I’m asking here in the hope of producing one.
What I’ve found so far: The .clb format is simple, well-structured XML LightBurnLibrary → Material → Entry (with Thickness/Desc) → CutSetting (with a type attribute and a flat list of <Xxx Value="..."/> children). I’m aware there’s no official schema published; I’m hoping the community (or LB staff) can help crowd-source one.
main problem no 1:1 map between the UI and XML. Saving a library export does not faithfully reproduce every UI field. Concretely:
Plaintext
<?xml version="1.0" encoding="UTF-8"?> <LightBurnLibrary DisplayName="polar_cut_library"> <Material name="Granite Coaster Z9.0"> <Entry Thickness="-1.0000" Desc="Two Passes"> <CutSetting type="Scan"> <index Value="0"/> <name Value=""/> <LinkPath Value="Granite Coaster Z9.0/-1.0000/Two Passes"/> <minPower Value="20.5"/> <maxPower Value="20.5"/> <minPower2 Value="10"/> <maxPower2 Value="20"/> <speed Value="250"/> <PPI Value="0"/> <runBlower Value="0"/> <numPasses Value="2"/> <dotTime Value="1"/> <overscan Value="0"/> <priority Value="0"/> <tabCount Value="1"/> <tabCountMax Value="1"/> </CutSetting> </Entry> </Material> </LightBurnLibrary>
- The
runBlowerelement was absent from my export until I toggled Air Assist to off in the UI and re-exported. So elements appear/disappear based on UI state, which means “whatever the exporter happened to write” is not a reliable complete set. - The names don’t match the UI labels 1:1:
runBlower<> “Air Assist”,PPI<> “PPI” (but behaves differently for Scan vs Cut),overscan,dotTime,tabCount/tabCountMax,priority, theminPower2/maxPower2pair, etc. Several UI controls clearly map to non-obvious element names.
What I’m asking for ideally a table like this, filled in for every element a CutSetting can contain:
| XML element | UI label / meaning | Type / units | Default (when omitted) | Applies to (Cut / Scan / both) | Notes |
|---|---|---|---|---|---|
minPower |
Min power (%) | float 0–100 | ? | both? | |
maxPower |
Max power (%) | float 0–100 | ? | both? | |
minPower2 / maxPower2 |
? second power range? | float | ? | ? | when are these used? |
speed |
Speed (mm/s) | float | ? | both | |
PPI |
PPI | int | 0 | ? | 0 = off/default? |
runBlower |
Air Assist on/off | 0/1 | ? | both | only emitted when toggled off why? |
numPasses |
Pass count | int | 1 | both | |
dotTime |
Dot time (ms)? | int | 1 | Scan? | |
overscan |
Overscan (%) or distance | float | 0 | Scan | |
priority |
? | int | 0 | ? | |
tabCount / tabCountMax |
Tabs? | int | 1 / 1 | Cut | |
index |
? internal | int | 0 | both | always 0? |
name |
? | string | “” | both | always empty in exports? |
LinkPath |
material/thickness/desc path | string | auto | both | must match ancestors? |
... |
(what else exists?) |
Specific questions, in case a full table is too much to ask:
- Is there a complete list of every possible
<Xxx Value="…"/>element underCutSettingfor current LightBurn (as of mid-2026)? i.e. the superset, not just what a particular export happens to write. - For each element: what is the default applied when the element is omitted? (The
runBlower-only-when-toggled-off behavior tells me there’s an implicit default, but I don’t know which way.) - Is there a canonical mapping between these internal names and the Cut Settings Editor UI controls? Especially:
runBlower<>Air Assist,minPower2/maxPower2,dotTime,overscan,priority,tabCount/tabCountMax,PPIsemantics fortype="Scan"vstype="Cut". - What are the valid values for
CutSetting type="…"? I’ve seenScanandCut; are there others (e.g. for diode/galvo/MOPA-specific modes)? - Does
LinkPathhave to exactly equalMaterial/@name/Entry/@Thickness/Entry/@Desc, and what happens on mismatch? Is it used as a key or just a display hint? - For
Thickness="-1.0000"is-1the convention for “no thickness / variable thickness”? Any other sentinel values?
I want to author a library from a spreadsheet (lots of material/thickness/speed/power combos) without clicking each one in the UI. If I can get a reliable element→default→UI map, I’ll write a small generator (and am happy to share it). Even a partial authoritative answer “here are the elements, here are the defaults, here’s what runBlower/minPower2 actually mean” would save me (and others) a lot of trial-and-error and avoid shipping a library with incorrect defaults.
If LB staff can chime in with the actual internal struct layout that gets serialized, that would be ideal but community-sourced “I toggled X and element Y appeared with value Z” observations are also extremely welcome. I’ll try to post a consolidated table from the replies so it’s a reference going forward.
Thanks!

