ToolAssay

Generate scannable QR codes from any text, URL, or structured payload (WiFi, vCa

Generate scannable QR codes from any text, URL, or structured payload (WiFi, vCard, SMS, email, geo, crypto). Returns PNG by default with JPG, WebP, and SVG output, plus optional error-correction, sizing, color, version, and encoding controls. Simple cURL POST: send qr_data, receive an image.

Not tested: has real-world effectsour last check, 2026-10-04
0 of 0checks answered this week
n/amedian answer time
$0.00165listed price per call
n/aprice it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://qr.reyn.tools/run

CategoryImage and media
Provider hostqr.reyn.tools
Networkseip155:8453
Payment schemesexact
Self-reported calls, 30 days1 from 1 payers (the provider's figure, not ours)

Our checks, last 30 days

We never call tools that send, buy, move money or file anything, not even without paying.

Example input (from the provider)

{
  "body": {
    "qr_data": "https://qr.reyn.tools"
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "additionalProperties": false,
          "properties": {
            "qr_bg": {
              "default": "FFFFFF",
              "description": "Background module color, 3- or 6-digit hex.",
              "type": "string"
            },
            "qr_boost_ec": {
              "default": true,
              "description": "Boost error correction when the data leaves room for it.",
              "type": "boolean"
            },
            "qr_border": {
              "default": 4,
              "description": "Quiet-zone border in modules.",
              "maximum": 10,
              "minimum": 0,
              "type": "integer"
            },
            "qr_data": {
              "description": "Payload to encode. String for the default raw/url modes; an object of fields for structured qr_type presets, e.g. {'ssid': 'MyNetwork', 'password': 'hunter2'} for wifi.",
              "type": "string"
            },
            "qr_ec": {
              "default": "auto",
              "description": "Error-correction level: L ~7%, M ~15%, Q ~25%, H ~30%.",
              "enum": [
                "auto",
                "L",
                "M",
                "Q",
                "H"
              ],
              "type": "string"
            },
            "qr_fg": {
              "default": "000000",
              "description": "Foreground module color, 3- or 6-digit hex.",
              "type": "string"
            },
            "qr_format": {
              "default": "png",
              "description": "Output image format (webp is the smallest raster; svg is vector).",
              "enum": [
                "png",
                "jpg",
                "webp",
                "svg"
              ],
              "type": "string"
            },
            "qr_mask": {
              "description": "Mask pattern 0-7, or 'auto' (default)."
            },
            "qr_micro": {
              "default": false,
              "description": "Allow Micro QR symbols for small payloads.",
              "type": "boolean"
            },
            "qr_mode": {
              "default": "auto",
              "description": "Encoding mode.",
              "enum": [
                "auto",
                "numeric",
                "alphanumeric",
                "byte",
                "kanji"
              ],
              "type": "string"
            },
            "qr_quality": {
              "default": 90,
              "description": "Lossy JPEG encoder quality (WebP output is always lossless so it stays the smallest raster format).",
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            },
            "qr_size": {
              "default": 512,
              "description": "Target raster width/height in pixels (rounded down to whole modules).",
              "maximum": 4096,
              "minimum": 32,
              "type": "integer"
            },
            "qr_type": {
              "default": "raw",
              "description": "Payload preset: raw (default) encodes qr_data verbatim; url prefixes https:// to bare domains; wifi/vcard/sms/tel/email/geo/crypto build the canonical scanner payload from an object.",
              "enum": [
                "raw",
                "url",
                "wifi",
                "vcard",
                "sms",
                "tel",
                "email",
                "geo",
                "crypto"
              ],
              "type": "string"
            },
            "qr_version": {
              "description": "QR symbol version 1-40, or 'auto' (default)."
            }
          },
          "required": [
            "qr_data"
          ],
          "type": "object"
        },
        "bodyType": {
          "enum": [
            "json",
            "form-data",
            "text"
          ],
          "type": "string"
        },
        "method": {
          "enum": [
            "POST",
            "PUT",
            "PATCH"
          ],
          "type": "string"
        },
        "type": {
          "const": "http",
          "type": "string"
        }
      },
      "required": [
        "type",
        "method",
        "bodyType",
        "body"
      ],
      "type": "object"
    },
    "output": {
      "properties": {
        "example": {
          "type": "object"
        },
        "type": {
          "type": "string"
        }
      },
      "required": [
        "type"
      ],
      "type": "object"
    }
  },
  "required": [
    "input"
  ],
  "type": "object"
}

This page as JSON