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

grab-page-info

v1.0.2

Published

Grabs Open Graph and Twitter Card metadata out of an HTML page

Readme

grab-page-info

Grabs Open Graph and Twitter Card metadata out of an HTML page

Installation

Use npm (or yarn, or pnpm) to add grab-page-info to your project:

npm install grab-page-info

grab-page-info contains CommonJS and ESM modules for use in Node, in the browser and at the edge.

Usage

import { grabPageInfo } from 'grab-page-info';
const html = '<html></html>';
const info = grabPageInfo(html);

Types

PageInfo

The info returned from the grabPageInfo method has the following properties:

| Property | Type | Description | | -------- | ---- | ----------- | | title | string | The text inside the page's <title> tag | | charset | string | The character set from the page's <meta charset> tag, which gives the character encoding of the page's document | | links | LinkData[] | The details of any <link> tags in the page, including links for stylesheets, RSS feeds, icons, and so on | | metaApplicationName | string | The name of the application running in the web page | | metaDescription | string | A summary of the content of the page | | metaAuthor | string | The name of the document's author | | metaCreator | string | The name of the creator of the document, such as an organization or institution | | metaPublisher | string | The name of the document's publisher | | metaCopyright | string | A copyright declaration for the content of the page | | metaKeywords | string | Words relevant to the page's content separated by commas | | metaRating | string | Indicates the appropriate age level for accessing the content of the page | | metaGenerator | string | The identifier of the software that generated the page | | metaReferrer | string | Controls the HTTP Referer header of requests sent from the document | | metaThemeColor | string | A suggested color that user agents should use to customize the display of the page or of the surrounding user interface | | metaColorScheme | string | One or more color schemes with which the document is compatible | | metaRobots | string | The behavior that cooperative crawlers, or "robots", should use with the page | | metaGooglebot | string | A synonym of robots which is only followed by the indexing crawler for Google | | metaViewport | string | Gives hints about the size of the initial size of the viewport | | openTitle | string | The title of the page as it should appear within the graph, e.g., "The Rock" | | openType | string | The type of the page, e.g., "video.movie". Depending on the type specified, other properties will also be set | | openUrl | string | The canonical URL of the page that will be used as its permanent ID in the graph, e.g., "https://www.imdb.com/title/tt0117500/" | | openImages | OpenImageData[] | Images which should represent the page within the graph | | openDescription | string | A one to two sentence description of the page | | openDeterminer | string | The word that appears before the page's title in a sentence. An enum of (a, an, the, "", auto). If auto is chosen, the consumer of your data should chose between "a" or "an". Default is "" (blank) | | openLocale | string | The locale the page is marked up in. Of the format language_TERRITORY. Default is en_US | | openAlternateLocales | string[] | An array of other locales the page is available in | | openSiteName | string | If the page is part of a larger web site, the name which should be displayed for the overall site. e.g., "IMDb" | | openVideos | OpenVideoData[] | Video files that complement the page | | openAudio | OpenAudioData | An audio file to accompany the page | | twitterCard | string | The card type | | twitterSite | string | The Twitter username of the website. Either twitter:site or twitter:site:id is required | | twitterSiteId | string | The Twitter ID of the website. Either twitter:site or twitter:site:id is required | | twitterCreator | string | The Twitter username of the content creator | | twitterCreatorId | string | The Twitter user ID of the content creator | | twitterTitle | string | The title of the content (max 70 characters) | | twitterDescription | string | A description of the content (maximum 200 characters) | | twitterImage | TwitterImageData | An image to use in the card. JPG, PNG, WEBP and GIF formats are supported | | twitterPlayer | TwitterPlayerData | A player iframe to use in the card | | twitterApp | TwitterAppData | Details of the App to show in the card |

LinkData

The details of a <link> tag, such as a link to a stylesheet, RSS feed, icon, and so on.

| Property | Type | Description | | -------- | ---- | ----------- | | href | string | The URL of the linked resource. A URL can be absolute or relative | | rel | string | The relationship of the linked document to the current document. Its value must be a space-separated list of link type values | | title | string | The title of the linked resource | | type | string | The type of the content linked to. The value of the attribute should be a MIME type such as text/html, text/css, and so on | | sizes | string | The sizes of the icons contained in the resource. It must be present only if the rel contains a value of icon or a non-standard type such as Apple's apple-touch-icon | | media | string | Specifies the media that the linked resource applies to. Its value must be a media type/media query |

OpenImageData

An image which should represent a page within the graph.

| Property | Type | Description | | -------- | ---- | ----------- | | url | string | An image URL which should represent the page within the graph | | secureUrl | string | An alternate url to use if the webpage requires HTTPS | | type | string | A MIME type for this image | | width | string | The number of pixels wide | | height | string | The number of pixels high | | alt | string | A description of what is in the image (not a caption). If the page specifies an image it should specify alt text |

OpenVideoData

A video file that complements a page.

| Property | Type | Description | | -------- | ---- | ----------- | | url | string | A video URL which should accompany the page within the graph | | secureUrl | string | An alternate url to use if the webpage requires HTTPS | | type | string | A MIME type for this video | | width | string | The number of pixels wide | | height | string | The number of pixels high |

OpenAudioData

An audio file to accompany a page.

| Property | Type | Description | | -------- | ---- | ----------- | | url | string | An audio URL which should accompany the page within the graph | | secureUrl | string | An alternate url to use if the webpage requires HTTPS | | type | string | A MIME type for this audio |

TwitterImageData

An image to use in in a Twitter card.

| Property | Type | Description | | -------- | ---- | ----------- | | url | string | The URL of the image to use in the card. JPG, PNG, WEBP and GIF formats are supported | | alt | string | A text description of the image conveying the essential nature of an image to users who are visually impaired. Maximum 420 characters |

TwitterPlayerData

A player iframe to use in a Twitter card.

| Property | Type | Description | | -------- | ---- | ----------- | | url | string | The HTTPS URL of the player iframe | | width | string | The width of the iframe in pixels | | height | string | The height of the iframe in pixels | | stream | string | A URL to a raw video or audio stream |

TwitterAppData

Details of the App to show in a Twitter card.

| Property | Type | Description | | -------- | ---- | ----------- | | country | string | The country the app is from | | iPhoneName | string | The name of the iPhone app | | iPhoneId | string | The iPhone app ID in the iTunes App Store | | iPhoneUrl | string | The iPhone app's custom URL scheme (which must include '://' after the scheme name) | | iPadName | string | The name of the iPad optimized app | | iPadId | string | The iPad app ID in the iTunes App Store | | iPadUrl | string | The iPad app's custom URL scheme | | androidName | string | The name of the Android app | | androidId | string | The Android app ID in the Google Play Store | | androidUrl | string | The Android app's custom URL scheme |