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

CriterioDuckDuckGoGoogle S2Directo /favicon.ico
Patrón de endpointicons.duckduckgo.com/ip3/{domain}.icos2.googleusercontent.com/s2/favicons?domain={domain}{site}/favicon.ico
Formato de respuestaSolo ICOPNG (16x16 por defecto)Lo que sirva el sitio
Tamaño predeterminadoContenedor ICO multitaramaño16x16 (sz=64 máx.)Definido por el sitio
Límites de tasa documentadosSin documentación oficialSin documentación oficialCORS por sitio / servidor
Compatible con CORSSí (con matices)SíNormalmente no
Proxy / capa de privacidadSí (proxy de DuckDuckGo)Sí (proxy de Google)Ninguna
Respaldo cuando faltaDevuelve 404Devuelve un globo terráqueo por defecto404 o error HTML
Ideal paraIconos estilo pestaña, necesidades de ICOMiniaturas pequeñas, paridad con SERPRecurso 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

Cuándo Google S2 es la mejor elección

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.