Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use Spatie’s spatie/laravel-og-image package to turn Blade-rendered HTML into a social preview image. Add its <x-og-image> component to a Blade view; the package renders the template, adds Open Graph and Twitter image metadata, and stores the generated image for later requests. Its documented default is 1200 × 630 pixels at a device scale factor of 2. This approach lets you design dynamic previews with your existing Blade markup, CSS, fonts, and Vite assets rather than maintaining a separate image-generation pipeline.

Generate a dynamic Open Graph image in Laravel

Install the package with Composer:

composer require spatie/laravel-og-image

Then put the component in the Blade view for the page whose social preview you want to generate. For a page-specific design, place the HTML you want captured inside the component:

<x-og-image>
    <div class="w-full h-full flex items-center justify-center bg-slate-900 text-white">
        <div class="text-center">
            <p>TECHNOLOGY</p>
            <h1>{{ $post->title }}</h1>
        </div>
    </div>
</x-og-image>

The sample uses Tailwind-style classes to communicate the layout; use styling available in your application. The important part is that the root design fills the capture area. Keep the headline legible at thumbnail size, and use a flex or grid layout to control alignment. Since the template is Blade HTML, dynamic values such as a post title can be rendered from the page data.

For a shared layout, point the component at a Blade view and pass the values that view needs:

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter
  • Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
  • Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
  • Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
  • Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
  • 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.
<x-og-image view="og-image.post" :data="['title' => $post->title]" />

Create the referenced og-image.post view and design its root element to occupy the full capture area. This separates reusable presentation from the page template and makes it easier to keep previews consistent across posts. The package manages the image-related Open Graph and Twitter metadata for the page, including og:image, twitter:image, and twitter:card.

What happens when a crawler requests the image

  1. The Blade component hashes its template HTML and records the page URL associated with that hash.
  2. Middleware puts a stable image URL, in a form such as /og-image/{hash}.jpeg, into the response metadata.
  3. When a crawler requests that image, the package opens the page with the ?ogimage query string, renders the image template at the configured dimensions, and captures it using the selected driver.
  4. The resulting image is saved to the configured disk. Later requests are served from storage with cache headers suitable for CDN use.

The hash is useful for cache invalidation: changing the template content produces a different image URL, so a crawler can request the new asset rather than relying on an old URL. The captured view inherits the page’s existing CSS, fonts, and Vite assets, which usually means you can use your app’s design system rather than building a separate OG stylesheet.

Requirements and browser drivers

The package’s current requirements page specifies PHP 8.3 or later and Laravel 12 or later. Check compatibility against your deployed PHP and Laravel versions before installing, especially if the application is pinned to an older release.

Rank #2
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter
  • 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
  • 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
  • Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
  • 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
  • What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.
Driver Best fit Trade-off
Browsershot with local Chrome or Chromium Self-hosted Laravel servers where you control the runtime and browser binaries. Requires Node.js and Chrome or Chromium, plus ongoing maintenance of those dependencies.
Cloudflare Browser Rendering Deployments that prefer a hosted browser-rendering service over managing a local browser. Adds an external service dependency; assess network, cost, and availability requirements for your application.

The default Browsershot driver uses Puppeteer-controlled headless Chrome to render a URL or HTML into an image or PDF. Therefore, installing the Laravel package alone is not enough for local rendering: the server also needs the required Node.js and Chrome/Chromium environment. Cloudflare Browser Rendering is documented as an alternative if those local dependencies do not suit your deployment.

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose the image size and format

The documented default is 1200 × 630 pixels at a device scale factor of 2. That is the sensible starting point for a typical social preview: design within the 1200-by-630 layout, use a clear hierarchy, and avoid placing essential text at the extreme edges. The package’s documented default should not be confused with a guarantee that every social network will display the full image identically; rendering and cropping depend on the platform.

JPEG is the default output. PNG and WebP are also supported. Pick a format based on the appearance and delivery needs of your image, and check the resulting file in the actual page metadata and target sharing platform.

Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter
  • Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
  • Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
  • Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
  • Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
  • What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.

