Free QR Code Generator

Make a QR code for a link, Wi-Fi network, contact card, email or plain text. Free, no sign-up, no watermark. Choose a content type in the generator, fill in the fields, and download a PNG or SVG.

Symbology

Any text or URL. Longer payloads grow the symbol automatically.

QR Code

Not rendered.

Link to this image
/api/barcode?type=qr&data=https%3A%2F%2Farkalabel.io&module=7&quietx=20&quiety=20&rotation=0&dpmm=8&ecc=Q
Link to this page
/barcodes?type=qr&data=https%3A%2F%2Farkalabel.io&module=7&quietx=20&quiety=20&rotation=0&dpmm=8&ecc=Q
ZPL
^XA
^CI28
^FO20,20
^BQN,2,7,Q
^FH_^FDQA,https://arkalabel.io^FS
^XZ

QR Code fact sheet

Created in
1994
Created by
A team led by Masahiro Hara
Created at
Denso Wave (Japan)
Barcode type
2D matrix
Data allowed
Numeric, alphanumeric, 8-bit binary and kanji modes
ECI supported
Yes
GS1 data
Yes, as GS1 QR and GS1 Digital Link
Error correction
Reed-Solomon at four levels: L, M, Q and H
Specified by
ISO/IEC 18004
Popularity
Very high

What you can put in a QR code

Each content type builds the text a phone expects, so the camera offers the right action: open a page, join a network, save a contact.

Plain text
Any text, encoded exactly as typed.
URL
A web address. https:// is added when the scheme is missing.
Contact (vCard)
A contact card most phone cameras offer to save.
Contact (MECARD)
The compact contact format older readers understand.
Wi-Fi network
Scanning offers to join the network.
Calendar event
A single event a reader can add to a calendar.
Location
A map pin.
Email
Opens a pre-addressed message.
SMS
Opens a pre-written text message.
Phone number
Dials the number.
SEPA payment (EPC)
A euro credit transfer request, as European banking apps read it.
Swiss QR-bill
The payment slip payload used on Swiss invoices.
ZATCA e-invoice
The Saudi e-invoicing seal: a TLV sequence in base64.
GS1 Digital Link
A GTIN as a resolvable URL. Pairs with the GS1 data mode.

Quiet zone and error correction

The quiet zone is the blank margin around the code. Scanners use it to find where the code begins, so keep at least four modules of empty space on every side, and do not let text or artwork run into it.

Error correction lets a scanner read a code that is partly damaged. QR Code has four levels: L recovers about 7% of the code, M about 15%, Q about 25% and H about 30%. More correction means more modules for the same data, so the code grows denser.

Making codes that scan first time

  • Use dark modules on a light background. Inverted or low-contrast colours fail on many phones.
  • Print at least 2 cm (about 0.8 in) across for scanning at arm's length; larger for posters read from a distance.
  • Keep the payload short. A short URL makes a simpler code that scans faster and from further away.
  • Test the printed code with more than one phone before you print a run.
  • Download SVG when the code will be scaled, so it stays sharp at any size.

Other barcodes and the API

Need a Code 128, EAN, UPC, Data Matrix or PDF417 instead? The barcode generator makes all 38 types. To create QR codes from your own software, see the barcode API documentation.

Frequently asked questions

Is this QR code generator free?

Yes. It is free to use in your browser without an account, there is no watermark, and the codes may be used commercially. To generate QR codes from your own software, create a free account for an API key.

Do the QR codes expire?

No. The code holds your data directly, not a link through our servers, so it keeps working for as long as whatever it points to does.

Which error-correction level should I choose?

Q, the default, suits most printed codes. Choose H if the code may be scratched, smudged or partly covered, and L or M to keep a long payload smaller. Higher levels make a denser code for the same data.

How do I make a Wi-Fi QR code?

Choose the Wi-Fi content type, enter the network name, password and security type, and download the PNG. Most phone cameras offer to join the network when they scan it.

Is my data stored?

No. What you type is sent to our engine to draw the code, held in memory for that request, and not stored.