QR Code Generator with Logo & Transparency

Build a scan-safe QR with gradients, organic modules, a transparent logo and custom captions. Export the exact result as PNG or standalone SVG — all processing stays in your browser.

Content type
Style presetsstarting points
Fill
{{fillStyle==='solid' ? 'Color' : 'Start'}}
End
{{gradientAngle}}°
Background
Color
Modules
Finder eyes
{{margin}} mod
Error correction
Center logolocal only
{{logoName}}
Crop
{{iconScale}}%

Logo uses the active QR fill and gradient direction.

Plate
{{iconBorder}}px
Border color

Circle crop keeps round transparent icons round. Use Q or H for larger logos.

Color
{{topTextScale}}%
{{topTextGap}}%
{{topTextPadding}}%
Color
{{bottomTextScale}}%
{{bottomTextGap}}%
{{bottomTextPadding}}%
Batch generation{{contentTypes.find(c=>c.id===contentType).label}} · .zip

Paste CSV rows for the content type selected above — one QR per row, styled the same as the preview, exported together. A header row is optional; columns: {{batchColumns.join(', ')}} (filename is optional on every type).

{{batchRows.length}} row{{batchRows.length===1?'':'s'}} parsed

Rendering {{batchProgress.index}} of {{batchProgress.total}}…

{{r.filename}} {{r.ok ? 'scan check passed' : (r.error || 'scan check failed')}}
Decode a QR imagelocal only
Choose a QR image or drop it here — decoded in your browser.
About this tool

The QR is generated at full resolution then styled — gradients, rounded or dotted modules, a logo — while the underlying data and error-correction level stay untouched, which is why the "scan check" re-decodes the rendered image to confirm it still reads back the original text.

Higher error correction (Q/H) tolerates more visual styling and a bigger logo before scanning breaks, at the cost of a denser code.

Batch generation reuses the exact style set above and the same scan check as the live preview — each row is rendered, re-decoded from its own styled pixels, and only then added to the ZIP, so a row marked "scan check passed" is verified the same way the single QR above is, not just assumed to work because the data fit.

Rendering, styling, batch export and decoding all happen locally on a canvas in your browser. Nothing — including the content you encode, a batch CSV, or any image you decode — is uploaded.