freesabai

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.

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

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.

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.