๐Ÿ”— Custom URL QR Code Generator

QR Codes With Custom URLs
UTM Tracking & More

Build QR codes with fully custom URLs โ€” add UTM campaign parameters, URL anchors, query strings, and affiliate tags. Track every scan in Google Analytics and make data-driven marketing decisions.

๐Ÿ“Š Google Analytics ๐Ÿ“ˆ UTM Tracking #๏ธโƒฃ URL Anchors ๐Ÿ”‘ Custom Params ๐Ÿ“‹ Any URL
๐Ÿ”— URL Builder CUSTOM URL QR
Scroll to this section. No # needed.
Custom Query Parameters
Built URL
๐Ÿ“ Click or drag to upload logo
PNG, JPG, SVG ยท max 500 KB
Logo preview
Custom URL QR โ€”
๐Ÿ’ก Tracking tips
Use utm_source=print, utm_medium=qr_code for offline QR codes
Each print location gets a unique utm_content value
Use Level H with logo overlay for branded codes
Download SVG for any print size โ€” scales perfectly
Test scan before printing to confirm tracking works

๐Ÿ“Š QR Code Campaign Tracking by the Numbers

94%
of marketers say campaign tracking is essential to justify marketing spend
11B+
QR code scans projected globally in 2025 โ€” growing 40% year on year
3ร—
more campaign insight when UTM-tracked QR codes are used vs. plain QR
67%
of marketers report improved ROI measurement after adding UTM QR codes

๐Ÿ“– How to Create a Custom URL QR Code

Choose Your Mode
Select URL Builder for custom parameters, UTM Tracker for Google Analytics campaign tracking, or Raw URL if you already have a complete URL ready to encode.
Enter Base URL
Paste your destination URL โ€” your landing page, product page, or any website. Make sure it's a live, publicly accessible page before printing.
Add Parameters
In UTM mode: fill in source, medium, and campaign. In Builder mode: add custom key=value pairs and an optional anchor to scroll to a specific section.
Preview the Full URL
The "Built URL" preview shows exactly what will be encoded. Review it before generating โ€” this is what Google Analytics will receive when someone scans.
Customise & Generate
Apply brand colours, add your logo, set QR size. Click Generate โ€” your custom URL QR code is ready instantly.
Deploy & Track
Download SVG for print or PNG for digital. Deploy and track results in Google Analytics โ†’ Acquisition โ†’ Campaigns to see exactly which QR placement drives the most scans.

๐ŸŽฏ 8 Campaign Uses for Custom URL QR Codes

