Free QR Code Generator with Logo and Custom Colours
Create static QR codes for text and URLs with custom colours, shapes and logos, download them as PNG, and learn how to make codes that scan reliably.
Guide: Creating QR Codes That Scan Reliably
A QR code stores text in a square grid of dark and light modules that a phone camera can read in a fraction of a second. It can hold a web address, a short message, contact details, a Wi-Fi hint or any other plain text. The code is generated in your browser from the text you enter, so the content is not sent to us.
The QR codes produced here are static: the text is encoded directly into the image. They never expire and do not depend on any service staying online, but the content cannot be changed after printing. If you need to change it later, encode a URL that you control and update the page it points to.
How to use it
- Type or paste the text or URL you want to encode.
- Optionally adjust the colours, dot and corner ("eye") shapes, margin and error-correction level.
- Add a logo if you like. When you do, use a higher error-correction level so the code still scans with part of it covered.
- Check the live preview, then scan it with your own phone before using it.
- Download the code as a PNG image for documents, posters or slides.
Practical tips
- Contrast: keep dark modules on a light background. Light-on-dark or low-contrast colour pairs fail on many phone cameras.
- Size: for print, make the code at least 2 × 2 cm, and larger if it will be scanned from a distance (about one tenth of the scanning distance).
- Length: shorter content gives a less dense code that scans faster. Use a short URL instead of pasting a long paragraph.
- Error correction: L (7%) gives the smallest code, while H (30%) survives dirt, damage or a centred logo.
More questions
Do these QR codes expire?
No. They are static images with the content encoded inside, so they keep working forever.
Can I track how many people scanned my code?
Not with a static code. Tracking needs a redirect URL from an analytics service, which you can encode like any other link.
Why does my code not scan?
The most common causes are low contrast, too small a print size, a logo covering too much with low error correction, or too little quiet margin around the code.