Generate beautiful QR codes that link to any X (Twitter) profile
Visit the app and enter any X username to see it in action!
xQR creates shareable QR codes for X profiles. Enter a username and get a scannable QR code displayed on a profile card that looks just like the X app - complete with banner, avatar, bio, follower counts, and more.
Use cases:
- Conference name badges
- Phone lock screens for networking
- Business cards
- Event check-ins
- X API Integration - Fetches real profile data (avatar, banner, bio, location, follower counts)
- X-Style Profile UI - Looks like the native X app
- Display URLs - Shows friendly URLs instead of t.co links
- Direct URL Access - Go to
/usernamefor instant QR (e.g.,localhost:5173/elonmusk) - Mobile Optimized - Full-screen display for screenshots
| Technology | Purpose |
|---|---|
| React 19 | UI Framework |
| Vite 8 | Build Tool |
| Tailwind CSS 4 | Styling |
| Rust | Backend (zero-crate, SQLite, libcurl) |
| X API v2 | Profile lookup via X_BEARER_TOKEN |
-
Install dependencies
npm install
-
Configure X API
Get a Bearer Token from the X Developer Portal
Create
backend/.envwith your values:X_BEARER_TOKEN=your_bearer_token_here JWT_SECRET=any_random_string # Generate with: openssl rand -base64 32 -
Run
npm run start cd backend && cargo run
App runs at
http://localhost:5173. The API listens on port 8000.
- Enter an X username (e.g.,
elonmusk) - View the generated profile card with QR code
- Screenshot for your lock screen or share
Or go directly to: localhost:5173/username
GET /user/:username
Returns X profile data:
{
"id": "123456",
"username": "elonmusk",
"name": "Elon Musk",
"profile_image_url": "https://...",
"profile_banner_url": "https://...",
"description": "Bio text...",
"location": "Mars",
"display_url": "x.ai",
"followers_count": 200000000,
"following_count": 800,
"verified": true
}"Failed to fetch profile"
- Verify your
X_BEARER_TOKENis valid inbackend/.env - Check that the username exists on X
- Ensure backend is running on port 8000
Backend won't start
- From
backend/, runcargo run - Check that port 8000 is available
- Verify
.envfile exists in the backend directory
API rate limits
- X API has rate limits per bearer token
- Free tier: 500 requests per month
- Consider implementing caching if needed
Contributions are welcome! Feel free to open issues or submit pull requests.
MIT License - see LICENSE file for details
- Open an issue for bug reports or feature requests
- Check existing issues before creating a new one
Made with Skateboard — a React boilerplate with auth and payments
