laravel-favicon-generator maintained by infernalmedia
Laravel Favicon Generator
A Laravel package to generate and manage high-quality favicons for your web application. This package provides two main features:
- A generator to create all necessary favicon files from a single source image with optimal quality
- A Blade component to easily include the favicon meta tags in your HTML
This package is a maintained fork of blockpoint/laravel-favicon-generator, compatible with Laravel 12 and 13.
Features
- Generates high-quality PNG icons using Imagick when available (with GD fallback)
- Creates favicon.ico, favicon-96x96.png, favicon.svg, apple-touch-icon.png
- Generates web app manifest icons (192x192 and 512x512)
- Creates site.webmanifest file
- Generates SVG favicon from any source image format
- Maintains aspect ratio while ensuring exact dimensions
Requirements
- PHP 8.3 or higher
- Laravel 12 or 13
- GD or Imagick PHP extension
Installation
You can install the package via composer:
composer require infernalmedia/laravel-favicon-generator
You can publish the config file with:
php artisan vendor:publish --tag="favicon-generator-config"
Optionally, you can publish the views using:
php artisan vendor:publish --tag="favicon-generator-views"
Usage
Generating Favicons
To generate favicons from a source image, use the provided Artisan command:
php artisan favicon:generate {path/to/your/source/image.png}
This will generate the following favicon files in your public/favicon directory (configurable via the output_path config option):
- favicon.ico for general browser support
- favicon-96x96.png for higher-resolution displays
- favicon.svg for scalable, high-quality vector images (if source is SVG)
- apple-touch-icon.png for iOS devices
- web-app-manifest-192x192.png and web-app-manifest-512x512.png for Progressive Web Apps
- site.webmanifest for PWA configuration
Using the Blade Component
To include the favicon meta tags in your HTML, add the following component to your layout file:
<head>
<!-- Other head elements -->
<x-favicon-meta />
</head>
This will output the necessary meta tags for all generated favicons:
<link
rel="icon"
type="image/png"
href="/favicon/favicon-96x96.png"
sizes="96x96"
/>
<link rel="icon" type="image/svg+xml" href="/favicon/favicon.svg" />
<link rel="shortcut icon" href="/favicon/favicon.ico" />
<link
rel="apple-touch-icon"
sizes="180x180"
href="/favicon/apple-touch-icon.png"
/>
<link rel="manifest" href="/favicon/site.webmanifest" />
<meta name="application-name" content="Your App Name" />
<meta name="apple-mobile-web-app-title" content="Your App Name" />
<meta name="mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
The component will automatically use the application name from your web manifest file or fall back to your Laravel app name configuration.
Programmatic Usage
You can also generate favicons programmatically:
use InfernalMedia\LaravelFaviconGenerator\LaravelFaviconGenerator;
$generator = new LaravelFaviconGenerator();
$generatedFiles = $generator->generate('path/to/your/source/image.png');
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Upgrading
Please see UPGRADING for details on migrating from blockpoint/laravel-favicon-generator 1.x.
Contributing
Please see CONTRIBUTING for details.
Credits
- Infernal Média
- Blockpoint for the original package
- All Contributors
License
The MIT License (MIT). Please see License File for more information.