QR-Code erstellen
Diese Funktion erzeugt aus einem Text, einer Internetadresse, einer WLAN-Zugangsdaten-Zeile oder einer Telefonnummer einen scanbaren QR-Code als Bild, das sich direkt herunterladen und drucken lässt, ohne dass dafür eine App auf dem eigenen Gerät oder eine Anmeldung nötig wären.
Im Browser ausführen – kostenlos
Läuft direkt in Ihrem Browser – kostenlos. Ihre Datei verlässt Ihren Browser nicht und wird an keinen Server übertragen.
Was sich als QR-Code kodieren lässt
Neben einer einfachen Internetadresse lassen sich auch WLAN-Zugangsdaten, eine Telefonnummer, eine E-Mail-Adresse mit vorausgefülltem Betreff oder ein reiner Text in einen QR-Code umwandeln. Beim WLAN-QR-Code scannt ein Smartphone den Code und verbindet sich direkt mit dem Netzwerk, ohne dass Netzwerkname und Passwort per Hand eingetippt werden müssen – praktisch für Gäste in Praxis oder Ladengeschäft.
Fehlerkorrektur und Größe
Ein QR-Code enthält eingebaute Fehlerkorrektur: Selbst wenn ein Teil des Codes verschmutzt, geknickt oder teilweise verdeckt ist, bleibt er häufig noch lesbar. Für den Druck auf kleinen Flächen wie Visitenkarten empfiehlt sich eine höhere Fehlerkorrekturstufe und eine Mindestgröße von etwa 2 × 2 cm, damit handelsübliche Smartphone-Kameras den Code auch aus normalem Abstand sicher erfassen.
Kostenlos und ohne Limit im Browser
Die Erstellung läuft direkt in Ihrem Browser: Ihre Daten verlassen den Browser nicht, und die Nutzung ist kostenlos, ohne Anmeldung und ohne Tageslimit. Für die automatisierte Erzeugung vieler QR-Codes in einem Arbeitsschritt, etwa für eine ganze Produktserie, steht zusätzlich ein programmierbarer Aufruf über die API zur Verfügung, mit $0.002 pro Anfrage zuzüglich $0.0044 pro erzeugtem Bild.
Unterschied zum Logo- und zum dynamischen QR-Code
Dieser QR-Code kodiert die Zieladresse fest in das Bild; Ihr Logo in der Mitte oder ein nachträglich änderbares Ziel bringen die verwandten Funktionen für QR-Code mit Logo und dynamischen QR-Code mit. Für einen einfachen, sofort einsatzbereiten Code ohne diese Zusatzfunktionen reicht diese Grundfunktion völlig aus.
Anwendungsfälle
WLAN-Zugang für Gäste
Eine Zahnarztpraxis hängt einen QR-Code im Wartezimmer aus, über den Patientinnen und Patienten sich ohne Eintippen des Passworts direkt mit dem Gäste-WLAN verbinden.
Speisekarte ohne Papier
Ein Café verlinkt über einen QR-Code auf dem Tisch die digitale Speisekarte, statt bei jeder Preisänderung neue Papierkarten drucken zu lassen.
Produktserie mit individuellen Codes
Die Weber Metallbau GmbH erzeugt über die API für jedes Bauteil einer Serie automatisch einen eigenen QR-Code mit Verweis auf das zugehörige Datenblatt.
Häufige Fragen
Ist die Erstellung wirklich kostenlos?
Ja, im Browser ohne Limit und ohne Anmeldung. Nur die automatisierte Nutzung über die API kostet $0.002 pro Anfrage zuzüglich $0.0044 pro Bild.
Verlassen meine Daten den Browser?
Nein, bei der Nutzung auf dieser Seite bleibt alles im Browser, es wird nichts an einen Server übertragen.
Welches Bildformat erhalte ich?
Ein PNG-Bild in wählbarer Auflösung, geeignet sowohl für den Bildschirm als auch für den Druck.
Lässt sich ein Logo in die Mitte des QR-Codes einfügen?
Dafür gibt es die eigene Funktion QR-Code mit Logo, die die Fehlerkorrektur entsprechend anpasst.
Kann ich das Ziel des QR-Codes später noch ändern?
Nein, diese Funktion kodiert die Adresse fest. Für ein nachträglich änderbares Ziel eignet sich der dynamische QR-Code.
Funktioniert der QR-Code mit jeder Smartphone-Kamera?
Mit allen gängigen Kamera-Apps der letzten Jahre, ohne zusätzliche Scanner-App.
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/dev/qr-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"https://forhosting.com/kit"}'const res = await fetch("https://api.kit.forhosting.com/dev/qr-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "https://forhosting.com/kit"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/qr-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "https://forhosting.com/kit"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/qr-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"https://forhosting.com/kit"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"https://forhosting.com/kit"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/qr-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"text": "https://forhosting.com/kit"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.qr_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |