Generate QR codes from any text or URL. Download as SVG or PNG, or copy the SVG markup directly.
Enter any text or URL in the input field and a QR code is generated in real time as an inline SVG. The SVG uses the tool's color scheme by default. PNG downloads render on a standard white background for maximum scanner compatibility.
| Level | Recovery capacity | Use when |
|---|---|---|
| L | ~7% | Clean environments, smallest code |
| M | ~15% | General use (default) |
| Q | ~25% | Industrial or printed applications |
| H | ~30% | Maximum resilience, logo overlays |
Higher error correction increases QR code density (more modules, larger image).
?value=<encoded-text>&ecl=<L|M|Q|H> — pre-fills the input and error correction level. Useful for sharing or bookmarking specific QR codes.
GET /api/qr returns the QR code as an image/svg+xml response — suitable for use in <img> tags or anywhere an image URL is accepted.
| Parameter | Required | Default | Description |
|---|---|---|---|
value | yes | — | Text or URL to encode |
ecl | no | M | Error correction level: L, M, Q, or H |
dark | no | #000000 | Hex color for dark modules (include #) |
light | no | #ffffff | Hex color for light modules (include #) |
Examples:
/api/qr?value=https%3A%2F%2Fhypothesis.sh
/api/qr?value=https%3A%2F%2Fhypothesis.sh%2Fqr&ecl=H
/api/qr?value=https%3A%2F%2Fhypothesis.sh&dark=%23ff0000&light=%23f5f5f5<img src="https://hypothesis.sh/api/qr?value=https%3A%2F%2Fhypothesis.sh" alt="QR code" />Responses are cached for 24 hours (Cache-Control: public, s-maxage=86400). Color values must be 6-digit hex codes — shorthand (#fff) is not accepted.