Tu script tiene que conseguir 50 iconos de sitios para un dashboard y no quieres alojarlos tú. Una API pública de favicon resuelve esto en dos líneas de código, pero ¿cuál elegir? La API de favicon de DuckDuckGo lleva años haciendo este trabajo discretamente, junto al servicio S2 de Google y a las peticiones directas a /favicon.ico.
Cada opción devuelve un formato de archivo distinto, se comporta diferente bajo carga y falla de forma diferente cuando un sitio no tiene icono. Elegir mal significa miniaturas rotas o misteriosos 404 en tus logs.
Comparación rápida: API de favicon de DuckDuckGo vs alternativas
| Criterio | DuckDuckGo | Google S2 | Directo /favicon.ico |
|---|---|---|---|
| Patrón de endpoint | icons.duckduckgo.com/ip3/{domain}.ico | s2.googleusercontent.com/s2/favicons?domain={domain} | {site}/favicon.ico |
| Formato de respuesta | Solo ICO | PNG (16x16 por defecto) | Lo que sirva el sitio |
| Tamaño predeterminado | Contenedor ICO multitaramaño | 16x16 (sz=64 máx.) | Definido por el sitio |
| Límites de tasa documentados | Sin documentación oficial | Sin documentación oficial | CORS por sitio / servidor |
| Compatible con CORS | Sí (con matices) | Sí | Normalmente no |
| Proxy / capa de privacidad | Sí (proxy de DuckDuckGo) | Sí (proxy de Google) | Ninguna |
| Respaldo cuando falta | Devuelve 404 | Devuelve un globo terráqueo por defecto | 404 o error HTML |
| Ideal para | Iconos estilo pestaña, necesidades de ICO | Miniaturas pequeñas, paridad con SERP | Recurso fuente exacto |
Cómo funciona realmente la API de favicon de DuckDuckGo
El endpoint es bien sencillo: https://icons.duckduckgo.com/ip3/example.com.ico. DuckDuckGo obtiene el favicon real del sitio en su propia infraestructura, lo convierte a un contenedor ICO si hace falta y lo sirve desde su CDN. Nunca tocas el servidor de origen, lo que esquiva la mayoría de muros de CORS.
Este enfoque de proxy hace que la URL también funcione como una descarga que preserva la privacidad. Los navegadores de tus visitantes no contactan directamente al sitio de destino solo para renderizar un icono. Es el mismo truco que juega el s2.googleusercontent.com de Google, y por eso ambos endpoints funcionan en etiquetas <img> desde cualquier origen sin cabeceras extra.
Limitaciones de formato
El mayor problema: DuckDuckGo solo devuelve ICO. Si necesitas un PNG nítido de 64x64 para una lista estilo iOS, tendrás que convertirlo. Nuestra guía de conversión de PNG a ICO cubre la dirección inversa, pero las mismas herramientas sirven para ambos casos. Para proyectos donde el ICO funciona bien — pestañas de navegadores de escritorio, fallbacks de <link rel='icon'> heredados — DuckDuckGo es genuinamente la opción más cómoda.
Cuándo gana la Favicon API de DuckDuckGo
- Necesitas ICO sin el paso de conversión. Los fallbacks de pestañas del navegador, el soporte legacy de IE y los accesos directos de Windows todavía quieren ICO. DuckDuckGo te lo entrega directamente.
- Estás descargando desde el navegador y quieres cero configuración de CORS. Tanto DuckDuckGo como Google hacen de proxy en la petición, pero DuckDuckGo históricamente ha sido más permisivo con el hot-linking.
- Quieres un proxy que respete la privacidad. La marca de DuckDuckGo está construida sobre la ausencia de tracking, lo que hace que su endpoint de favicon se sienta menos vigilante que el de Google.
Cuándo Google S2 es la mejor elección
- Quieres un PNG, no un ICO. El endpoint de Google sirve
image/pngpor defecto y admite un parámetrosz=de hasta 64 píxeles. - Estás construyendo una lista estilo SERP. Google devuelve un icono de globo predeterminado cuando un sitio no tiene favicon. DuckDuckGo devuelve un 404, que tendrás que gestionar.
- Quieres miniaturas consistentes de 16x16. La respuesta de Google siempre es pequeña, rápida y predecible.
Cuándo /favicon.ico directo todavía tiene sentido
Para un único sitio de confianza —tu propio CDN, el sitio de un partner, una fuente conocida y fiable—, obtener el favicon directamente te da el asset original a resolución completa. Obtienes SVG, ICO multi-resolución, PNG animado, lo que sea que el sitio sirva realmente. El trade-off es CORS: la mayoría de los sitios no enviarán los headers que tu navegador necesita, así que esto solo funciona de servidor a servidor, no en el cliente.
Si vas a hacer fetching masivo, la falta de documentación sobre rate limits es un riesgo real. Algunos orígenes te devolverán 429 tras 50 peticiones, otros no. Las APIs públicas absorben ese riesgo por ti, que es precisamente la razón de su existencia.
Recommendation
Para la mayoría de proyectos en el lado del cliente donde necesitas un icono funcional en una pestaña del navegador o vista de lista, la DuckDuckGo favicon API es la opción por defecto adecuada cuando quieres ICO. Combínala con nuestro free favicon generator si además necesitas publicar tus propios iconos. Para thumbnails en PNG y resultados con paridad con Google SERP, el endpoint S2 de Google es más rápido y predecible. Reserva las peticiones directas a /favicon.ico para uso de dominio único y de confianza donde necesites el archivo fuente a resolución completa.
Independientemente de la API que elijas, cachea el resultado. Las peticiones de favicon en el navegador son notoriousmente sticky, y tu servidor te agradecerá que no martillees el CDN de DuckDuckGo en cada carga de página.
Check the documented requirements
El HTML Standard define rel='icon' como la relación de enlace para un icono que representa la página actual.