jeffersongoncalves/laravel-favicon-proxy

A Laravel package that proxies and server-side caches website favicons (Google S2 by default) behind a same-origin route, so visitors' browsers never hit the third-party favicon service. Validates the upstream content-type, sends nosniff, negative-caches failures and falls back to a transparent pixe

Maintainers

Package info

github.com/jeffersongoncalves/laravel-favicon-proxy

pkg:composer/jeffersongoncalves/laravel-favicon-proxy

Fund package maintenance!

jeffersongoncalves

Statistics

Installs: 13

Dependents: 0

Suggesters: 0

Stars: 1

Open Issues: 0

v1.0.0 2026-06-22 00:13 UTC

This package is auto-updated.

Last update: 2026-06-22 00:19:09 UTC


README

Laravel Favicon Proxy

Laravel Favicon Proxy

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

Proxy website favicons through your own host. Instead of pointing an external-link <img> straight at a third-party favicon service (a cross-origin connection on every page, leaking which links a visitor sees), this fetches the icon server-side once, caches the bytes, and serves them same-origin — the browser never talks to the upstream.

  • Default upstream is Google's S2 favicon service; configurable.
  • Validates the upstream content-type and sends X-Content-Type-Options: nosniff (a non-image response is never served under an image type).
  • Negative-caches failures, falls back to a transparent 1×1 pixel.

Installation

composer require jeffersongoncalves/laravel-favicon-proxy

The /favicon-proxy route is registered automatically. Point your icons at it:

<img src="{{ route('favicon-proxy', ['domain' => 'laravel.com']) }}" alt="" width="16" height="16">

Optionally publish the config:

php artisan vendor:publish --tag="favicon-proxy-config"

Configuration

Key Default Description
enabled true Register the proxy route.
path favicon-proxy Route path.
middleware ['throttle:120,1'] Middleware on the route.
endpoint https://www.google.com/s2/favicons Upstream favicon service.
query domain Query parameter carrying the domain.
size 64 Requested icon size (px).
timeout 6 Upstream request timeout (s).
cache_prefix favicon Cache key prefix.
cache_days 30 How long a fetched icon is cached.
negative_cache_hours 6 How long a failure is negative-cached.

Testing

composer test

License

The MIT License (MIT). Please see License File for more information.