Tool / Links

QR Code Generator

Use Kitly QR Code Generator to turn links, text, contact details, Wi-Fi notes, and short messages into downloadable QR codes locally in your browser.

QR code preview
Enter text or a URL to generate a QR code.

How to create a reliable QR code

A QR code should be easy to scan in the size, lighting, and material where people will actually use it.

  1. Enter the final content

    Paste the exact URL or text. For links, open the destination separately and check spelling, HTTPS, and mobile behavior first.

  2. Choose a scannable design

    Keep strong contrast, preserve the quiet-zone margin, and select an error-correction level suited to the design.

  3. Download and test

    Save PNG for ordinary digital use or SVG for scalable print work, then scan the exported file with more than one device before publishing.

QR codes for print and screens

  • Dark modules on a light background usually scan more reliably than low-contrast or inverted color combinations.
  • A longer payload creates a denser code, so shorten unnecessary tracking text and leave enough physical size.
  • Test from the expected viewing distance and under the same lighting, screen brightness, or print material as the final placement.

Before you publish

  • The encoded content is stored in the image itself; anyone who scans it can read that content.
  • A static QR code cannot change its destination after download unless it points to a redirect you control.
  • Decorative cropping, stretching, low resolution, glare, and insufficient margin can make a valid code difficult to scan.

Practical guidance

Use the files below to compare a short URL with a longer sentence, and to see what a missing quiet zone or a low-contrast pair does before you publish. The images were generated with qrcode 1.5.4, the same package and option fields this page uses.

The generator needs JavaScript so the browser can build the PNG and SVG from the text you type. The examples, setting notes, and limits on this page stay readable when JavaScript is unavailable.

Checked QR files

Each successful file was decoded with jsQR 1.4.0. SVG files were rasterized to 640 px before that check. These are software results, not phone-camera or print tests.

Short URL with a four-module margin

A 21-character HTTPS URL at the page's initial settings produces a version 2 symbol. The PNG and the SVG both decoded to that URL.

Text or URL

https://kitlyapp.com/
Settings
Size 320 px
Margin 4 modules
Error correction M
Foreground #171313
Background #ffffff

Decoded payload

https://kitlyapp.com/

What to check

The image stores this URL and nothing else. There are 25 × 25 modules (version 2). The PNG is 1,976 bytes and the SVG is 1,246 bytes. Opening the code sends a scanner to https://kitlyapp.com/ for as long as that address still serves the page you expect. It is not a Kitly short link, so there is no second hop you can retarget.

Caveats

  • A software decode does not prove the code will scan from a poster, a glossy label, or a dim screen.
  • Anyone who obtains the image can read the URL.

Example files

Longer sentence at level Q

A 114-character sentence needs a denser symbol. At level Q it is version 9, and both files decoded to the full sentence.

Text or URL

Kitly QR example: Verify the destination, keep strong contrast, and test the final printed size before publishing.
Settings
Size 640 px
Margin 4 modules
Error correction Q
Foreground #171313
Background #ffffff

Decoded payload

Kitly QR example: Verify the destination, keep strong contrast, and test the final printed size before publishing.

What to check

This symbol is 53 × 53 modules. The same sentence at level M is version 7, 45 × 45 modules, so the higher correction level adds density as well as the longer text. The published PNG is 7,161 bytes and the SVG is 4,610 bytes. Give a dense code more physical size when you print it. The qrcode package describes level Q as about 25% recovery and level M as about 15%.

Caveats

  • The version 7, level M alternative was measured and not published as a file.
  • The same software decoder and the same 640 px SVG raster were used. This is not a camera test.

Example files

Same short URL with no quiet zone

Margin 0 still decoded in this check, but the modules sit on the edge of the file. That is a print trade-off, not a recommended setting.

Text or URL

https://kitlyapp.com/
Settings
Size 320 px
Margin 0 modules
Error correction M
Foreground #171313
Background #ffffff

Decoded payload

https://kitlyapp.com/

What to check

jsQR read both the 1,928-byte PNG and the 1,240-byte SVG. DENSO WAVE requires a four-module quiet zone on every side of a printed symbol. This page allows 0–8 modules, so 0 is a real control value. It worked here because the file background is white and nothing else is drawn around the modules. On a photo, a dark card, or a tight crop, the missing margin is the scanner's problem.

Caveats

  • Do not treat this successful decode as permission to print with margin 0.
  • The page's initial margin is 4 modules, which matches the four-module quiet zone DENSO WAVE specifies.

Example files

Low contrast that this decoder could not read

The same short URL, margin, and correction level produced files, but jsQR recovered no payload when the modules were #c4c4c4 on white.

Text or URL

https://kitlyapp.com/
Settings
Size 320 px
Margin 4 modules
Error correction M
Foreground #c4c4c4
Background #ffffff

Decoded payload

No payload recovered.

What to check

