QR Editor online

Code

Export

Read a QR code

Starting the camera…

The camera image is read in your browser only - nothing is recorded or sent.

My documents

Click a document to open it. They are stored only in this browser - nothing is uploaded. Clearing the browser's site data removes them, so download the ones you want to keep.

AI Assistant

Any AI can work with you - ChatGPT, Claude, Gemini, Copilot.

  1. Click Copy prompt.
  2. Paste it into your AI and say what the code should hold or how it should look.
The AI should

The QR document travels in the link after the “#”, which no server sees. What you paste into your AI is handled by its provider.

Save to your server

The editor can send each saved version to your own server (a webhook), so your work is kept where you want it. Nothing is sent until you enter an address here.

What your server receives

A POST request with JSON (your server must allow CORS from https://qr.giit.ch):

{ "editor": "qr", "event": "save", "id": "…", "name": "Guest WiFi",
  "content": "color: #1d2b53\n---\nWIFI:T:WPA;S:Guest;P:sunny-day-42;;",
  "updated": "2026-01-15T09:30:00.000Z" }
Embed the editor in your website
<iframe src="https://qr.giit.ch/?embed=1" allow="clipboard-write; camera" style="width:100%;height:80vh;border:0"></iframe>
<script>
const frame = document.querySelector('iframe');
addEventListener('message', e => {
  if (e.origin !== 'https://qr.giit.ch' || e.source !== frame.contentWindow) return;
  if (e.data.type === 'qreditor:ready')
    frame.contentWindow.postMessage({ type: 'qreditor:load', name: 'Shop',
      content: 'https://example.com/shop' }, 'https://qr.giit.ch');
  if (e.data.type === 'qreditor:save') saveOnYourServer(e.data.content);
});
</script>

Also possible: ?src=<URL of a .qr file> opens a file, &webhook=<URL> saves this document there. The editor can also open in a window of its own (?embed=window), and your page can hand it its own AI prompt and a session key so the AI sends its result to your server (qreditor:ai, qreditor:key-request) - see "Use the editor on your own website" below the editor. Details are in llms.txt.

Help

How it works

  1. Choose what the code holds under New or in the Content tab: a link, WiFi, a contact, an event, a payment … The form writes the content in the form phones read.
  2. Design it in the Design tab: colors and gradient, the shape of the modules and of the three eyes, a logo, a caption and a frame.
  3. The code on the left is the whole QR document: design lines key: value, a line ---, then the content exactly as it goes into the code. You can type there too; every change is one step for Undo.
  4. Check: after every change the editor reads the code back - normal, small and blurred. The badge above the code says whether it scans; the Check tab shows contrast, quiet zone, the logo against the error correction and the print size.
  5. Click the caption under the code to change it right there.
  6. Export makes SVG, PDF and EPS (vectors for print), PNG, JPEG or WebP at any size, and many codes at once from a table: write {{column}} in the content, paste the table, download a ZIP or one PDF.
  7. Read a code: open, drop or paste a picture, or click Scan for the camera. The content becomes a new document.

Keyboard shortcuts

Ctrl + Z / Y
Undo / redo
Ctrl + S
Save (download SVG, or to your server)
Ctrl + E
Export
Ctrl + O
My documents
Ctrl + V
Paste a picture with a QR code to read it
Alt + Z
Wrap long lines in the code

Free QR codes that never expire - designed, checked and private

The QR Editor makes QR codes for links, WiFi, contacts, events, emails, text messages, places and payments. You design them with colors, gradients, shapes, a logo and a caption, and the editor reads every code back to make sure it scans - before you print it. Export SVG, PDF and EPS for print or PNG at any size.

The codes are static: the content is in the code itself, not behind a redirect that stops working when a trial ends. There is no sign-up, no advertising and no scan limit, and everything happens in your browser - nothing you type or scan is uploaded.

What the QR Editor can do

Twelve kinds of content

Links, text, WiFi (WPA, WEP, open, hidden), contacts as vCard or MeCard, email, SMS, phone, location, calendar events, Bitcoin and Ethereum, SEPA payments (EPC GiroCode) and the Swiss QR bill - each with a form and checks.

Design

Colors, linear and radial gradients, transparent background, seven module shapes, four eye frames and five eye balls in their own color, a logo from built-in symbols or your picture, caption and frame.

Checked by scanning

Every code is read back in the browser, normal, small and blurred. Contrast, quiet zone and the logo against the error correction are checked, and the print size follows from the scanning distance.

Export for print and web

SVG, PDF and EPS as vectors with gradients and logo; PNG up to 8192 pixels with the dpi written in, JPEG and WebP. Free, without sign-up.

Many codes at once

Write placeholders like {{url}} in the content, paste a table, and download a ZIP of SVG or PNG files or one PDF with a code per page.

Read QR codes

Open, drop or paste a picture, or scan with the camera - also light codes on dark backgrounds. The content becomes a code you can change.

Why static codes

Many "free" QR generators make dynamic codes: the code holds a short link to their server, which forwards to your address. When the trial ends or a scan limit is reached, they switch the forwarding off or show ads first - and every printed code stops working. A static code holds the address, the WiFi password or the contact itself, so it keeps working without anyone in between. The QR Editor makes only static codes and warns when the content is a link shortener.

How it works

  1. Choose - pick a kind of code under "New" and fill in the form, or type the content.
  2. Design and check - change colors, shapes, logo and caption; the badge above the code shows whether it still scans.
  3. Export - download SVG, PDF, EPS or PNG, or make many codes from a table.

Use the editor on your own website

Any https page (and localhost) can embed the editor with an <iframe> and ?embed=1 - no sign-up, no key. Embedded, the editor hides this text and shows a Save button. Add camera to the iframe's allow if the user should scan codes in it.

1. Open a file from a link, save to your server

src= opens a .qr file (your server must allow CORS), webhook= makes "Save" (Ctrl+S) send the QR document to that address. Add &auto to save after every change.

<iframe src="https://qr.giit.ch/?embed=1&src=https://your-site.com/codes/shop.qr&webhook=https://your-site.com/save.php"
        allow="clipboard-write; camera" style="width:100%;height:800px;border:0"></iframe>

The webhook gets a POST with JSON { editor: "qr", event: "save", id, name, content, updated }; content is the QR document (design lines, ---, the content).

2. Your page holds the document (postMessage)

The editor says qreditor:ready, your page answers with qreditor:load, the editor reports qreditor:loaded, qreditor:change on real edits and qreditor:save when the user saves. Your page may send qreditor:get (the current state) or qreditor:save (press Save). A plain content without design lines is a valid document.

<iframe id="ed" src="https://qr.giit.ch/?embed=1" allow="clipboard-write; camera" style="width:100%;height:800px;border:0"></iframe>
<script>
const ed = document.getElementById('ed');
const ORIGIN = 'https://qr.giit.ch';
addEventListener('message', e => {
  if (e.source !== ed.contentWindow || e.origin !== ORIGIN) return;
  const m = e.data;
  if (m.type === 'qreditor:ready')
    ed.contentWindow.postMessage({ type: 'qreditor:load', name: 'Table 12',
      content: 'color: #1d2b53\ncaption: Table 12\n---\nhttps://example.com/menu?table=12' }, ORIGIN);
  if (m.type === 'qreditor:save') saveOnYourServer(m.name, m.content);
});
</script>

3. In a window of its own, and AI through your server

window.open("https://qr.giit.ch/?embed=window", "qreditor-17") opens the full editor in its own window with the same messages. Your page can also hand the editor its own AI prompt, an https address on your site and one key for this editor session (ai: { label, prompt, endpoint, key } in qreditor:load, or qreditor:ai); the AI then posts its result there. The editor never sends the key itself and never stores it.

Show a code read-only (viewer)

?viewer=1 shows only the finished code with Download and Export: nothing can be changed and nothing is stored. The document comes from a link (#b64=, #qr=, ?src=), from your page with qreditor:load, or by POST to post.php (field content or b64, optionally name).

The whole protocol is in llms.txt. The other giit editors work the same way with their own prefix - editors.giit.ch.

Frequently asked questions

Do my QR codes expire?

No. The QR Editor makes static codes: the link, WiFi password or contact is in the code itself, not behind a redirect on our server. They work as long as the content is valid - without account, subscription or scan limit.

Is it really free?

Yes. Every content type, every design option, SVG, PDF and EPS export, the scan check and making many codes from a table are free, without sign-up, ads or watermark.

Is my data sent to a server?

No. Codes are made, checked and exported in your browser. Pictures and the camera image you scan are read in the browser too and are never uploaded.

Will my QR code with a logo still scan?

The editor tells you. It compares the part of the code the logo hides with what the error correction can repair, and it reads the finished code back - normal, small and blurred. If it does not scan reliably, you see it before you print.

Which file format should I use for printing?

SVG, PDF or EPS: they are vectors and stay sharp at any size, with gradients and logo. For a picture, PNG with the size in millimetres and 300 dpi.

Can I make a Swiss QR bill or a SEPA payment code?

Yes. The forms check the IBAN, the QR-IBAN with its QR reference, the creditor reference (RF) and every field length. The Swiss QR bill is drawn with the Swiss cross and error correction M, as the standard requires.

Can it read QR codes?

Yes. Open, drop or paste a picture, or use the camera with Scan. The content becomes a new code you can change.

How big must a printed QR code be?

About a tenth of the scanning distance: 2 cm for 20 cm, 10 cm for one metre. The Check tab calculates it and warns when one module gets smaller than 0.4 mm.