Holi Labs
2 min QR

Design a QR code that still scans

A visual checklist for contrast, quiet zone, error correction, logos, and export verification.

#qr #accessibility #testing
Contents
Begin with contrast Preserve the quiet zone Choose error correction deliberately Keep logos modest Test the actual export Provide a safe editor Privacy check

A QR code can look impressive in the editor and fail on a printed menu, a dim phone, or a compressed social image. Good customization protects the parts a scanner needs.

Begin with contrast

The modules should be clearly darker than their background. Avoid using transparency to create essential contrast because the final surface may be unknown. A preview over a checkerboard is not evidence that the exported image will work on a poster.

Preserve the quiet zone

Keep an empty margin around the complete code. Decorative frames, captions, and backgrounds should live outside that zone. Cropping tightly is one of the fastest ways to make an otherwise valid QR unreliable.

Choose error correction deliberately

Higher error correction can tolerate more damage or a small centered logo, but it also makes the symbol denser. Start with the lowest level that fits the use case and increase it only when the design needs the additional resilience.

Keep logos modest

A logo covers data modules even when it has a neat frame. Center it, keep it compact, and avoid covering the three finder patterns. If a design needs a large illustration, place it around the QR rather than inside it.

Test the actual export

The exported PNG, SVG, or PDF is the artifact people scan. Verify it after every meaningful visual change:

  1. Scan at the intended physical or on-screen size.
  2. Try at least two scanner implementations.
  3. Test bright and low light.
  4. Test the exported file after resizing or compression.
  5. Print a sample when print is the destination.

Provide a safe editor

A QR tool should warn about low contrast, missing quiet zone, excessive logo coverage, or a failed self-scan. Warnings are more useful than silently preventing experimentation, but downloads should make the unresolved risk clear.

Privacy check

Static QR generation can happen entirely in the browser. A QR can still contain sensitive data, so previews, recent values, and analytics events must not send the encoded text. If a dynamic QR or redirect service is introduced, it becomes a connected feature and needs a separate privacy explanation.

Previous Build a browser workspace that never traps the user Next A Typst project structure that grows without friction

Local preferences

Configuration

These preferences stay in this browser and do not require an account.

Appearance

Theme Applies on this device

Navigation

Home Holi.tools Papers
Session No account · local preference

Current v0.6.0

Versions

Keep Holi available

Support independent tools

Donations help cover hosting and development without making accounts or remote storage mandatory.

Contact
v0.6.0 2026-09-02
  • Defined Tutorials, Field notes, Experiments, and Papers as formats in one Holi Labs publication
  • Added a localized Papers collection with a subtle crane category mark across all seven languages
  • Added format filters and the axolotl identity while preserving one shared library and privacy shell
v0.5.0 2026-09-02
  • Extended the Labs library shell, privacy summary, search, filters, and article routes to all seven Holi languages
  • Localized the shared product dock and removed its unstable outer glow
  • Kept code blocks, URLs, file paths, and technical product names intact across translated tutorials
v0.4.0 2026-09-02
  • Rebuilt Labs as a practical library with featured reading, search, category filters, and reading time
  • Published seven complete English and Spanish tutorials, guides, and engineering notes
  • Added coherent light and dark Labs palettes and limited public routes to fully translated locales
v0.3.0 2026-09-02
  • Unified Configuration, Versions, and Privacy in the shared Holi product dock
  • Added local theme and language preferences plus Labs navigation inside Configuration
  • Placed donations, support, and the visible Shadow Log inside Versions
v0.2.1 2026-09-02
  • Separated privacy and Version Log into left and right floating controls
  • Moved privacy facts into a dedicated glass drawer
v0.2.0 2026-09-02
  • Added a visible privacy summary to experiment, article, and tag pages
  • Made the current version and Shadow Log available throughout Labs
  • Reframed Labs as a research publication rather than a product backlog
v0.1.1 2026-01-12
  • Added English and Spanish routes
  • Synchronized the content collection
  • Improved stability
v0.1.0 2026-01-12
  • Created the first Labs content collection
  • Published initial graphics and performance notes

Privacy at a glance

Privacy summary

Reading and exporting articles does not give personal files to Holi. Cloudflare can observe your IP and access time.

Content
Labs publishes static articles and does not request your local documents.
Export
Copying summaries and generating Markdown or print output happens in your browser.
Hosting
Cloudflare may process IP, time, requested path, traffic volume, and routing data.
External links
Donation, support, and external sources open only when you choose them.

About

Holi Labs

Tutorials, field notes, and technical guides for building useful local-first web tools.

Explore Holi.tools

Donate

Donate

If Holi.tools helps you, you can support its continued development here:

GitHub Sponsors Ko-fi

Support & suggestions

Support & suggestions

For support, bug reports, or suggestions:

Email [email protected] GitHub Issues

Source code: https://github.com/HugoAndresAmayaChairez/holi.tools