QR code generator

Content

QR code

    Options

    The share of the code that can be damaged or hidden while it still reads. Higher means a larger code.

    For print, SVG is best: it stays sharp at any size.

    Have a QR code to read? Decode it

    Transparency

    QR codes are created in your browser, by the scripts listed below. What you type never leaves this page.

    Enforced by your browser
    This page's Content Security Policy allows a single destination, the site's audience measurement (connect-src https://stats.r-no.fr, see below), and forbids any form submission (form-action 'none'), so even a bug could not send what you type anywhere. The SVG and PNG files are made inside the page and handed to your browser directly. You can read the policy at the top of the page source.
    Audience measurement
    Like every page of the site, this one counts its visit with Umami, installed on R-no’s own server (stats.r-no.fr). It receives the address of the page, without parameters or anchor, the site you came from (its domain only), your browser, system, language and screen size, and the country, region and city deduced from your IP address, which is not kept. It never receives what you type, nor the result of the tool. No cookie, nothing stored in your browser; if your browser asks not to be tracked (Do Not Track), nothing is measured. The data is erased after 25 months.
    • /commun/mesure.js: the filter applied before each sending, written for R-no Toolbox. 1.4 kB
      SHA-256 225eec74fd12623d82fc05ee7d222be629ce454d081c129e8d1e249ed37ee716
    • https://stats.r-no.fr/m.js: Umami’s tracker, open source (MIT), served by the measurement server. Its fingerprint is not shown here: it changes with each version of Umami, and you cannot check from your browser that it is the published code. For that part, you have to trust R-no.
    What is stored
    No cookie, and nothing in the address. What you type is never stored, and the form is emptied when you leave the page. Your language is given by the address itself (/en/ or /fr/): nothing is stored to remember it. Like any website, the server records the download of the page and its files in its access logs (IP address, date and time, address requested, browser name). It never receives what you type.
    Code that runs here
    • app.js: the tool itself, written for R-no Toolbox: it formats the content, draws the code and makes the files. Not minified. 14.9 kB
      SHA-256 defdc89fda65ed4929a79552a3636f99257272138a99898acde39a3dd3bde78e
    • qrcodegen.js: the QR Code generator library by Project Nayuki, version 1.8.0, which turns the content into a QR code. MIT License, written in full at the top of the file. Not minified, comments included. 45.8 kB
      SHA-256 6c3972efae2462260258a63ae9b792c18894990f37cb31ee568fa34f036da1e7
    • textes.js: the French messages of the tool, shown by its script (the rest of the French page is written into its HTML when the site is built). It only defines texts, with no logic. 7.1 kB
      SHA-256 e0d52a5cea7e85c5d159a28d93fca5a4df0da9af4f77dc8ca5fa0cc3290233a9
    • /commun/langue.js: the language helper, the same on every page of the site. It reads the language of the page and gives the tool its messages in that language. It stores nothing. 1.6 kB
      SHA-256 80f76f69773ef628d36d09bf8387cfedebda4529210d7120649b6f5603310631
    Where qrcodegen.js comes from
    From the official TypeScript source published by its author on GitHub (tag v1.8.0). TypeScript only removes the type annotations; the code and its comments are unchanged. On every deployment, the file is rebuilt from that source and compared byte for byte with the one served here; the deployment stops if they differ.
    Check it yourself
    Download a file and compare its fingerprint with the one above:
    curl -s https://r-no.fr/qr-code/generator/qrcodegen.js | shasum -a 256
    Limits
    A QR code holds at most 2,953 bytes (level L), and far less at higher levels; accents and emoji take several bytes each. Text is encoded in UTF-8, as modern readers expect; a few very old readers may show accented letters wrongly. How a phone handles Wi-Fi, contact, e-mail and SMS codes depends on its reader; the formats used are the most widely recognised. Check your code with your own phone before printing it.