SifBatch

Turn a generic CSV or TSV of personalized orders into a checked production batch. Map columns, review blocking and warning checks, and export a LightBurn-style Merge/CSV file, printable proof sheet, and batch ZIP.

You make personalized items (for example engraved boards, tags or coasters) and want to catch empty, too-long or unsafe personalization text before it reaches LightBurn's variable text.

SifBatch actual application or output
Real SifBatch result using six fictional coaster orders: three valid records create four production rows; three deliberately invalid records are blocked and omitted. A batch ZIP was downloaded. LightBurn import remains unverified.

Before you start

Your first result

  1. Buy, download and extract

    Buy from /store/sif-batch/ and download sif-batch-0.1.0.zip from the checkout page. Extract it; you get a folder named sif-batch with server.mjs, the app, synthetic samples and README.txt.

  2. Start SifBatch

    Open a terminal in the sif-batch folder and run: node server.mjs. It prints “SifBatch is running at http://127.0.0.1:8787/ (loopback only; press Ctrl+C to stop)”. Open that address in Chrome. Keep the terminal open while you work; press Ctrl+C there when you are done. If port 8787 is busy, start it with node server.mjs --port 8790 and open that port instead.

  3. Try the synthetic sample first (optional)

    On the Import step, click “Generic CSV sample”. It loads invented orders together with a saved mapping so you can walk through all four steps safely.

  4. 1 Import

    Keep “Generic CSV / TSV” selected. Click the “Drop a .csv / .tsv / .txt file or click to choose” area and pick your order file. Encoding and Delimiter can stay on automatic. Add buyer images under “Buyer images” only if your orders reference image files. Click “Continue to mapping →”.

  5. 2 Map columns

    Under “Record identity” choose the Order ID column (required) and, if you have them, the order line, quantity and image file name columns. Under “LightBurn columns” each row becomes %0, %1, … in LightBurn: pick its Source column, tick Required only for values that must never be empty, and set “Max chars” to what fits your item. “Suggest from source names” fills this in quickly but marks every suggested column Required, so review it. “Import mapping…” loads a saved mapping file and “Export mapping” saves the current one for next time. Click “Confirm mapping and validate →”.

  6. 3 Validate

    Every order is listed as READY or BLOCKED, or with a warning, and the reason is shown in the Checks column. Use the filters (All, Blocked, Warnings, Ready, Excluded) to review. Blocked records never reach the LightBurn file; records with warnings do, so read them. Fix problems in your source file and import again, or adjust the mapping. Click “Proof & export →”.

  7. 4 Proof & export

    Check the proof sheet preview and the “LightBurn setup” box (mode Variable Text → Merge/CSV, the Start/End rows, header row, UTF-8 encoding). Set a “Batch name”, then click “Download batch package (.zip)”, “LightBurn CSV only”, “Validation report (CSV)” or “Print proof sheet”. Files go to Chrome's downloads folder.

  8. Use the CSV in LightBurn

    In LightBurn, use Variable Text in Merge/CSV mode with the downloaded merge CSV and the Start/End rows shown on the export step. Check LightBurn's preview for every row before production.

Six engraved-coaster orders with three deliberate problems

Input: examples/sif-batch/coaster-orders.csv (6 fictional orders: one with quantity 2, one name longer than 20 characters, one that starts like a spreadsheet formula, one with an empty name) and examples/sif-batch/coaster-mapping.json (Name required, max 20 characters; Date optional; Font required; Copy number).

  1. Start SifBatch with node server.mjs and open http://127.0.0.1:8787/ in Chrome.
  2. Under “Generic CSV / TSV”, choose coaster-orders.csv, then click “Continue to mapping →”.
  3. Click “Import mapping…” and choose coaster-mapping.json, then click “Confirm mapping and validate →”.
  4. Review the three BLOCKED rows, then click “Proof & export →”.
  5. Click “LightBurn CSV only” and “Download batch package (.zip)”.

Expected: Validate shows 6 records: 3 ready, 0 with warnings, 3 blocked, 4 LightBurn rows. Blocked reasons: “"Name" has 35 characters; the limit is 20.”, the formula rule for =1+1 (“"Name" starts with a spreadsheet formula character …”), and “"Name" is empty.” The CSV (SifBatch_Production-batch_lightburn-merge.csv) has 4 lines, the two-coaster order expanded to copies 1/2 and 2/2: “Hanna & Theo,21.06.2026,Great Vibes,1/2”. The batch ZIP contains lightburn/merge.csv, lightburn/COLUMNS.txt, proof/proof-sheet.html, reports/validation-report.csv and .json, mapping/sifbatch-mapping.json, originals/coaster-orders.csv, README.txt and manifest.json.

Troubleshooting

Optional columns such as Date block orders with “"Date" is empty.”

On “2 Map columns”, untick Required for that LightBurn column (“Suggest from source names” ticks every column), then confirm the mapping again.

A name is blocked because it “starts with a spreadsheet formula character”.

Values starting with = + - or @ are blocked by default to protect spreadsheet users. Fix the source text, or on the Map step choose “Prefix with an apostrophe” (the apostrophe will be engraved) or “Export exactly as typed” (only if you never open the CSV in a spreadsheet app).

The page does not open or the terminal shows an error when starting.

Check node --version shows 20.12 or newer and that you ran the command inside the sif-batch folder. If the port is in use, add --port with another number.

Accented or non-Latin names look wrong.

On the Import step set Encoding to the one your spreadsheet used (for example Windows-1252 for Excel “CSV” on Western Windows) instead of automatic.

My work is gone after closing the tab.

SifBatch does not store orders between sessions. Use “Export mapping” (or keep the mapping inside the batch ZIP) and re-import the order file next time.

Compatibility and limits

Guide and examples: 30 September 2026. Examples are fictional or synthetic. Online guide · Support