QR code personnalisé avec logo
Un QR code avec logo place votre marque au cœur du motif tout en restant scannable. Cet outil insère votre image au centre, ajuste les couleurs à votre charte et renforce la correction d’erreur pour que le code fonctionne malgré le logo. Résultat téléchargeable en PNG ou SVG, prêt à imprimer.
Lancer gratuitement
Tout se passe dans votre navigateur : gratuit, sans envoi de vos données.
Un logo sans casser la lecture
Placer une image au milieu d’un QR code masque une partie du motif. Pour que le scan fonctionne quand même, l’outil relève automatiquement le niveau de correction d’erreur : le code embarque des données redondantes qui compensent la zone couverte par le logo. Gardez tout de même le logo à une taille raisonnable — environ un cinquième du code — et testez le rendu avec l’appareil photo d’un téléphone avant de lancer une impression en nombre.
Couleurs et contraste
Vous pouvez teinter le code aux couleurs de votre marque, mais le contraste prime sur l’esthétique : un motif foncé sur fond clair se lit toujours, l’inverse rarement. Évitez les dégradés trop clairs et les fonds qui rapprochent les deux tons. Un QR code doit rester un outil fonctionnel avant d’être un objet graphique ; un beau code qui ne se scanne pas ne sert à personne.
Formats et automatisation
Le PNG convient aux supports courants, le SVG aux grands formats et aux fichiers destinés à un imprimeur. La création reste gratuite et illimitée dans votre navigateur, sans inscription, et votre logo n’est envoyé sur aucun serveur. Pour habiller toute une gamme de produits d’un même code personnalisé, la fonction s’appelle aussi par API et par d’autres canaux, à $0.002 la requête plus $0.005 par image, en dollars US.
Cas d’usage
Charte d’agence
Studio Lumen SAS décline ses QR codes aux couleurs de chaque client, logo au centre, pour ses supports de présentation.
Packaging produit
Menuiserie Rousseau et Fils imprime sur ses emballages un QR code à son logo qui mène à la notice d’entretien du meuble.
Menu de brasserie
Une brasserie affiche sur ses sets de table un QR code à son enseigne, renvoyant vers la carte des vins.
Carton d’événement
Élodie Garnier signe l’invitation d’un vernissage d’un QR code coloré vers la galerie et l’itinéraire.
Questions fréquentes
Le logo risque-t-il de rendre le code illisible ?
Pas si sa taille reste mesurée. L’outil augmente la correction d’erreur pour compenser la zone masquée, mais un logo trop grand finit par empêcher le scan. Testez toujours le rendu avant une impression en série.
Puis-je mettre le code aux couleurs de ma marque ?
Oui, dans la limite du contraste. Un motif sombre sur fond clair reste le plus fiable. Les teintes trop proches ou trop pâles compliquent la lecture par les téléphones.
Mon logo est-il envoyé quelque part ?
Non. L’image et le code sont assemblés dans votre navigateur. Votre logo ne transite par aucun serveur et n’est conservé nulle part.
Quel format pour une grande affiche ?
Le SVG. Vectoriel, il reste net à toute taille, contrairement au PNG qui peut pixeliser une fois très agrandi. Pour un flyer, le PNG haute résolution suffit.
Est-ce payant ?
Non dans le navigateur : c’est gratuit et sans inscription. Seule l’automatisation par API est facturée, à $0.002 la requête plus $0.005 par image, en dollars US.
Faut-il un logo dans un format précis ?
Un PNG à fond transparent donne le meilleur résultat, car il s’intègre proprement au centre du code. Un logo simple, sans détails fins, reste plus lisible une fois réduit.
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-logo \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"image":"https://ejemplo.com/imagen.jpg"}'const res = await fetch("https://api.kit.forhosting.com/dev/qr-logo", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"image": "https://ejemplo.com/imagen.jpg"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/qr-logo",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"image": "https://ejemplo.com/imagen.jpg"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/qr-logo", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"image":"https://ejemplo.com/imagen.jpg"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"image":"https://ejemplo.com/imagen.jpg"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/qr-logo", 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
{
"image": "https://ejemplo.com/imagen.jpg"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.qr_logo",
"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. |