Simon Willison Builds a QR Code Generator with Claude: A Vibe-Coding Case Study

Simon Willison uses Claude to build a QR code generator, showcasing efficient vibe-coding in practice
Renowned developer and Django co-creator Simon Willison built a QR code generator with Claude AI assistance, supporting URL/text and WiFi network modes with style customization and front-end-only privacy protection. The project exemplifies vibe-coding, demonstrating AI's efficiency at handling well-defined problems and reflecting a broader shift in programming's core value from "how to implement" to "what to implement."
Renowned developer Simon Willison recently shared a QR code generation tool built with Claude's assistance, supporting both URL/text and WiFi network modes. This small yet elegant project once again demonstrates the efficiency of vibe-coding (AI-assisted programming) in building practical utilities.
QR Code Generator Feature Overview
This QR code generator is hosted on Simon Willison's personal tools site (tools.simonwillison.net), featuring a clean, intuitive interface with two core functional modes. Before diving into the specifics, it's worth briefly revisiting QR code technology itself: QR codes (Quick Response Codes) were invented in 1994 by the Japanese company DENSO WAVE, originally designed for tracking automotive parts. Unlike traditional one-dimensional barcodes that can only store about 20 characters, QR codes use a two-dimensional matrix structure capable of encoding up to approximately 4,296 alphanumeric characters or 7,089 purely numeric characters. QR codes have built-in Reed-Solomon error correction algorithms, enabling correct decoding even when parts of the pattern are obscured or damaged, with error correction levels ranging from L (7%) to H (30%).
QR codes truly went mainstream around 2017, when Apple integrated QR code scanning directly into the system camera app in iOS 11. Android followed suit, allowing users to scan QR codes without installing third-party apps. The COVID-19 pandemic in 2020 further accelerated QR code adoption—health codes, digital menus, contactless payments, and other scenarios made QR codes a fundamental part of daily infrastructure. In China, WeChat and Alipay's QR code payment ecosystems pushed QR codes to unprecedented depths of application. WiFi QR codes, as a specific use case, are natively supported by both Android and iOS: when users scan one with their system camera, the operating system directly prompts a WiFi connection without requiring manual password entry. This seamless experience forms the technical foundation of this tool's practical value.
URL/Text Mode: Users can input any URL or text content to generate a corresponding QR code with one click. This is the most basic and commonly used feature, suitable for everyday scenarios like sharing links or contact information.
WiFi Network Mode: This is a standout feature of the tool. Users enter the WiFi network name (SSID), password, and security protocol type to generate a QR code that phones can scan to connect directly to the WiFi network. WiFi QR codes follow a specific encoding format—WIFI:T:WPA;S:NetworkName;P:Password;;—which the phone camera automatically parses and prompts for connection. The tool supports mainstream encryption protocols including WPA/WPA2/WPA3 and also provides a hidden network option.