Print Ad Tracking
Give each print ad placement (magazine A, magazine B, flyer, poster) a unique utm_content. Know exactly which publication drives the most web traffic.
Product Packaging
Track which product SKU drives the most website visits. Use utm_content=sku_001 vs sku_002 to see which packaging's QR gets scanned more.
Event Campaigns
Each event gets a unique UTM campaign. Compare scan volume from conference_a vs conference_b to prioritise future event sponsorships.
Email Campaign QRs
Embed QR codes in email newsletters. utm_source=email_newsletter + utm_medium=qr_code tracks email-to-scan conversions in Analytics.
In-Store vs Online
Use separate utm_source values for in-store QRs (utm_source=store_ny) vs online (utm_source=instagram). Measure offline-to-digital conversion.
Deep Link to Page Section
Add an anchor (#pricing, #contact, #menu) to take scanners directly to the most relevant section of your page โ€” reducing bounce rates.
Affiliate & Partner QRs
Add affiliate_id=XXXXX as a custom parameter. Each partner or affiliate gets a unique QR that automatically attributes traffic and sales.
A/B Test QR Placements
Test two different QR placements (table_left vs table_right) with separate utm_content values. Find the highest-scan placement data-driven.

๐Ÿš€ 6 Benefits of Custom URL QR Codes

Full Campaign Visibility
UTM parameters let Google Analytics show you exactly how many people scanned your QR code, where the code was placed, and which campaign it belonged to.
Deep-Link Precision
URL anchors take scanners directly to the most relevant section of your page โ€” pricing, contact form, specific product โ€” reducing drop-off from irrelevant landing pages.
Affiliate & Partner Tracking
Custom query parameters encode affiliate IDs, referral codes, and partner tags โ€” making QR-driven affiliate attribution automatic and accurate.
A/B Test QR Placements
Generate two QR codes with different utm_content values for two placements. Measure which location drives more scans and higher conversion.
Reusable Across Campaigns
Change UTM values for each campaign cycle while keeping the same base URL. The tool lets you build new tracked URLs instantly without starting from scratch.
Prove Print ROI
The perennial challenge: proving print advertising works. UTM QR codes give you hard data on scans, sessions, and conversions from every printed piece.

๐Ÿ”— Related QR Code Tools

๐Ÿ“– Complete Guide to Custom URL QR Codes

A custom URL QR code goes beyond simply encoding a web address. By embedding UTM parameters, URL anchors, affiliate tags, and custom query strings, a custom URL QR code becomes a powerful analytics tool that tells you exactly where your traffic comes from, what campaigns are working, and which physical placements drive the most engagement.

Understanding UTM Parameters for QR Codes

UTM parameters are five tags you can append to any URL: utm_source (where the traffic comes from, e.g. "print_flyer"), utm_medium (the channel, e.g. "qr_code"), utm_campaign (the campaign name, e.g. "summer_sale_2025"), utm_term (keyword tracking, less relevant for QR), and utm_content (differentiates between two versions, e.g. "table_left" vs "table_right"). When someone scans the QR code and visits your site, Google Analytics logs all of these tags โ€” you can see exactly how many sessions came from each QR placement.

URL Anchors for Deep Linking

A URL anchor (the #section at the end of a URL) tells the browser to scroll directly to a specific section of a page. If you're linking to a long landing page, adding #pricing sends the scanner straight to the pricing section, #contact straight to the contact form, and #menu straight to the restaurant menu. This dramatically reduces bounce rate for QR-driven traffic because visitors immediately see the most relevant content.

Custom Parameters for Affiliate and Partner Tracking

Beyond UTM parameters, any key=value pair can be added to a URL. Common uses: affiliate_id=123 for affiliate tracking, ref=partner_name for referral attribution, variant=blue for product configuration, lang=en for language preference, or any parameter your website, CRM, or e-commerce platform recognises. Use the Custom Parameters section to add as many parameters as needed.

Pro Tips for UTM QR Campaigns

Frequently Asked Questions

UTM parameters are tags (utm_source, utm_medium, utm_campaign, utm_content, utm_term) appended to a URL. When someone scans the QR code and visits your site, Google Analytics records these tags as campaign data. This lets you see exactly how many sessions came from each QR code, which campaign it belonged to, and which placement performed best.
In GA4: Reports โ†’ Acquisition โ†’ Traffic acquisition โ†’ filter by Session source/medium containing "qr_code". In Universal Analytics: Acquisition โ†’ Campaigns โ†’ All campaigns. You'll see sessions, bounce rate, and conversions from each UTM-tagged QR code.
UTM Tracker mode has pre-built fields specifically for the five standard UTM parameters, plus quick-select dropdowns for common values. URL Builder mode lets you add any custom key=value parameters (affiliate IDs, referral codes, product variants) plus an anchor. Use UTM Tracker for Google Analytics campaigns, URL Builder for custom parameters.
A URL anchor (the #section part) makes the browser scroll to a specific named section of a page. For example, yourdomain.com/about#team scrolls directly to the team section. This is valuable for QR codes โ€” instead of dropping scanners at the top of a long page, send them directly to the most relevant content.
No. The QR code image never expires โ€” it works as long as the destination URL remains live. If you need to change the landing page after printing, use a URL shortener as the QR destination, then update the redirect. The same QR code always points wherever the redirect sends it.
No. All URL building, parameter encoding, and QR code generation happens entirely in your browser. Your URLs, UTM parameters, and custom data never leave your device and are never stored on our servers.
Yes. In URL Builder mode, add your affiliate parameter as a custom key=value pair (e.g. key: affiliate_id, value: your_code). The generator appends this to the URL โ€” when scanned, your affiliate platform registers the referral automatically.

${label||'Custom URL QR Code'} ยท ToolsBox.org

`);win.document.close();} function resetAll(){['b-base','b-anchor','b-label','u-base','u-source','u-medium','u-campaign','u-term','u-content','u-anchor','r-url'].forEach(id=>{const el=document.getElementById(id);if(el)el.value='';});document.getElementById('params-container').innerHTML='';document.getElementById('qr-out').innerHTML='';document.getElementById('qm-info').textContent='โ€”';document.getElementById('qm-ready').textContent='';document.getElementById('url-preview').style.display='none';rmLogo();} function toggleCust(){const b=document.getElementById('cust-body');const hd=document.querySelector('.cust-hd');const h=b.classList.toggle('hide');hd.setAttribute('aria-expanded',!h);document.querySelector('.cust-arr').textContent=h?'โ–พ':'โ–ด';} function syncHex(cid,hid){document.getElementById(hid).value=document.getElementById(cid).value;} function syncCol(hid,cid){const v=document.getElementById(hid).value;if(/^#[0-9a-fA-F]{6}$/.test(v))document.getElementById(cid).value=v;} function updSize(){document.getElementById('sz-label').textContent=document.getElementById('sz-range').value+'ร—'+document.getElementById('sz-range').value;} function setEC(ec,btn){EC=ec;document.querySelectorAll('.ec-p').forEach(p=>{p.classList.remove('on');p.setAttribute('aria-pressed','false');});btn.classList.add('on');btn.setAttribute('aria-pressed','true');} function preset(fg,bg){document.getElementById('fg-col').value=fg;document.getElementById('fg-hex').value=fg;document.getElementById('bg-col').value=bg;document.getElementById('bg-hex').value=bg;} function handleLogo(inp){const f=inp.files[0];if(!f)return;if(f.size>512000){showErr('Logo must be under 500 KB');return;}const reader=new FileReader();reader.onload=e=>{currentLogoBase64=e.target.result;document.getElementById('logo-img').src=currentLogoBase64;document.getElementById('logo-name').textContent=f.name;document.getElementById('logo-prev').style.display='flex';setEC('H',document.querySelector('.ec-p[data-ec="H"]'));autoGenerate();};reader.readAsDataURL(f);} function rmLogo(){currentLogoBase64=null;document.getElementById('logo-inp').value='';document.getElementById('logo-prev').style.display='none';document.getElementById('logo-img').src='';autoGenerate();} function showErr(m){const e=document.getElementById('err-box');e.textContent='โš ๏ธ '+m;e.classList.add('show');setTimeout(()=>e.classList.remove('show'),5000);} function hideErr(){document.getElementById('err-box').classList.remove('show');} function faq(el){const p=el.parentElement;const open=p.classList.contains('open');document.querySelectorAll('.fi').forEach(x=>{x.classList.remove('open');x.querySelector('.fq').setAttribute('aria-expanded','false');});if(!open){p.classList.add('open');el.setAttribute('aria-expanded','true');}} (function(){const h=document.getElementById('ham'),m=document.getElementById('mob-menu');h.addEventListener('click',()=>{const o=m.classList.toggle('open');h.setAttribute('aria-expanded',o);const s=h.querySelectorAll('span');if(o){s[0].style.transform='rotate(45deg) translate(4px,4px)';s[1].style.opacity='0';s[2].style.transform='rotate(-45deg) translate(4px,-4px)';}else{s.forEach(x=>{x.style.transform='';x.style.opacity='';})}});document.addEventListener('click',e=>{if(!h.contains(e.target)&&!m.contains(e.target)){m.classList.remove('open');h.setAttribute('aria-expanded','false');h.querySelectorAll('span').forEach(x=>{x.style.transform='';x.style.opacity='';})}});})(); (function(){const drop=document.getElementById('logo-drop');['dragenter','dragover'].forEach(ev=>drop.addEventListener(ev,e=>{e.preventDefault();drop.classList.add('drag-over');}));['dragleave','drop'].forEach(ev=>drop.addEventListener(ev,e=>{e.preventDefault();drop.classList.remove('drag-over');}));drop.addEventListener('drop',e=>{e.preventDefault();const f=e.dataTransfer.files[0];if(f&&f.type.startsWith('image/')){const dt=new DataTransfer();dt.items.add(f);document.getElementById('logo-inp').files=dt.files;handleLogo(document.getElementById('logo-inp'));}});drop.addEventListener('keydown',e=>{if(e.key==='Enter'||e.key===' '){e.preventDefault();document.getElementById('logo-inp').click();}});})(); window.addEventListener('load',()=>{ document.getElementById('b-base').value='https://mytoolsbox.org'; document.getElementById('b-label').value='Marketing Campaign QR'; addParam(); // start with one param row document.getElementById('pk-1').value='ref'; document.getElementById('pv-1').value='summer_print'; updatePreview(); generateQR(); });