Link, siti ed email
Questo codice QR è sicuro?
Copertura: Legge codici QR di qualsiasi paese: link, numeri di telefono, SMS, email, reti Wi-Fi, contatti, eventi, luoghi, criptovalute e pagamenti (bonifici SEPA, QR-fatture svizzere, UPI, Pix, PromptPay, PayNow, QRIS, DuitNow, FPS e altri codici EMV). I link vengono controllati con le regole di NoCall per questa edizione e i numeri di telefono con i piani di numerazione pubblicati.
Apri lo strumentoIn questa pagina
A cosa serve
Scegli una foto o uno screenshot di un codice QR e scopri cosa fa davvero: aprire un sito, fare una chiamata, inviare un SMS, collegarti a una rete Wi-Fi o preparare un pagamento, prima di inquadrarlo con il telefono.
Requisiti
Chiunque può leggere queste guide, senza account. Alcuni strumenti richiedono Pro, come indicato in ogni guida.
I codici QR falsi compaiono su parcometri, lettere, multe, email e manifesti. Scegli una foto o uno screenshot del codice: lo leggiamo nel tuo browser, senza caricare l’immagine, e ti diciamo cosa fa prima che tu lo apra.
Come usarlo
Scegli o scatta una foto
Hai già il contenuto del codice? Incollalo qui
Leggi i campi disponibili insieme ai loro limiti. Un risultato vuoto non dimostra sicurezza e non identifica una persona.
Esempio inventato
Esempio inventato, non una ricerca reale. Non chiamare e non aprire i suoi link.
https://parking.example/payInterpretare il risultato
Non aprirlo: Il codice mostra segnali di truffa. Se l’hai trovato su un parcometro, in una lettera o su un manifesto, paga o accedi dall’app o dal sito ufficiale, scrivendo tu l’indirizzo.
Controlla prima di confermare qualsiasi cosa: Non vediamo una truffa evidente, ma il codice fa qualcosa che conviene verificare prima di confermarlo sul telefono.
Nessun segnale di pericolo: Questo non garantisce che sia autentico. Controlla che l’indirizzo o la destinazione siano quelli che ti aspetti prima di confermare qualsiasi cosa.
Limiti
Il codice viene letto e controllato nel tuo browser: l’immagine non viene mai caricata. Se contiene numeri di telefono, solo quei numeri vengono consultati sul server di NoCall per sapere di che tipo sono, e non vengono salvati.
Non apriamo mai il link: lo controlliamo soltanto.
Risoluzione dei problemi
Non abbiamo trovato un codice QR nell’immagine. Prova con una foto più ravvicinata, a fuoco e senza riflessi.
Non è stato possibile aprire l’immagine. Prova con una foto in formato JPG o PNG.
Il contenuto del codice è troppo lungo per controllarlo.
Usare con l’API
Richiede una API key e dei crediti. Ogni chiamata completata costa 1 credito, anche quando non ci sono dati. Un account Pro attivo include 20 crediti per mese solare UTC, condivisi da tutte le rotte API e consumati per primi; i crediti mensili non usati non passano al mese successivo. I crediti acquistati nella pagina del tuo account funzionano senza Pro e non scadono mai.
Gli errori non vengono mai addebitati: 401 invalid_api_key (chiave mancante o non valida), 403 pro_required (nessun credito Pro e nessun credito acquistato), 422 input non valido, 429 quota_exceeded (crediti esauriti), rate_limit_exceeded o ai_busy (l’IA di sms-check è al limite della capacità), 503 tool_warming (i dati sono ancora in preparazione) o tool o provider non disponibile. Dopo un 429 o un 503, riprova quando sono trascorsi i secondi indicati nell’intestazione Retry-After.
Cosa fa davvero un codice QR decodificato: apre un link (controllato con le regole del paese), chiama o scrive a un numero, compone un’email, si collega a un Wi-Fi, salva un contatto o chiede un pagamento (SEPA, QR-fattura svizzera, UPI, Pix e altri codici EMVCo, con controllo dell’IBAN e del checksum) o in criptovalute. Il link non viene mai aperto.
Invia il corpo JSON alla rotta specifica del tool, oppure a POST /v2/tools aggiungendo il campo tool. Entrambe le rotte restituiscono lo stesso risultato.
POST https://api.nocall.io/v2/qr-check
POST https://api.nocall.io/v2/tools {"tool":"qr-check","payload":"BCD\n002\n1\nSCT\n\nAparcamientos Ejemplo SL\nES9121000418450200051332\nEUR49.90\n\n\nMulta de aparcamiento 4471","country":"ES"}Parametri
| Nome | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| payload | string (1–4296) | Sì | Il testo decodificato del codice QR, fino a 4296 caratteri. Decodifica l’immagine dal tuo lato. |
| country | string (enum, 55) | No (predefinito: "ES") | Paese di cui si usa il set di regole SMS. |
REQUEST_ID="$(uuidgen)" && [ -n "$REQUEST_ID" ] &&
curl --request POST 'https://api.nocall.io/v2/qr-check' \
--header "Authorization: Bearer $NOCALL_API_KEY" \
--header 'Content-Type: application/json' \
--header "Idempotency-Key: $REQUEST_ID" \
--data '{"payload":"BCD\n002\n1\nSCT\n\nAparcamientos Ejemplo SL\nES9121000418450200051332\nEUR49.90\n\n\nMulta de aparcamiento 4471","country":"ES"}'import json
import os
import urllib.request
import uuid
api_key = os.environ.get('NOCALL_API_KEY')
if not api_key:
raise SystemExit('Set NOCALL_API_KEY')
request = urllib.request.Request(
'https://api.nocall.io/v2/qr-check',
method='POST',
data=json.dumps({'payload': 'BCD\n002\n1\nSCT\n\nAparcamientos Ejemplo SL\nES9121000418450200051332\nEUR49.90\n\n\nMulta de aparcamiento 4471', 'country': 'ES'}).encode(),
headers={
'Authorization': 'Bearer ' + api_key,
'Content-Type': 'application/json',
'Idempotency-Key': str(uuid.uuid4()),
},
)
with urllib.request.urlopen(request, timeout=30) as response:
result = json.load(response)
print(result['data']['result'], result['meta']['unitsCharged'])import { randomUUID } from 'node:crypto';
const requestId = randomUUID();
const apiKey = process.env.NOCALL_API_KEY;
if (!apiKey) throw new Error('Set NOCALL_API_KEY');
const response = await fetch('https://api.nocall.io/v2/qr-check', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + apiKey,
'Content-Type': 'application/json',
'Idempotency-Key': requestId,
},
body: JSON.stringify({ payload: 'BCD\n002\n1\nSCT\n\nAparcamientos Ejemplo SL\nES9121000418450200051332\nEUR49.90\n\n\nMulta de aparcamiento 4471', country: 'ES' }),
});
const result = await response.json();
if (!response.ok) throw new Error(result.error?.code ?? 'request_failed');
console.log(result.data.result, result.meta.unitsCharged);Esempio di risposta (200)
Questo è l’esempio documentato nel riferimento API. Le ricerche usano un numero fittizio, mentre aggregati e risposte dell’IA mostrano la struttura del risultato, non dati reali.
{
"data": {
"tool": "qr-check",
"result": {
"payload": {
"type": "payment",
"scheme": "epc",
"payee": "Aparcamientos Ejemplo SL",
"account": "ES9121000418450200051332",
"accountValid": true,
"amount": "49.90",
"currency": "EUR",
"reference": "Multa de aparcamiento 4471",
"country": "ES",
"city": null,
"crcValid": null
},
"signals": [
"payment_request",
"amount_prefilled"
],
"attention": true,
"hosts": [],
"linkFlags": [],
"link": null,
"numbers": []
}
},
"meta": {
"requestId": "req_example",
"unitsCharged": 1,
"usage": {
"periodStart": "2026-10-01",
"unitLimit": 20,
"unitsUsed": 3,
"unitsRemaining": 17
}
}
}Campi del risultato (data.result)
| Campo | Tipo | Descrizione |
|---|---|---|
| payload | object | Cosa fa il codice: il suo tipo (url, phone, sms, email, wifi, contact, event, geo, payment, crypto, other_link o text) e i campi di quel tipo. La password di un Wi-Fi non viene mai restituita. |
| signals | array<string (enum, 26)> | I segnali propri del codice (payment_request, crypto_request, open_wifi, call_forwarding, premium_number…) più quelli delle regole sui link e sui testi. |
| attention | boolean | Se il contenuto merita un controllo più attento. |
| hosts | array<string> | Nomi host trovati nel testo. |
| linkFlags | array<"http" | "userinfo" | "internationalHost" | "ipAddress" | "nonStandardPort"> | Avvisi strutturali sul link: http, userinfo, host internazionale, indirizzo IP o porta non standard. |
| link | object | null | Il link analizzato di un codice url (host, host ASCII, ufficiale, marchio e porta), o null. |
| numbers | array<object> | I numeri che il codice chiama, a cui scrive, che elenca o verso cui trasferisce le chiamate, con la loro categoria e il loro rischio di premium-rate. |
Domande frequenti
Cos’è il quishing?
È il phishing con i codici QR: un codice falso viene incollato sopra quello vero su un parcometro o una colonnina di ricarica, oppure inviato in una lettera o in un’email, per portarti su un sito che ruba i tuoi dati o verso un pagamento che non dovresti fare.
Posso ricevere denaro inquadrando un codice QR?
No. Un codice di pagamento (un bonifico, UPI, Pix o altri) serve sempre a pagare. Se qualcuno ti chiede di inquadrare un codice per «ricevere» un rimborso o un premio, è una truffa.
È pericoloso anche solo inquadrare un codice?
Inquadrarlo legge soltanto il testo: il pericolo arriva quando apri il link, ti colleghi al Wi-Fi o confermi il pagamento. Per questo conviene controllarlo prima, qui o leggendo l’indirizzo che mostra la fotocamera prima di toccarlo.
