npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, πŸ‘‹, I’m Ryan HefnerΒ  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you πŸ™

Β© 2026 – Pkg Stats / Ryan Hefner

astro-lqip

v1.8.4

Published

πŸ–ΌοΈ Native extended Astro components for generating low-quality image placeholders (LQIP), compatible with `<Image>`, `<Picture>` and CSS background images.

Readme

astro-lqip

πŸ–ΌοΈ astro-lqip

npm version GitHub actions workflow tests status license

Native extended Astro components for generating low-quality image placeholders (LQIP), compatible with <Image>, <Picture> and CSS background images.

✨ Features

  • πŸ–ΌοΈ Supports both <Image> and <Picture> components and CSS background images.
  • 🎨 Multiple LQIP techniques: base64, solid color, CSS via gradients and SVG.
  • πŸš€ Easy to use, just replace the native Astro components by astro-lqip.
  • ⚑️ Support images as static imports or using string paths.
  • πŸ”§ Fully compatible with Astro's image optimization features.
  • 🌍 Supports both local and remote images.
  • βš™οΈ Supports SSR mode with Node Adapter.

πŸ“¦ Installation

You can install astro-lqip using npm:

$ npm install astro-lqip

Using pnpm:

$ pnpm add astro-lqip

Using yarn:

$ yarn add astro-lqip

Using bun:

$ bun add astro-lqip

πŸš€ Usage

In your current Astro project, just replace the import of the native Astro <Image> or <Picture> components by astro-lqip or import the <Background> component for optimized CSS background images.

Image

- import { Image } from 'astro:assets';
+ import { Image } from 'astro-lqip/components';

Picture

- import { Picture } from 'astro:assets';
+ import { Picture } from 'astro-lqip/components';

Background

+ import { Background } from 'astro-lqip/components';

Example:

---
import { Image, Picture, Background } from 'astro-lqip/components';

import image from '/src/assets/images/image.png';
import otherImage from '/src/assets/images/other-image.png';
import backgroundImage from '/src/assets/images/background-image.png';
---

<Image src={image} alt="Cover Image" width={220} height={220} />
<Picture src={otherImage} alt="Other Image" width={220} height={220} />
<Background src={backgroundImage}>
  <section>
    <p>Optimized background</p>
  </section>
</Background>

<style>
  section {
    background-image: var(--background);
    background-size: cover;
    background-position: center;
  }
</style>

[!TIP] Since version 1.6.0, you can also put the image path as string directly in the src prop. Support absolute paths in src, relative paths and alias.

---
import { Image, Picture, Background } from 'astro-lqip/components';
---

<Image src="/src/assets/images/image.png" alt="Cover Image" width={220} height={220} />
<Picture src="/src/assets/images/other-image.png" alt="Other Image" width={220} height={220} />
<Background src="/src/assets/images/background-image.png">
  <section>
    <p>Optimized background</p>
  </section>
</Background>

<style>
  section {
    background-image: var(--background);
    background-size: cover;
    background-position: center;
  }
</style>
---
import { Image, Picture, Background } from 'astro-lqip/components';
---

<!-- assuming you are on the path `/src/pages/index.astro` -->
<Image src="../assets/images/image.png" alt="Cover Image" width={220} height={220} />
<Picture src="../assets/images/other-image.png" alt="Other Image" width={220} height={220} />
<Background src="../assets/images/background-image.png">
  <section>
    <p>Optimized background</p>
  </section>
</Background>

<style>
  section {
    background-image: var(--background);
    background-size: cover;
    background-position: center;
  }
</style>
---
import { Image, Picture, Background } from 'astro-lqip/components';
---

<Image src="@/assets/images/image.png" alt="Cover Image" width={220} height={220} />
<Picture src="@/assets/images/other-image.png" alt="Other Image" width={220} height={220} />
<Background src="@/assets/images/background-image.png">
  <section>
    <p>Optimized background</p>
  </section>
</Background>

<style>
  section {
    background-image: var(--background);
    background-size: cover;
    background-position: center;
  }
</style>

Learn how to configure path aliasing in the Astro documentation. If you want more examples of uses you can see the Usage Tips page.

βš™οΈ Props

πŸ”© Image and Picture

Both <Image> and <Picture> components support all the props of the native Astro components, but adds a couple of props for LQIP management:

lqip (string) β€” optional

The LQIP type to use. It can be one of the following:

  • base64 (default) β€” Base64-encoded LQIP image
  • color β€” Solid color placeholder
  • css β€” CSS-based LQIP image
  • svg β€” SVG-based LQIP image
  • false β€” Disables LQIP generation

lqipSize (number) β€” optional (default 4)

The size of the LQIP image, which can be any number from 4 to 64.

