Una página Flask puede renderizarse sin problemas y, aun así, dejar en blanco la pestaña del navegador cuando el proyecto no incluye un enlace al favicon. La configuración más limpia del flask favicon consiste en guardar el icono en el directorio static de Flask y enlazarlo desde tu plantilla Jinja compartida.

¿Qué necesitas antes de empezar?

¿Cómo añadir un flask favicon en cinco pasos?

  1. 1. Coloca el icono en el directorio static

    Crea estas carpetas si no existen y coloca el archivo aquí:

    myapp/
    ├── app.py
    ├── static/
    │   └── favicon.ico
    └── templates/
        └── base.html

    No renombres un PNG como favicon.ico; usa un ICO real. Para los formatos de enlace PNG y SVG, consulta la guía de favicon en HTML.

  2. 2. Añade el enlace a tu plantilla base

    El HTML Standard define los enlaces rel='icon' a recursos de iconos externos. Añade este bloque dentro del <head> existente en templates/base.html:

    {% block head %}
      <link rel='icon' href='{{ url_for('static', filename='favicon.ico') }}'>
    {% endblock %}

    El uso de url_for evita tener rutas fijas cuando la aplicación utiliza un prefijo de URL o una ruta static personalizada.

  3. 3. Haz que cada página lo herede

    Extiende la plantilla base desde cada página. Si su bloque head tiene otro nombre, sustituye ese nombre a continuación:

    {% extends 'base.html' %}
    {% block head %}
      {{ super() }}
    {% endblock %}

    La llamada super() conserva el favicon y permite que cada página añada más contenido al head.

  4. 4. Ejecuta la aplicación y verifica la respuesta

    Inicia el servidor de desarrollo y abre directamente la URL del icono:

    flask --app app run --debug
    # Open http://127.0.0.1:5000/static/favicon.ico

    La petición directa debería devolver el icono, no HTML ni un 404. Inspecciona el <head> renderizado y comprueba que contiene el enlace rel='icon' generado por url_for.

  5. 5. Despliega con una URL pública estable

    En producción, sirve static/favicon.ico como un recurso static, no a través de una ruta de la aplicación. Mantén el nombre del archivo sin cambios; al reemplazar un icono antiguo, usa favicon-v2.ico y actualiza la plantilla para evitar que una copia obsoleta siga en la caché.

¿Qué suele romperse?

¿Cuándo está completa la configuración del favicon de Flask?

La configuración está completa cuando la URL directa del icono devuelve el archivo y todas las páginas heredan la declaración rel='icon'. ¿Necesitas el artwork original? Mzu favicondl puede preparar los archivos favicon antes de añadirlos a Flask.