Laser Marking QR Codes, Serial Numbers, and Batch Traceability in LightBurn
Our LightBurn settings guide covers cut and engrave parameters for a single job, and our guide to making money with a laser cutter covers pricing and small-batch production workflows — but neither gets into the specific problem of marking parts that need to be individually identifiable: a serial number that increments per unit, a QR code linking to a specific product page or warranty record, or a batch/lot code for traceability. This is a genuinely different workflow from cutting the same design over and over, and LightBurn has real support for it that most hobbyists never discover because it isn't needed until you're doing small-batch production rather than one-off projects.
Why Serialization Matters
- Warranty and support tracking — a unique serial number lets you look up exactly which batch, material, and settings produced a specific unit if a customer has an issue.
- QR codes linking to product pages, manuals, or registration forms — increasingly expected on small-batch electronics enclosures, signage, and any product with a digital component.
- Regulatory or industry traceability requirements — some product categories (anything touching food-contact surfaces, certain electronics, firearm-adjacent parts covered in our firearm engraving guide) have real legal requirements around permanent, traceable marking.
- Anti-counterfeiting — a sequential or otherwise verifiable code makes it harder for someone to pass off an unauthorized copy as an original.
Static vs Variable Marking
Marking TypeExampleLightBurn Approach StaticLogo, fixed model number, "Made in [Location]"Standard fixed vector/text layer, unchanged run to run Auto-incrementingSerial numbers 00001, 00002, 00003...Variable Text with an auto-increment counter, built into LightBurn directly CSV-driven / data-matrixPer-unit QR codes linking to unique URLs, or a batch of pre-assigned serials from a spreadsheetVariable Text sourced from a CSV file, one row consumed per job runAuto-Incrementing Serial Numbers in LightBurn
- Create a text object on your design where the serial number should appear.
- Right-click the text object and choose Variable Text (or set it via the Variable Text panel under Edit), then define a numeric variable with your starting value, step size, and zero-padding (e.g. start at 00001, step 1, 5 digits).
- Set the increment to advance either automatically after each completed job, or manually — automatic is right for a straight production run; manual gives you a chance to catch a misfeed or bad cut before the counter advances past a part that didn't actually get marked.
- Run a test batch of 3-5 pieces first and verify the sequence advances correctly and legibly at your actual engrave settings before committing to a full production run — a serial number that's technically present but unreadable defeats the entire point.
CSV-Driven Variable Text for QR Codes and Pre-Assigned Data
For anything more complex than a simple counter — a QR code that needs to encode a full unique URL per unit, or serials that were already assigned in an external system (an order database, a spreadsheet from a batch of pre-sold items) — LightBurn can pull each field from a CSV file, advancing one row per job.
- Build a CSV with one column per variable field and one row per unit — for example, a serial column and a url column if you're marking both a human-readable serial and a QR code on the same part.
- In LightBurn, set your text or QR object's Variable Text source to "CSV" and point it at the file, mapping the object to the correct column.
- Insert a QR Code shape (LightBurn has a built-in QR code generator under Shape Tools) and link its data field to the same CSV column so the code content advances in sync with any other variable text on the part.
- Run jobs in order and don't skip rows — if a piece fails mid-run, either manually advance to the next row and set the failed piece aside, or re-run that specific row number by editing the current index, so your CSV records stay matched to physical units.
QR Code Settings for Reliable Scanning
FactorRecommendation Minimum module sizeAt least 0.4-0.5mm per module on engraved materials — smaller modules blur together at typical diode laser spot sizes and become unreadable Error correction levelUse Medium or Quartile rather than Low — engraved codes have more real-world contrast and edge variance than a printed code, and higher error correction tolerates minor engrave imperfections ContrastEngrave into a material with real light/dark contrast (anodized aluminum, painted/coated metal, dark-core laminate) rather than relying on subtle depth-only contrast on a uniform light material, which scanners read poorly Quiet zoneLeave the standard blank margin around the code — cropping it tight to save space is the single most common cause of a code that won't scan Test before the full runScan the first engraved sample with two or three different phone camera apps, not just one — some QR readers are more tolerant of low-contrast codes than othersBatch/Lot Codes for Traceability Without Full Serialization
Not every production run needs a unique-per-unit serial — sometimes a shared batch code (material lot, production date, machine settings used) covering an entire run is enough for traceability purposes. This is simpler to implement: a single static text layer with that run's batch code, updated manually between batches rather than advancing automatically per piece. Keep a simple log (even a spreadsheet) mapping batch codes to the material lot, settings, and date used, since the mark is only as useful as the records behind it.
Common Mistakes
MistakeConsequence Not testing the increment/CSV advance before a full runDiscovering halfway through 200 parts that the counter skipped a value or the CSV mapping was off by one column is expensive to unwind Engraving QR codes too small for your laser's spot sizeCodes that look fine on screen but don't scan reliably once cut — always physically test-scan, don't trust the on-screen preview No log connecting serials/batches to production recordsThe mark exists but is functionally useless for its actual purpose (support lookup, traceability) without records behind it Manually editing the counter mid-run without documenting the changeCreates gaps or duplicates in the sequence that undermine the whole point of serializationVariable text and CSV-driven marking are some of the most underused features in LightBurn for anyone moving from one-off projects into small-batch production — most of the machinery is already built in, it just doesn't come up until you actually need traceable, per-unit marking. Test thoroughly on a handful of pieces before committing to a full run, keep records that make the marks actually useful, and treat QR code legibility as something to verify by scanning, not by eye.
Related Guides
- How to Optimize GRBL Firmware on the Longer Ray5 20W
- Making a LightBurn Material Test Card for the Ray5 20W
- Speed Optimization in LightBurn — Cut Order and Travel Reduction
- Using Fill+Line Mode in LightBurn for Crisp Signs
- How to Make a Living Hinge Box with the Ray5 20W
- How to Use LightBurn Boolean Tools for Interlocking Parts