About Simon Willison
It's worth noting that Simon Willison is no ordinary developer. He's one of the co-creators of the Django web framework and the author of Datasette, an open-source data exploration tool. Datasette instantly transforms SQLite databases into interactive APIs and web interfaces, built on the philosophy of "data as publishing"—anyone can publish structured data as a searchable, filterable, API-accessible website with zero configuration. A rich plugin ecosystem has formed around Datasette, covering geospatial visualization, full-text search, data import/export, and more. Simon Willison also developed the companion tool sqlite-utils for SQLite data operations in command-line environments. This ecosystem is widely used in investigative journalism, open government data, and academic research, reflecting his consistent philosophy of "lowering technical barriers and making data accessible"—a mindset directly aligned with his current approach of using AI to develop lightweight tools.
In recent years, he has become one of the most active tech bloggers in the AI/LLM space, continuously documenting and sharing practical experiences with large language models. His personal tools site, tools.simonwillison.net, houses dozens of lightweight web tools developed with AI assistance, spanning data processing, text transformation, image manipulation, and many other categories. It has become a benchmark showcase for AI-assisted programming capabilities. This QR code generator is the latest addition to the collection.
Attention to User Experience Details
From the interface screenshots, this tool shows considerable polish in its interaction design:
Smart Defaults Lower the Barrier to Entry
The security protocol defaults to "WPA / WPA2 / WPA3" with helpful guidance text: "Not sure? Leave it on WPA / WPA2 / WPA3 — that covers almost every home WiFi network." This design ensures even non-technical users can get started easily.
The choice of this default value has solid technical reasoning behind it. WiFi security protocols have evolved through multiple generations: the earliest WEP (Wired Equivalent Privacy) launched in 1997 but was proven crackable within minutes in the early 2000s due to key management flaws; WPA, introduced in 2003 as a transitional solution, brought the TKIP dynamic key protocol; WPA2, released in 2004, adopted AES-based CCMP encryption and became the dominant standard for over a decade; WPA3, released in 2018, further introduced the SAE (Simultaneous Authentication of Equals) handshake protocol, effectively defending against offline dictionary attacks while providing OWE (Opportunistic Wireless Encryption) protection for open networks. The tool defaults to covering WPA/WPA2/WPA3 because the vast majority of home routers run one of these three protocols, and phones automatically adapt to the actual protocol version when scanning WiFi QR codes.
Rich Style Customization Options
The tool offers QR code style adjustments across multiple dimensions:
- Style: Choose between square and other QR code styles
- Border: Option to add or remove borders
- Size: Multiple size options available, defaulting to Medium
- Color: Custom QR code colors supported, defaulting to black
These style customization features are typically implemented using JavaScript libraries that handle QR code encoding and rendering locally in the browser. Popular open-source libraries include qrcode.js, QRCode.react, and node-qrcode, which implement the QR code encoding algorithm defined in the ISO/IEC 18004 standard, including data analysis, error correction code generation, module arrangement, and mask optimization steps. Style customization (such as colors and rounded corners) is typically achieved through Canvas API or SVG manipulation. A purely front-end approach means all data processing happens on the user's device, with no need to send sensitive information like WiFi passwords to a server—this is also a consistent design philosophy of Simon Willison's tools site, prioritizing user privacy protection.
The significance of this architectural choice deserves deeper elaboration. Traditional web tools typically adopt a client-server architecture where user input must be sent to the backend for processing before results are returned. For sensitive information like WiFi passwords, server-side processing means passwords could potentially be logged, intercepted by man-in-the-middle attacks, or stored by the service provider. A purely front-end architecture (also called "zero-knowledge" architecture) encapsulates all computational logic in JavaScript, with data never leaving the user's browser. This pattern has become increasingly viable in recent years with the enhancement of browser capabilities like WebAssembly and Web Crypto API—many computationally intensive tasks that previously required server-side processing can now be efficiently executed on the client side. Simon Willison's tools site extensively adopts this architecture, both reducing server costs and fundamentally eliminating data breach risks.
Secure Password Handling
The password input field hides content by default, with a "Show" button to toggle visibility, striking a good balance between security and usability.
Another Vibe-Coding Case Study
Simon Willison tagged this project as "vibe-coding"—a concept coined by Andrej Karpathy that refers to a rapid, intuition-driven approach to programming with the help of AI large models. The developer is responsible for describing requirements and intent, while the AI handles generating the code implementation.
The background of vibe-coding deserves further exploration. The term was first coined by Andrej Karpathy, former Tesla AI Director and OpenAI co-founder, on social media in February 2025. He described this programming style as "fully immersed in the vibe, embracing exponential growth, forgetting that code exists." Unlike traditional AI-assisted programming (such as GitHub Copilot's line-by-line completion), vibe-coding emphasizes developers describing their overall intent in natural language, with AI generating complete functional modules or even entire applications at once. The developer's role shifts from "writing code" to "reviewing and guiding code," with core competencies moving from syntax mastery to requirement expression and architectural judgment. The concept quickly sparked heated discussion in the developer community—supporters argue it dramatically lowers programming barriers, while critics worry developers may lack deep understanding of the generated code, creating maintenance risks.
In this project, Claude served as the core AI programming assistant. Anthropic's Claude series models excel at code generation tasks, particularly Claude 3.5 Sonnet and subsequent versions, which have continuously set new records on code benchmarks like SWE-bench. Unlike GitHub Copilot, which primarily embeds in IDEs for line-by-line completion, Claude excels at understanding complex requirements through conversational interaction and generating complete code modules. Anthropic also launched the Claude Artifacts feature, allowing the model to directly generate previewable HTML/CSS/JavaScript applications within conversations—highly compatible with Simon Willison's workflow for developing lightweight web tools. Additionally, next-generation AI coding IDEs like Cursor and Windsurf integrate Claude as one of their core models, further expanding its reach within developer workflows.
QR code generation itself is not a technical challenge—there are plenty of open-source libraries available—but building a user-friendly, feature-complete web tool from scratch still requires considerable frontend work. With Claude's code generation capabilities, Simon Willison rapidly transformed ideas into usable products, saving substantial time on boilerplate code. This is a textbook application of the vibe-coding philosophy—using AI to handle repetitive implementation work while the developer focuses on product design and experience refinement.
Implications of AI-Assisted Programming for Developers
Though modest in scale, this project signals several noteworthy trends:
AI is extremely efficient at handling "known problems": QR code generation is a well-defined domain with mature solutions, where AI assistance delivers the most significant results. Developers simply need to describe requirements clearly, and Claude can quickly produce high-quality code. These "known problems" are characterized by: abundant publicly available code examples and documentation as training data, relatively fixed solution patterns, and clear input/output boundaries. By contrast, AI assistance becomes noticeably less effective when dealing with novel algorithm research or highly customized business logic.
The value of practical small tools is often underestimated: Many developers lack handy small tools at their disposal, and AI-assisted programming dramatically reduces the cost of creating them. WiFi QR codes are highly practical for home gatherings, office visitor reception, and similar scenarios, yet few people previously bothered to build a dedicated tool. When a tool's development time shrinks from several hours to a ten-minute conversation, the threshold for "is it worth building" fundamentally shifts.
The personal tools site model is worth emulating: Simon Willison continuously accumulates various AI-assisted small tools on tools.simonwillison.net, forming a practical personal toolkit. This model of "rapidly building tools with AI" is becoming an increasingly common practice among developers. It not only boosts personal productivity but also provides reusable references for other developers—each tool is a living case study in AI-assisted programming.
Conclusion
A QR code generator may not qualify as a major project, but it represents a clear trend in AI-assisted development: rapidly bringing to life tools that are "useful but not worth spending too much time on." When development costs are low enough, increasingly polished small tools will continue to emerge—this is the most direct manifestation of how AI coding tools like Claude empower developers. From Django co-creator to deep practitioner of AI tools, Simon Willison's transformation trajectory itself reflects the profound changes the entire developer ecosystem is undergoing: the core value of programming is migrating from "how to implement" to "what to implement."
Related articles
Tech FrontiersA Rare Quiet Day in AI: Recursive Self-Improvement Stirs Beneath the Surface
A rare quiet day in AI sees multiple sources go silent simultaneously. Behind the calm, Recursive Self-Improvement (RSI) research continues. What this means for the industry.
Tech FrontiersReve 2 vs. Ideogram 4: A Deep Dive into Layout Control in AI Image Generation
A deep comparison of Reve 2 and Ideogram 4's layout control capabilities, covering technical approaches, real-world use cases, and industry trends for designers and creators.
Tech FrontiersIn the Weights: Check Your Influence Score in the AI World
In the Weights is an AI influence search engine that quantifies your presence in the AI world with a score. Explore how it evaluates practitioners and what it means for digital identity.