[!WARNING] A high value for lqipSize can significantly increase the total size of your website.

---
import { Image, Picture } from 'astro-lqip/components';

import image from '/src/assets/images/image.png';
import otherImage from '/src/assets/images/other-image.png';
---

<Image src={image} alt="Cover Image" width={220} height={220} lqip="svg" lqipSize={10} />
<Picture src={otherImage} alt="Other Image" width={220} height={220} lqip="css" lqipSize={7} />

[!TIP] For the <Image> component, a parentAttributes prop similar to pictureAttributes has been added.

---
import { Image } from 'astro-lqip/components';

import image from '/src/assets/images/image.png';
---

<Image
  src={image}
  alt="Cover Image"
  width={220}
  height={220}
  lqip="svg"
  lqipSize={10}
  parentAttributes={{ style: "background-color: red;" }}
/>

πŸ”© Background

The <Background> component supports the following props:

src (string) β€” required

The source of the background image located in src folder. It can be a static import, absolute path, relative path, alias path or remote URL.

lqip (string) β€” optional

The LQIP type to use. It can be one of the following:

  • base64 (default) β€” Base64-encoded LQIP image
  • color β€” Solid color placeholder
  • css β€” CSS-based LQIP image
  • svg β€” SVG-based LQIP image
  • false β€” Disables LQIP generation

cssVariable (string) β€” optional

Represents the name of the CSS variable to store the background data.

  • By default, the background data is stored in a CSS variable named --background.
  • For responsive backgrounds, the CSS variable names are generated based on the provided widths, following the pattern:
    • --background-small (lower than 768px)
    • --background-medium (768px to 1199px)
    • --background-large (1200px to 1919px)
    • --background-xlarge (1920px and above), --background is also generated for the largest image for backward compatibility.
  • If the cssVariable prop is provided, the generated CSS variable names will follow the pattern:
    • --{cssVariable}-small
    • --{cssVariable}-medium
    • --{cssVariable}-large
    • --{cssVariable}-xlarge, --{cssVariable} is also generated for the largest image for backward compatibility.

format (string | string[]) β€” optional

The image format to use for the background. It can be one of the following in string or an array of strings. If an array is provided, this generates multiple background images with the native image-set() CSS function, which allows the browser to choose the best format to use based on its support:

  • avif
  • webp (default)
  • jpeg
  • png

widths (array) β€” optional

An array of numbers that represents the widths to use for responsive background images.

width (number) β€” optional

The width to use for the background image. This prop is ignored if the widths prop is provided.

height (number) β€” optional

The height to use for the background image. This prop is ignored if the widths prop is provided.

quality (number) β€” optional

The quality to use for the background image. It can be a number from 1 to 100.

fit (string) β€” optional

The fit to use for the background image. It can be one of the following:

  • cover (default)
  • contain
  • fill
  • inside
  • outside
---
import { Background } from 'astro-lqip/components';
import backgroundImage from '/src/assets/images/background-image.png';
---

<Background src={backgroundImage} lqip="color" cssVariable="--bg-lqip" format={["avif", "webp"]} width={500} height={300} quality={80} fit="cover">
  <section>
    <p>Optimized background</p>
  </section>
</Background>

<style>
  section {
    background-image: var(--bg-lqip);
    background-size: cover;
    background-position: center;
  }
</style>
---
import { Background } from 'astro-lqip/components';
import backgroundImage from '/src/assets/images/background-image.png';
---

<Background src={backgroundImage} format="avif" widths={[475, 1000, 1536, 2100]}>
  <section>
    <p>Optimized background</p>
  </section>
</Background>

<style>
  section {
    background-image: var(--background-small); /* 475px */
    background-size: cover;
    background-position: center;
  }

  @media (width >= 768px) {
    section {
      background-image: var(--background-medium); /* 1000px */
    }
  }

  @media (width >= 1200px) {
    section {
      background-image: var(--background-large); /* 1536px */
    }
  }

  @media (width >= 1920px) {
    section {
      /* or var(--background), since it's the default variable for the largest image */
      background-image: var(--background-xlarge); /* 2100px */
    }
  }
</style>

[!NOTE] The lqipSize prop is not compatible with this component, to avoid large CSS outputs.

πŸ’‘ Knowledge

Since this integration is built on top of Astro native <Image> and <Picture> components, you can refer to the Astro documentation for more information on how to use it.

For some simple tips, visit the Usage Tips page.

🀝 Contributing

Contributions to this library are welcome! If you have any ideas for improvements or new features, please feel free to open an issue or submit a pull request. I appreciate your help in making astro-lqip better for everyone. Please read the CONTRIBUTING.md.

πŸ“„ License

This project is licensed under the MIT License. See the LICENSE file for details.