Free · No sign-up · Your data stays on your device
QR code generator
Make a QR code for a link, some text, your Wi-Fi, PromptPay, a contact card, a phone number, an SMS or an e-mail. Add a logo, style its pattern and colours, put a picture behind it or make it into a SCAN ME, menu or discount sign, then download it as PNG, SVG or PDF. The page checks that it scans. It all happens in your browser: what you type and the pictures you choose are not sent anywhere.
This tool needs JavaScript. If this message stays for more than a few seconds, JavaScript is switched off in your browser or the page did not load completely: switch it on, or reload the page.
Fill in the form and your QR code appears here.
Signs, background pictures and paper sizes cannot be saved as SVG.
Show the text inside the code
Your data stays on your device
The QR code is made by the script that comes with this page, and it runs entirely in your browser. What you type, such as a Wi-Fi password or a PromptPay number, and the logo or picture you choose, are not sent to freesabai or anywhere else, and they are not kept: close the page and it is gone. This page uses no cookies and no visitor statistics, and loads nothing from other websites. Once the page is open, it works even with the internet switched off.
These codes never expire
Everything is stored in the pattern of the code itself, not behind anybody's server, so the code works for as long as it exists. It also means it cannot be changed later: if the link, the Wi-Fi password or the number changes, make a new code.
Checked for scanning
Each time you change the data, the logo or the design, this page reads the code back from the picture you would download, with a separate QR reader (jsQR), and shows the result under the picture. If it cannot be read, it tells you what to try, such as a smaller logo or a darker colour. When you download, the file itself is checked once more. The check runs in your browser like everything else here, but it does not replace a test with a real phone.
A logo in the middle
QR codes repair missing or smudged parts by themselves, which is why a logo can sit on top of one. With a logo, this page sets error correction to H (the highest) and works out how big the logo may be: it may use up at most half of what the code can repair, leaving the other half for smudges and blurry cameras. A big logo may make the pattern a little denser so there is enough to repair with. SVG files keep the logo inside the file as a PNG picture.
A picture behind the code
There are two styles. "Code dots on the picture" turns every module of the code into a small dot on your picture, so the picture shows all through the code; you can set how strong the picture is and how big the dots are. What scanners use to find the code is still drawn whole, and error correction is always H. "Code on top of the picture" puts an ordinary code on a square of its background colour, in a corner or the middle of the picture, keeping the picture's proportions. Both download as PNG, and the picture is never uploaded. The scan check reads the picture at full size and again made small, as a camera sees it from far away; if only the full size reads, it warns you.
Make a sign
Choose a template: SCAN ME, menu sign, discount sign, Wi-Fi sign or scan to pay. Change its title and footer, in Thai or English, choose the colours and a font (Kanit, Sarabun, Mitr or Chakra Petch, under the SIL Open Font License; they come with this page, nothing is loaded from elsewhere), then a size: square for posts and chat, or A6, A5 or A4 portrait for print. Paper sizes also download as a PDF of exactly that size: print it at "actual size" (100%), not "fit to page".
Before you print or share it
- Scan it with a real phone first, with several phones if you can.
- Use a dark colour on a light background, with a clear difference between the two.
- Leave empty space around the code. The downloaded image already has a border: do not crop it off.
- In print, make it at least 2 × 2 cm; codes scanned from a distance, as on a poster, need to be larger.
- PNG is right for chat and social posts, SVG for print and design programs.
PromptPay codes
These follow the Thai QR payment standard (EMVCo) that banking apps in Thailand read. With an amount, the app fills it in; without one, the payer types it. They work with PromptPay registered to a mobile number, a national ID, a tax ID or an e-Wallet.
- The code contains your PromptPay number: anyone who sees the code can read it.
- Before you rely on it, have someone scan it and send a small amount.
- Payers should always check the receiver's name shown in their banking app before confirming.
Problems and ideas
Found a problem, want this tool to do more, or wish there were another tool? Tell us on the feedback page. No sign-up needed.