The generator still downloads these files. The PNG is 1,901 bytes and the SVG is 1,246 bytes. The failure is the color pair: the first example uses #171313 on #ffffff and decoded. The color controls accept any value the browser offers. They do not reject a pale foreground.

Caveats

  • A different camera or decoder might read this pair, or might fail on a pair this check accepted. Scan the file you will actually publish.
  • Dark modules on a light background are the reliable choice for print and screens.

Example files

Level H rejects 1,274 lowercase a's

One character past the library's level H byte-mode maximum never becomes an image.

Text or URL

The lowercase letter a, repeated 1,274 times. The linked file is that exact input.
Settings
Error correction H
Size, margin, and colors Not applied. Generation throws first.

Observed result

Library: The amount of data is too big to be stored in a QR Code. Page: Could not generate a QR code for this content.

What to check

qrcode 1.5.4 accepted 1,273 lowercase a's at level H and rejected 1,274. That matches the package's published byte-mode maximum of 1,273 characters at level H. Uppercase letters can use a more compact mode and fit more than 1,274 characters, so this is not a universal character budget. The page hides the library sentence and shows one localized error for every generation failure.

Caveats

  • The throw was observed with QRCode.toDataURL in Node using this repository's qrcode 1.5.4. The component calls that method and maps any throw to the page sentence.
  • Shorten the payload, or drop to a lower correction level, when the content is data rather than damage resistance.

Example files

Settings this page actually offers

The controls are size, margin, error correction, and two colors. There is no logo overlay, dot-shape editor, or separate Wi-Fi form.

Size, 160–1024 px

Use when: You need a raster PNG at a known pixel width. The slider moves in steps of 32 and starts at 320.

Trade-offs: A larger PNG is a bigger file. SVG stays sharp when a layout scales it; the PNG does not.

Margin, 0–8 modules

Use when: Use 4 modules for print. That is the page default and the four-module quiet zone DENSO WAVE requires on every side.

Trade-offs: 0 is allowed and this decoder still read a high-contrast sample, but a crop or a patterned background can make that file fail. 8 adds empty space.

Error correction L, M, Q, or H

Use when: Start at M. Move to Q or H when the print may be scratched or partly covered. Use L only for a clean surface when you need the smallest symbol.

Trade-offs: The package documents about 7%, 15%, 25%, and 30% recovery for L, M, Q, and H. A higher level makes the same text use more modules.

Foreground and background colors

Use when: Keep modules dark and the background light, as in #171313 on #ffffff.

Trade-offs: #c4c4c4 on #ffffff still downloads, and jsQR could not read that pair. Inverted or pale pairs are not blocked by the form.

Final URL versus a redirect

Use when: Encode the final HTTPS URL when the address itself should stay in the image. Encode a redirect only when you control that redirect and can change its target later.

Trade-offs: A Kitly short link answers with a 302, but this site has no edit or expiry control. Disabling a Kitly short link returns 410. It does not point the old image at a new page. Reprint a QR code to change a final URL.

When the code will not generate or will not scan

Problem: The preview is empty and the downloads stay off.

Likely cause: The text box is empty or only whitespace. The page trims the text and clears both files.

What to do: Enter the URL or sentence you want encoded. The empty state reads: Enter text or a URL to generate a QR code.

Problem: The page says it could not generate a QR code.

Likely cause: The library rejected the payload for the selected correction level. A 1,274-character string of lowercase a's does this at level H.

What to do: Shorten the text or choose L, M, or Q. The page uses one sentence for every failure: Could not generate a QR code for this content.

Problem: A phone cannot read a file that looks finished.

Likely cause: The export may be pale, cropped, stretched, glare-covered, or physically too small. Low contrast failed this software check even with a 4-module margin.

What to do: Export again with margin 4 and a dark foreground on white, then scan that file at the real size and lighting before you publish it.

Relevant sources

Quiet-zone and recovery figures below come from the QR Code developer and from the library this page runs.

Frequently asked questions

Does the QR code generator upload my text or URL?

No. QR code generation runs in your browser, so the text or URL you enter is not sent to Kitly servers.

What can I put inside a QR code?

You can encode URLs, plain text, contact details, Wi-Fi connection strings, email links, phone numbers, and other short text formats that QR scanners understand.

Should I download PNG or SVG?

Use PNG for quick sharing and most documents. Use SVG when you need a crisp, scalable QR code for print layouts, design tools, or larger artwork.

Can I change where a printed QR code goes?

Only if the image encodes a redirect you control and can update. A Kitly short link redirects with 302, but Kitly does not let you edit or expire it. Disabling that link makes visitors receive a 410 response instead of a new destination. To change a final URL, create a new code and replace the printed image.

Which QR options does this page support?

Size from 160 to 1024 pixels in steps of 32, margin from 0 to 8 modules, error correction L, M, Q, or H, and a foreground and background color. Downloads are PNG and SVG of that static payload.