MarkingBear

Bulk Barcode & QR Generator

Home Academy
Barcode & QR Academy

Privacy & workflow

How to Generate Bulk Barcodes and QR Codes in Browser Without Uploading Data to a Server

August 14, 2026 2 min readBarcode & QR Academy Team

A product export is rarely just product codes. It usually carries SKUs, supplier references, internal naming, sometimes pricing. Uploading that file to an unknown web service to get a few hundred barcodes is a bigger decision than it looks. The good news: none of it needs to leave your laptop.

What "client-side generation" actually means

When you open MarkingBear, the browser downloads the application code once. From that moment, parsing your CSV, drawing each barcode, rasterising images and zipping the results all happen in your own browser's memory, using the same JavaScript engine that renders any web page.

There is no upload step because there is no server-side render. The barcode is drawn as vector shapes in the page, then written straight into a file your browser hands you as a download.

How to verify that for yourself

  1. 1Open your browser's developer tools and switch to the Network tab.
  2. 2Load your CSV and generate a batch.
  3. 3Watch the request list — you will see no request carrying your file contents.
  4. 4For the strongest proof, load the page once, switch your machine to offline or airplane mode, then generate and download. It still works, because nothing remote is involved.

A clean CSV workflow for 100+ SKUs

Batches are capped at 100 items per run so the browser stays responsive and memory stays predictable. Bigger catalogues are best handled as a series of batches, which also makes proofing easier.

  • Export only the columns you need: the code value and an optional label.
  • Format code columns as text first so leading zeros and long numbers survive.
  • Strip spaces, hyphens and stray quote marks before importing.
  • Split large catalogues into chunks of 100, named by range, so reprints are easy to trace.
  • Generate one small test batch and scan the printed sheet before running the rest.

Why it stays fast

Rendering a hundred codes is real work, so the batch is processed in small asynchronous chunks with the main thread handed back between them. The interface keeps responding, a progress bar shows exactly where the run is, and export buttons stay disabled until every preview has finished rendering.

Intermediate canvases and blob URLs are released as soon as a file is written, so a long session does not slowly eat your memory.

When you genuinely do need a server

Client-side generation covers static codes — a fixed URL, a fixed SKU. If you need dynamic QR codes whose destination can change after printing, or scan analytics, that requires a hosted redirect service by definition. Decide which of those you actually need: most retail and labelling work is static, and static work is the kind you can keep entirely private.