Générateur de QR code
Un QR code est un carré à scanner qui ouvre un lien, un texte ou un contact sur un téléphone. Cet outil transforme votre adresse, votre message ou votre réseau Wi-Fi en QR code net, à télécharger en PNG ou SVG, prêt à coller sur une affiche, un menu ou une carte.
Lancer gratuitement
Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.
Ce que vous pouvez encoder
Un QR code n’est pas réservé aux adresses web. On y place aussi bien un lien vers un site qu’un texte brut, une adresse e-mail, un numéro de téléphone, un SMS pré-rempli ou les identifiants d’un réseau Wi-Fi pour connecter un invité sans dicter le mot de passe. Vous saisissez le contenu, le code se dessine aussitôt. Plus le contenu est court, plus le motif reste simple et facile à scanner de loin, même imprimé en petit format.
PNG ou SVG : lequel choisir
Le PNG convient à l’écran et à l’impression courante : un menu, un flyer, une étiquette. Pour une affiche grand format ou une enseigne, préférez le SVG, une image vectorielle qui reste nette à n’importe quelle taille, sans le moindre effet d’escalier. Vous pouvez aussi ajuster la marge et le niveau de correction d’erreur, qui permet au code de rester lisible même légèrement abîmé ou partiellement masqué.
Gratuit dans votre navigateur
La génération se fait entièrement dans votre navigateur : le contenu que vous encodez ne quitte pas la page et n’est envoyé sur aucun serveur. C’est gratuit, illimité et sans inscription. Pour produire des QR codes en série — un par produit, un par table — ou les intégrer à vos propres outils, la même fonction existe côté API et par d’autres canaux, au tarif de $0.002 la requête plus $0.0044 par image, en dollars US.
Cas d’usage
Menu de restaurant
Le gérant d’un bistrot imprime sur chaque table un QR code qui ouvre la carte du jour, mise à jour sur son site sans réimprimer quoi que ce soit.
Affiche d’association
Une association de quartier ajoute à son affiche un QR code vers la billetterie de sa fête annuelle, scannable d’un simple téléphone.
Carte de visite
Atelier Garnier SARL glisse sur sa carte un QR code Wi-Fi pour ses clients en boutique, sans jamais épeler le mot de passe.
Invitation de mariage
Camille Moreau encode dans son faire-part un lien vers la liste et le plan d’accès, en PNG prêt pour l’imprimeur.
Questions fréquentes
Est-ce vraiment gratuit, sans piège ?
Oui. Dans le navigateur, la création de QR codes est gratuite, illimitée et sans inscription : rien à payer, rien à installer. Seule l’utilisation automatisée par API, pour générer des codes en série, est facturée à l’usage.
Faut-il créer un compte ?
Non. Aucun compte n’est nécessaire pour créer un QR code ici. Vous saisissez votre contenu, le code apparaît, vous le téléchargez. C’est tout.
Quelle résolution pour une impression nette ?
Pour un flyer ou un menu, un PNG en haute résolution suffit. Pour une affiche ou une enseigne, choisissez le SVG : cette image vectorielle reste parfaitement nette même agrandie à un mètre.
Le contenu que j’encode reste-t-il privé ?
Oui. Le QR code est calculé dans votre navigateur ; le texte, le lien ou le mot de passe Wi-Fi que vous saisissez ne sont transmis à aucun serveur.
Le QR code va-t-il expirer un jour ?
Non. Un QR code créé ici est statique : le contenu est gravé dans le motif. Il fonctionnera tant que le lien qu’il contient reste valide, sans date limite ni abonnement.
Puis-je encoder un accès Wi-Fi ?
Oui. Renseignez le nom du réseau et le mot de passe : le QR code obtenu connecte automatiquement le téléphone qui le scanne, sans saisie manuelle.
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"text": "https://forhosting.com/kit"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.qr_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |