𝕏 Twitter / X QR Code Generator

Grow Your Twitter / X
With One Scan

Create a QR code that opens your Twitter / X profile, a specific tweet, or a trending hashtag. Perfect for event badges, merch, posters, and marketing materials. 100% free, no sign‑up.

👤 Profile 🐦 Tweet # Hashtag 📱 X App
𝕏 Twitter / X link details TWITTER / X
How to get your profile link: Enter your handle (e.g. @username or just username). You can also paste your full Twitter/X profile URL.
Enter just your handle (e.g. username or @username) or paste your full Twitter/X profile URL.
📁 Click or drag to upload logo
PNG, JPG, SVG · max 500 KB
Logo preview
Twitter / X QR Code
💡 Quick tips
Enter handle with or without @ — both work
Paste full tweet URL for the Tweet mode
Use Level H error correction when adding a logo
Download SVG for print at any size
Test on iPhone & Android before printing

📊 Why Twitter / X QR Codes Are Powerful

500M+
monthly active users on X — a massive audience for your content
63%
of X users follow brands and businesses — your QR is a direct connection
4.2×
higher engagement when QR codes are used in marketing materials vs. text links
100%
private — your handle never leaves your device

📖 How to Create Your Twitter / X QR Code in 4 Steps

Choose Your Mode
Select Profile, Tweet, or Hashtag mode — depending on what you want to link to.
Enter Your Twitter Info
Type your handle (with or without @), paste a tweet URL, or enter a hashtag without the # symbol.
Generate and Customise
Click Generate — your QR appears instantly. Change colours, add your logo, adjust size.
Download and Display
Download as PNG for digital, SVG for print. Place on merch, event badges, posters, or business cards.
Test Before Bulk Printing
Scan with both iPhone and Android to ensure the link opens the correct profile, tweet, or hashtag.
Track Your Growth
Monitor your follower count and engagement to measure the impact of your QR code campaign.

💼 Where to Use Your Twitter / X QR Code

Event Signage
Display at talks and meetups so attendees follow you instantly.
Merch & Apparel
Add your Twitter QR to t-shirts, tote bags, and stickers.
Print & Press Kits
Link journalists directly to your official X account.
Email Signatures
Add a small QR code to your email footer for mobile viewers.
Business Cards
Include a QR code on your card to connect instantly on X.
Marketing Materials
Brochures, flyers and banners with scan‑to‑follow QR codes.
Trade Shows
Booth banners with your Twitter QR to connect with buyers and partners.
Website & Social Media
Embed the QR on your site or social posts to drive followers to your X account.

🚀 6 Benefits of a Twitter / X QR Code

Zero Friction for Followers
No need to search for your handle — one scan and your profile opens instantly in the X app or browser. Removes every barrier between a viewer and a follow.
Grow Your Audience Offline
Turn physical materials — merch, business cards, event badges — into powerful tools for building your Twitter/X following.
Amplify Your Content
Link directly to a specific tweet, thread, or announcement. Great for product launches, important updates, or driving engagement to a key post.
Boost Hashtag Campaigns
Create a QR for your event or campaign hashtag — attendees scan and join the conversation instantly, increasing visibility and reach.
Cost‑Free Marketing
Printing a QR code costs pennies, but the potential lifetime value of a follower is immense. Infinite ROI for your brand.
Fully Branded
Customise with your brand colours and logo — a branded QR looks more professional and drives higher scan rates.

📖 Complete Guide: How to Grow Your Twitter / X Following with QR Codes

Twitter (now X) is one of the most powerful platforms for real‑time communication, brand building, and audience engagement. With over 500 million monthly active users, it's a prime channel for creators, businesses, and thought leaders. But growing your following requires visibility — and visibility often starts offline. QR codes are the perfect bridge between your physical presence and your X profile.

Why Twitter / X QR Codes Are Essential

When you're at a networking event, handing out business cards, or selling merchandise, there's no easy way for someone to instantly follow you on X — unless you use a QR code. Without it, they have to remember your handle, open the app, search, and hope they find the right account. That's too many steps. A QR code reduces the entire process to a single scan, eliminating friction and dramatically increasing the likelihood of a follow.

Getting the Most from Your Twitter / X QR Code

Frequently Asked Questions

Choose Profile mode, enter your handle (e.g. username or @username), click Generate, then download as PNG or SVG. Scanning opens your profile in the X app or browser.
Yes. Switch to Tweet mode and paste the full tweet URL. The QR code opens that exact tweet when scanned.
Yes. Switch to Hashtag mode, type your hashtag without the # symbol, and the QR encodes a link to the hashtag search results page on X. Great for event campaigns.
No. This is a static QR code — the Twitter/X URL is encoded directly into the image. It works forever with no subscription, server, or expiry date.
Yes. All QR code generation happens entirely in your browser. Your handle or URL never leaves your device.
The tool generates x.com links, which is Twitter's current domain. Both twitter.com and x.com redirect to the same profiles and tweets, so either domain works for scanning.

Twitter / X QR Code · ToolsBox.org

' ); win.document.close(); } function resetAll() { ['tw-profile', 'tw-tweet', 'tw-hashtag'].forEach(id => { const el = document.getElementById(id); if (el) el.value = ''; }); document.getElementById('qr-out').innerHTML = ''; document.getElementById('qm-info').textContent = '—'; document.getElementById('qm-ready').textContent = ''; document.getElementById('link-preview').style.display = 'none'; rmLogo(); } /* ── CUSTOMISE ── */ 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() { const v = document.getElementById('sz-range').value; document.getElementById('sz-label').textContent = v + '×' + v; document.getElementById('sz-range').setAttribute('aria-valuetext', v + ' by ' + v + ' pixels'); } 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; autoGenerate(); } /* ── LOGO ── */ 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(); } /* ── ERRORS ── */ 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'); } /* ── FAQ ── */ 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'); } } /* ── MOBILE NAV ── */ (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 = ''; }); } }); })(); /* ── LOGO DRAG‑AND‑DROP ── */ (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(); } }); })(); /* ── DEMO ON LOAD ── */ window.addEventListener('load', () => { document.getElementById('tw-profile').value = 'ToolsBox'; livePreview(); generateQR(); });