← All projects

Node.js · Vercel Functions · npm: qrcode

QR Code Generator

Turns any text or URL into a QR code PNG rendered entirely on the server with the qrcode npm package.

The frontend just points an <img> tag at the API — the PNG itself is generated server-side with the qrcode npm package, no canvas or client-side QR library involved.

Live demo

embed
const QRCode = require('qrcode');

module.exports = async (req, res) => {
  const text = (req.query.text || 'https://example.com').toString();
  const size = Math.min(1024, Math.max(64, parseInt(req.query.size, 10) || 256));

  try {
    const buffer = await QRCode.toBuffer(text, {
      type: 'png',
      width: size,
      margin: 1,
      color: { dark: '#0b0c10', light: '#ffffff' },
    });
    res.setHeader('Content-Type', 'image/png');
    res.setHeader('Cache-Control', 'no-store');
    res.status(200).send(buffer);
  } catch (err) {
    res.status(500).json({ error: 'Failed to generate QR code', detail: String(err) });
  }
};
const form = document.getElementById('form');
const textInput = document.getElementById('text');
const img = document.getElementById('qr');

function update() {
  const text = textInput.value.trim() || 'https://example.com';
  img.src = `/api/qrcode?size=440&text=${encodeURIComponent(text)}`;
}

form.addEventListener('submit', (e) => {
  e.preventDefault();
  update();
});

update();