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

alpinejs-head

v1.2.2

Published

A lightweight Alpine JS plugin for dynamically managing HTML <head> elements. Easily update meta tags, titles, and other head content on the fly 🦆

Readme

Alpine JS Head

Alpine JS Head

Alpine JS Head is a simple plugin that lets you control your HTML <head> elements using Alpine JS.

What It Does

This plugin lets you dynamically update:

  • 📄 Page title
  • 📝 Meta descriptions
  • 🔍 SEO elements

Why Use It?

  • Simple: Change head elements without writing complex JavaScript
  • Reactive: Head elements update automatically when your data changes
  • Flexible: Use JSON, directives, or methods - whatever fits your style
  • SEO-friendly: Update meta tags on the fly for better search results

Install

CDN

<script
  defer
  src="https://unpkg.com/alpinejs-head@latest/dist/cdn.min.js"
></script>

<script defer src="https://unpkg.com/alpinejs@latest/dist/cdn.min.js"></script>

Package

yarn add -D alpinejs-head
npm install -D alpinejs-head
import Alpine from 'alpinejs'
import head from 'alpinejs-head'

Alpine.plugin(head)

Alpine.start()

Examples

JSON

You can use x-head.json to set the initial dynamic values and update them later through Alpine JS data binding.

This approach is ideal when you need to manage multiple head elements at once or when working with complex metadata structures.

<script x-data x-head.json type="application/json">
  {
    "title": "Alpine JS Head Demo",
    "meta": [
      {
        "name": "description",
        "content": "Dynamically control your page metadata with Alpine JS Head"
      },
      {
        "name": "theme-color",
        "content": "#00f"
      }
    ]
  }
</script>

Directives

The directive approach offers a clean, declarative way to manage head elements directly in your HTML structure. It's perfect for components that need to update metadata based on their state.

<div
  x-data="{
    title: 'Alpine JS Head Demo',
    description: 'Dynamically control your page metadata with Alpine JS Head',
    theme: '#00f'
  }"
  x-head.title="title"
  x-head.meta.description="description"
  x-head.meta.theme-color="theme"
>
  <input type="text" x-model="title" placeholder="Change page title" />

  <textarea
    x-model="description"
    placeholder="Update meta description"
  ></textarea>

  <div>
    <button type="button" @click="theme = '#00f'">Blue</button>
    <button type="button" @click="theme = '#f00'">Red</button>
    <button type="button" @click="theme = '#0f0'">Green</button>
  </div>
</div>

x-head will track the data of title, description, and theme and update the HTML <head> elements targeted through the modifiers.

You can bind multiple head elements to the same component, making it easy to update related metadata together.

Method

<button x-data type="button" @click="$head('title', 'Alpine JS Head Demo')">
  Title
</button>

<button
  x-data
  type="button"
  @click="$head('meta.description', 'Dynamically control your page metadata with Alpine JS Head')"
>
  Description
</button>