Free QR Code Generator with Logo and Wi-Fi

Enter a link, text or Wi-Fi details to create a QR code on your device. You can also encode a public URL to an image, PDF or video; add colors, a logo and frame, then download PNG, JPEG or SVG.

Brand QR Studio

Create a QR code in your own style

Live preview · PNG, JPEG, SVG · No upload

Private on-device
01

QR content

02

Customize design

Original templates

Choose a template, then fine-tune each element.

03

Output quality

How To Create A Branded QR Code

01

Choose A Type And Enter Content

Enter a link, text or Wi-Fi details. For images, PDFs and videos, use a public file URL rather than embedding the file in the QR code.

What does your QR code contain?

Link, text and Wi-Fi

A web address opens a page; text appears in the scanner; Wi-Fi encodes the network name, security type and password. Check spelling and destination before downloading. Anyone who scans a Wi-Fi code may see its password, so share it with care.

Images, PDFs and videos

These tabs encode a public URL to the file or video page. The file itself is not stored in the QR code. The destination must remain available for others to open it.

Design a QR code that can be read

Colors, logo and frame

Choose a dark code on a lighter background and leave a clear margin around the matrix. Adding a logo switches error correction to H, but a large logo, low contrast or a busy frame can still prevent scanning.

Scan the final export

Download the design, then scan that exact file on a phone before printing or sharing. The built-in test scan runs only when the browser supports BarcodeDetector; a success message there does not guarantee every device will read the code.

Download and use your QR code

PNG, JPEG or SVG

Choose PNG or JPEG for a ready-to-use image, or SVG for scalable QR shapes. Uploaded PNG/JPEG logos remain raster images inside the SVG; some decorative frame assets may be referenced if they cannot be embedded.

Static content

The QR code stores the value entered when it was generated. Changing a URL or Wi-Fi password later requires a new code. A QR code to an external file depends on that link continuing to work.

Where is the QR code created?

QR generation and uploaded logo or frame image processing happen in your browser. This tool does not upload that content to KitoTool. Holiday frame graphics are loaded from this website. Review sensitive text or Wi-Fi details before sharing the finished image.

Scan a QR code to check its content

Comments & feedback

Rate this tool

Loading ratings…

Write a commentNo account needed

Do not share passwords, sensitive information or the contents of files you are processing.

Reviewed before posting. Email stays private.

Embed this tool on your websiteFree · Copy once, receive tool updates automatically

Paste the iframe into HTML, WordPress or any platform that supports embeds. The tool runs in the visitor’s browser; adjust its height and theme as needed.

View the embed guide and supported platforms →

<div style="max-width:900px">
  <iframe data-kitotool-embed src="https://kitotool.com/embed/en/qr-code-generator/" title="QR Code Generator — KitoTool" width="100%" height="1500" style="display:block;width:100%;border:1px solid #dbe3ee;border-radius:12px" loading="lazy" referrerpolicy="strict-origin-when-cross-origin"></iframe>
  <p style="margin:6px 2px 0;text-align:right;font:12px/1.5 system-ui,sans-serif;color:#64748b">Free tool by <a href="https://kitotool.com/en/qr-code-generator/" target="_blank" rel="nofollow noopener noreferrer" style="color:#2359d4;text-decoration:underline">KitoTool</a></p>
</div>

The code includes a visible credit below the iframe; its link uses nofollow for a widely distributed widget.

Optional: automatically resize the iframe

Add this script once to the page containing the iframe.

<script>
(function(){var origin="https://kitotool.com";function frames(){return document.querySelectorAll("iframe[data-kitotool-embed]")}function measure(f){if(f.contentWindow&&new URL(f.src).origin===origin)f.contentWindow.postMessage({type:"kitotool:measure"},origin)}window.addEventListener("message",function(e){if(e.origin!==origin||!e.data||e.data.type!=="kitotool:resize"||!Number.isFinite(e.data.height))return;frames().forEach(function(f){if(f.contentWindow===e.source&&new URL(f.src).origin===origin)f.style.height=Math.max(320,Math.min(12000,Math.ceil(e.data.height)))+"px";});});function connect(){frames().forEach(function(f){f.addEventListener("load",function(){measure(f)});measure(f)})}if(document.readyState==="loading")document.addEventListener("DOMContentLoaded",connect,{once:true});else connect()})();
</script>