Calculez la version du code QR selon sa capacité
Ce calculateur de version de code QR détermine le plus petit symbole capable de contenir un nombre donné d’octets avec un niveau de correction d’erreurs L, M, Q ou H.
Lancer gratuitement
Il s’appuie sur les capacités standard du mode octet pour les versions QR 1 à 40, puis indique la version retenue, le nombre de modules, la capacité disponible et les octets libres. Vous pouvez ainsi dimensionner un code avant de créer le visuel, de choisir ses dimensions d’impression ou de vérifier si une correction plus robuste rendrait le symbole trop dense.
Partez de la longueur encodée en octets
La capacité d’un QR dépend du mode d’encodage, et pas seulement du nombre de caractères visibles. Ce calculateur emploie volontairement le mode octet, choix polyvalent et fiable pour les URL, les textes, les identifiants et les ponctuations variées. Saisissez le nombre d’octets occupés par la charge finale après encodage du texte. Les caractères ASCII simples prennent généralement un octet chacun, tandis que les lettres accentuées, les emoji et de nombreuses écritures non latines en utilisent plusieurs en UTF-8. Un simple comptage visuel peut donc conduire à choisir une version trop petite. Comptez tout ce qui sera réellement encodé, notamment les paramètres d’URL, les séparateurs, les sauts de ligne et les préfixes de données structurées. Le résultat fournit la première version QR dont la capacité en mode octet couvre cette longueur. Il indique aussi les octets restants, marge utile si le contenu doit encore évoluer. Cette estimation n’optimise pas les données numériques ou alphanumériques avec leurs modes QR plus compacts; un encodeur spécialisé peut donc parfois produire un symbole plus petit.
Choisissez consciemment le niveau de correction
La correction d’erreurs échange de la capacité contre de la résistance. Le niveau L laisse le plus de place aux données et convient à un code net, lu dans des conditions maîtrisées. Le niveau M constitue un choix général courant. Les niveaux Q et H réservent progressivement davantage de mots de code à la récupération; ils peuvent être utiles si une étiquette risque d’être rayée, si l’emballage est courbe ou si un élément graphique masque une petite zone. Cette protection impose plus tôt une version supérieure pour une charge identique. Testez le même nombre d’octets avec plusieurs niveaux afin d’en mesurer l’effet avant de valider le visuel. Un niveau plus élevé n’est pas toujours préférable: une version supérieure comporte davantage de modules, qui deviennent physiquement plus petits lorsque la surface imprimée reste fixe. Des modules minuscules peuvent nuire à la lecture malgré une correction renforcée. Retenez le niveau le plus faible adapté aux dommages, au support, au contraste, à la distance et au procédé d’impression prévus, puis conservez une zone calme suffisante autour du code final.
Interprétez la version et les dimensions en modules
Les versions QR vont de 1 à 40. La version 1 compte 21 modules par côté, puis chaque version ajoute quatre modules sur chaque côté. La valeur affichée décrit donc la grille carrée du symbole, et non sa taille finale en millimètres ou en pixels. Le générateur doit encore ajouter la zone calme, généralement large de quatre modules sur chaque bord, et chaque module doit rester assez grand pour la caméra et la distance visées. La version minimale exprime une capacité; elle ne garantit pas à elle seule la qualité de lecture. Le résultat réel peut varier si l’encodeur alterne automatiquement entre segments numériques, alphanumériques, octets ou Kanji, ajoute un indicateur explicite de jeu de caractères ou applique un assemblage structuré particulier. Utilisez ce résultat comme estimation prudente en mode octet, puis testez le symbole final avec l’encodeur et la charge exacts destinés à la production. Si l’entrée est refusée, la version 40 ne peut pas contenir autant d’octets au niveau choisi; raccourcissez la charge, baissez la correction ou encodez une référence compacte.
Cas d’usage
Préparer des étiquettes imprimées
Estimez la densité du symbole avant de réserver un emplacement QR sur un emballage, un billet ou une plaque de matériel.
Comparer les niveaux de correction
Observez comment le passage de M à Q ou H modifie la version minimale pour une même charge en octets.
Valider une limite de contenu
Fixez un plafond en octets aux URL générées ou aux fiches structurées avant leur envoi à l’encodeur QR.
Questions fréquentes
Que signifie la longueur des données?
Il s’agit du nombre d’octets de la charge finale, pas nécessairement du nombre de caractères visibles.
Quel mode d’encodage QR est utilisé?
Le calcul repose sur le mode octet. Les modes numérique et alphanumérique peuvent contenir davantage de caractères compatibles.
Que signifient L, M, Q et H?
Ce sont les quatre niveaux de correction d’erreurs QR, classés de la plus grande capacité de données à la plus forte récupération.
La zone calme est-elle comprise dans le résultat?
Non. Le nombre de modules par côté décrit la grille QR. Ajoutez la zone calme prescrite par votre générateur et vos règles d’impression.
Pourquoi mon générateur choisit-il parfois une autre version?
Il peut répartir la charge entre des modes plus efficaces ou ajouter des métadonnées, comme un indicateur de jeu de caractères. Vérifiez le résultat avec votre encodeur final.
Quel est le coût d’une requête API?
Chaque requête API coûte $0.002. La version pour navigateur s’exécute localement et gratuitement.
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/doc/qr-code-capacity-estimate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"data_length":100,"error_correction_level":"M"}'const res = await fetch("https://api.kit.forhosting.com/doc/qr-code-capacity-estimate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"data_length": 100,
"error_correction_level": "M"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/doc/qr-code-capacity-estimate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"data_length": 100,
"error_correction_level": "M"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/doc/qr-code-capacity-estimate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"data_length":100,"error_correction_level":"M"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"data_length":100,"error_correction_level":"M"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/doc/qr-code-capacity-estimate", 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
{
"data_length": 100,
"error_correction_level": "M"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "doc.qr_code_capacity_estimate",
"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.
Limites
max_mb | 25 |
max_pages | 200 |
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. |