Generi tag HTML per favicon e Apple touch icon
Questo generatore di tag HTML per favicon trasforma un elenco di dimensioni e percorsi pubblici in un blocco ordinato di elementi link per il head di un sito.
Esegui gratis nel browser
Crea un riferimento favicon per ogni risorsa fornita e aggiunge automaticamente un riferimento Apple touch icon. Il risultato è deterministico, protegge i valori degli attributi ed è pronto da inserire in un template, un sito statico, un gestore di contenuti o il layout di un’applicazione.
Prepari un inventario preciso delle icone
Inizi dai file di icona già pubblicati dal Suo sito. Aggiunga una riga per ogni risorsa, indicando le dimensioni in pixel nel formato LARGHEZZAxALTEZZA e il percorso pubblico o l’URL. I set comuni per browser comprendono piccoli file quadrati per schede e preferiti, mentre un’immagine quadrata più grande è utile quando un dispositivo salva il sito nella schermata iniziale. I percorsi possono essere relativi al sito, come /assets/icons/favicon-32.png, oppure URL assoluti serviti da un host di risorse. Ogni dimensione deve comparire una sola volta, perché due file concorrenti dichiarati con le stesse misure rendono ambigua la selezione. Il generatore convalida tutte le righe prima di produrre il markup: percorsi vuoti, dimensioni non valide, misure duplicate e valori estremi non supportati diventano quindi errori di input chiari anziché tag difettosi. Lo strumento non consulta il filesystem e non scarica immagini, quindi considera le dimensioni una Sua dichiarazione esplicita. Verifichi che ogni percorso sia accessibile pubblicamente dopo la distribuzione e che le dimensioni reali dell’immagine corrispondano a quelle inserite.
Comprenda come vengono scelti e ordinati i tag
Per ogni icona fornita, il risultato include un elemento link con rel impostato su icon, un valore sizes normalizzato in minuscolo e un href sottoposto a escape. I tag per browser sono ordinati dall’area in pixel più piccola alla più grande, con criteri deterministici per risolvere le parità. Lo stesso insieme logico produce così sempre lo stesso output, anche se le righe arrivano in un ordine diverso. L’Apple touch icon viene scelta separatamente. Una risorsa quadrata esattamente di 180x180 ha la precedenza perché è una dimensione molto usata per le icone touch. Se manca, viene selezionata l’icona quadrata più grande; se non vi sono risorse quadrate, una regola di ripiego esplicita usa la risorsa più grande fornita. Il file scelto resta anche nell’elenco normale per browser, mentre un altro elemento link lo identifica con rel uguale ad apple-touch-icon. L’escape degli attributi protegge e commerciali, virgolette e parentesi angolari nei percorsi senza cambiare la destinazione interpretata dall’HTML. Il tipo MIME non viene dedotto dall’estensione, evitando dichiarazioni errate per route trasformate o prive di estensione.
Inserisca e verifichi il markup generato
Copi il valore html restituito nel head del template condiviso che serve tutte le pagine pubbliche. Se usa un framework, lo collochi nel layout principale o nel template dei metadati, anziché ripeterlo nelle singole route. L’array tags contiene le stesse righe come stringhe separate quando uno script di build richiede valori strutturati; icon_count e apple_touch_size rendono semplici i controlli automatici. Dopo la distribuzione, apra il sorgente della pagina generata e verifichi che gli href si risolvano dall’origine pubblica finale. Un percorso relativo al sito che inizia con una barra viene risolto dalla radice del dominio; senza barra, viene risolto rispetto al documento corrente e può comportarsi diversamente nelle route annidate. Per controllare una sostituzione, svuoti la cache del browser o usi una finestra privata, perché la cache delle favicon è particolarmente persistente. Provi anche ad aggiungere il sito alla schermata iniziale di un dispositivo mobile se questa esperienza è importante. Lo strumento scrive soltanto riferimenti: non crea immagini, non modifica manifest web, non carica risorse e non conferma il tipo di contenuto restituito dal server.
Casi d'uso
Creare il head di un sito statico
Trasformi un elenco versionato di risorse icona in markup pronto per un layout HTML condiviso.
Uniformare i template delle applicazioni
Generi dichiarazioni favicon ordinate in modo coerente per più siti che pubblicano percorsi differenti.
Automatizzare i metadati di distribuzione
Invii tag strutturati e la dimensione touch selezionata a un controllo di build o a una pipeline di rilascio.
Domande frequenti
Che cosa accade se non invio alcuna icona?
La richiesta non riesce e restituisce un errore di input non valido, perché sono necessari almeno un percorso e una dimensione.
Come viene scelta l’Apple touch icon?
Ha la precedenza un’icona quadrata di 180x180; in mancanza, viene usata la più grande icona quadrata. Se non ve ne sono, si seleziona la maggiore risorsa fornita.
Lo strumento crea o ridimensiona i file favicon?
No. Genera soltanto riferimenti HTML a file che Lei ha già creato e reso disponibili pubblicamente.
Posso usare URL assoluti?
Sì. Ogni percorso può essere un URL assoluto o relativo al sito; i caratteri pericolosi negli attributi HTML vengono sottoposti a escape.
Perché le dimensioni duplicate vengono rifiutate?
Una sola dichiarazione per dimensione rende prevedibile la selezione del browser ed evita che due risorse competano per le stesse misure.
Quanto costa l’API?
L’API costa $0.002 per richiesta. La versione per browser è disponibile gratuitamente in questa pagina.
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/web/favicon-meta-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"icons":[{"size":"16x16","path":"/favicon-16x16.png"},{"size":"32x32","path":"/favicon-32x32.png"},{"size":"180x180","path":"/apple-touch-icon.png"}]}'const res = await fetch("https://api.kit.forhosting.com/web/favicon-meta-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"icons": [
{
"size": "16x16",
"path": "/favicon-16x16.png"
},
{
"size": "32x32",
"path": "/favicon-32x32.png"
},
{
"size": "180x180",
"path": "/apple-touch-icon.png"
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/web/favicon-meta-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"icons": [
{
"size": "16x16",
"path": "/favicon-16x16.png"
},
{
"size": "32x32",
"path": "/favicon-32x32.png"
},
{
"size": "180x180",
"path": "/apple-touch-icon.png"
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/web/favicon-meta-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"icons":[{"size":"16x16","path":"/favicon-16x16.png"},{"size":"32x32","path":"/favicon-32x32.png"},{"size":"180x180","path":"/apple-touch-icon.png"}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"icons":[{"size":"16x16","path":"/favicon-16x16.png"},{"size":"32x32","path":"/favicon-32x32.png"},{"size":"180x180","path":"/apple-touch-icon.png"}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/web/favicon-meta-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"icons": [
{
"size": "16x16",
"path": "/favicon-16x16.png"
},
{
"size": "32x32",
"path": "/favicon-32x32.png"
},
{
"size": "180x180",
"path": "/apple-touch-icon.png"
}
]
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "web.favicon_meta_generate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Limiti
timeout_sec | 30 |
max_crawl_pages | 25 |
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |