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

@v0idd0/tabsnap

v1.0.1

Published

tabsnap — format a tab list (or any tabs-shaped JSON) as markdown, plain text, JSON, or a readme file. Library + CLI. Same formatters that power the tabsnap browser extension. Zero deps. Free forever from vøiddo.

Readme

tabsnap

npm version npm downloads License: MIT Manifest V3 Built by vøiddo

Capture every open tab as plain text, markdown, JSON, or a readme file. One click in the browser. One pipe in the terminal. Free, MIT, zero telemetry.

Browser-extension landing · CLI landing · npm · Privacy


Two faces, one engine

The same snapshot.js formatters drive both the browser extension popup and the @v0idd0/tabsnap CLI on npm. Output bytes are identical for the same inputs.

As a browser extension

Click the toolbar icon → tabsnap reads the title and URL of every tab you have open and renders them in the popup as one of four formats:

  • markdown — nested list grouped by window, hostnames as section headers
  • plain — one tab per line, title + URL
  • json — structured array, ready to feed into another tool
  • readme.md — full markdown document with a domain-summary table at the top

Hit copy or download and you're done.

As a CLI

npm i -g @v0idd0/tabsnap

# pipe any tabs-shaped JSON in, get a snapshot out
cat tabs.json | tabsnap                    # markdown (default)
cat tabs.json | tabsnap --format=readme    # readme.md
cat tabs.json | tabsnap -f json --no-group # flat structured array

# from file
tabsnap --file=tabs.json -f plain

# include pinned + incognito tabs (skipped by default)
tabsnap --include-pinned --include-incognito < tabs.json

# pipe to clipboard (macOS) or any tool
tabsnap --format=readme < tabs.json | pbcopy

Accepted input shapes (the CLI auto-detects):

// 1) bare array
[ {"title":"…","url":"…","windowId":1,"pinned":false}, … ]

// 2) {tabs:[…]} wrapper
{ "tabs": [ … ] }

// 3) {windows:[{tabs:[…]}]} wrapper — also matches the JSON tabsnap exports
{ "windows": [ {"window_index":1, "tabs":[…]}, … ] }

As a library

const { formatTabs, filterTabs, groupTabsByWindow, countByDomain } = require('@v0idd0/tabsnap');

const out = formatTabs(myTabs, 'markdown', {
  groupByWindow: true,
  includePinned: false,
  includeIncognito: false,
});

Pure functions, zero deps, works in any JS runtime that has URL + Date.

Privacy

tabsnap reads only chrome.tabs metadata (title, URL, windowId, pinned, incognito) and only when you click the toolbar icon. No backend. No analytics. No telemetry. Your tabs never leave your machine.

Permissions:

  • tabs — list open tabs
  • downloads — save the snapshot to a file (only on user click)
  • storage — remember your popup preferences across sessions

No host permissions. No activeTab. No content scripts.

The CLI is a Node.js process — it cannot reach the browser. It only formats JSON you hand it.

Repo layout

chrome/      Manifest V3 source for Chrome / Edge / Brave
firefox/     Manifest V3 source with browser_specific_settings.gecko
edge/        Manifest V3 source (mirrors chrome/)
src/         CLI / library source — published to npm as @v0idd0/tabsnap
bin/         CLI entry point
test.js      40 smoke tests for the lib + CLI
dist/        Pre-built ZIPs ready for store submission
shared/      Files copied into each platform tree at build time

Build

The platform directories are already self-contained — load any of chrome/, firefox/, or edge/ as an unpacked extension in the matching browser. The pre-built ZIPs in dist/ are produced by zipping each platform directory.

The npm package ships only src/, bin/, README.md, and LICENSE (whitelisted via the files field in package.json).

node test.js     # run all 40 tests
npm publish --access public

License

MIT — see LICENSE.


Built by vøiddo — a small studio shipping AI-flavoured products, free dev tools, Chrome extensions and weird browser games.