Preview, reuse, or skip generated images

Preview the capture

Append ?ogimage to the page URL to preview what the package will capture. This is a direct way to inspect layout, typography, loaded assets, and dynamic content before relying on the image in a social preview.

Use an existing designed image

If a post already has a suitable image, pass its URL through the component’s url attribute instead of generating a screenshot for that page:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
<x-og-image url="https://example.com/images/post-preview.jpg" />

This is useful for editorial artwork or other images that already exist. The URL is the existing image to use, not a request to render the page template.

Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray
  • Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
  • Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
  • Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
  • Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
  • Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft

Deploy and cache generated images

Generated assets are saved to the configured disk, and subsequent requests are served directly with cache headers suited to CDN delivery. The component’s content hash gives an updated template a new URL, which reduces the chance that a CDN or social crawler will keep associating the old image with changed markup. Confirm that the configured disk is reachable in your production environment and that the generated image URL is publicly accessible to the crawlers that need it.

For reliable deployments, test a first uncached capture as well as a later request served from storage. The initial request involves page rendering and a browser driver; later requests can use the stored result. Ensure production has the same relevant CSS, fonts, and Vite-built assets available as the page itself. If the preview is blank or unstyled, verify those resources in the captured page rather than assuming the image component has its own independent asset pipeline.

Troubleshooting common problems

  • The package installs but image generation fails: confirm the PHP and Laravel versions meet the package’s stated requirements. If using the default local driver, verify that Node.js and Chrome or Chromium are installed and available to the runtime used by Laravel.
  • The preview is blank or has missing styles: open the page with ?ogimage, inspect the captured template, and check that the app’s CSS, fonts, and Vite assets load in that request context. Make the capture root fill the viewport and avoid relying on styles that are not available to the rendered page.
  • The image still shows old content: compare the generated image URL after changing the template. The template hash is part of the URL; template changes should result in a new hash-based image URL. Also verify the page response metadata points at the current URL.
  • The crawler cannot load the image: check that the generated URL resolves publicly and that the configured storage and cache setup serve it to external clients. A locally accessible file is not necessarily accessible to a social crawler.
  • The design is cropped or text is too small: design for the documented 1200 × 630 default, fill that area with a deliberate layout, and preview the exact capture. Keep important text large and away from edges; check the result in the platform where it will be shared.
  • Local browser dependencies are an operational burden: use the documented Cloudflare Browser Rendering alternative if a hosted browser service better fits your deployment, after evaluating its service dependency, cost, network path, and availability for your needs.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Performance and cost considerations

The expensive work is the browser render on a cache miss; stored images can be served directly on later requests. Content-addressed image URLs and cache headers make the output suitable for CDN caching, but your actual storage, browser-service, and delivery costs depend on your infrastructure and usage. The package’s Packagist listing recorded 83,282 installs in 2026 and version 1.3.1 published on June 16, 2026; registry counts and versions can change, so check Packagist for current values before making upgrade or adoption decisions.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Best Value
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display
  • 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
  • Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
  • Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
  • HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
  • What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.

Or skip the browser setup

If you need a screenshot of a publicly reachable page rather than a Laravel-managed Blade OG component, ScreenshotNeo is a screenshot API and MCP server for developers. It can return an image or PDF from one GET request; its API does not replace the package’s Laravel metadata and hash-based storage behavior.

For example, this cURL request captures a page as WebP:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

See the ScreenshotNeo API documentation for the request options. Cookie banners, popups, and chat widgets are removed before the shot; bot checks, blank pages, and failed loads are never billed. Its MCP server lets AI agents take screenshots. The free plan includes 1,000 screenshots a month with no card, and paid plans start at $5 for 3,000. Sign up for ScreenshotNeo’s free plan.

Frequently Asked Questions

Can I use different data for every post image?

Yes. Reference a reusable Blade view with the component’s view attribute and provide its values through data, such as a post title.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Does the generated image have to be JPEG?

No. JPEG is the default, and PNG and WebP are supported.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.