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

wiki-beef

v0.1.0

Published

The pettiest edit wars on Wikipedia, right now. Crawls the live MediaWiki API for the articles being reverted to death, scores the beef, decodes what they're fighting about. No API key, 100% public data.

Readme

wiki-beef 🥩

The pettiest edit wars on Wikipedia, right now. Crawls the live MediaWiki API for the articles being reverted to death, scores the beef, and decodes what people are actually fighting about — borders, birthplaces, “is a hot dog a sandwich.” No API key, 100% public data, nothing uploaded.

🌐 Live leaderboard → · auto-updated every few hours

The site crawls Wikipedia straight from your browser (hit 🔄 refresh live to re-crawl any language edition). Same engine in your terminal:

npx wiki-beef
  🥩 wiki-beef — edit wars on en.wikipedia · last 24h

   1. 🗺️ Nikola Tesla · Borders & nationality
      ████████████████ 290 · 21 reverts · 10 editors · 4.2/h · last 12m ago
      “rv, he was Serbian-American per consensus, see talk”
   2. ⚽ List of FIFA World Cup top goalscorers · Sports
      ██████████░░░░░░ 151 · 10 reverts · 8 editors · 2.3/h · last 1h ago
      “Updated Messi's goals in FIFA world cup”
   3. 🔥 Shrek the Third · General beef
      ████████░░░░░░░░ 146 · 9 reverts · 3 editors · 36/h · last 6h ago
      “you just revert it without explaining why”

  2,000 reverted edits · 1,198 contested pages · live from the MediaWiki API, no key.

Why

Wikipedia is a quiet, never-ending war. Most of it happens in the revert — one editor undoes another, then it’s undone back, over a birthplace, a date, a flag, a pronoun, a comma. wiki-beef finds the articles where that’s happening right now, ranks them by how hot the fight is, sorts the genuine disputes from plain vandalism cleanup, and surfaces the actual edit summaries — the receipts.

It’s a window into public data, not a verdict. A high score means a lot of reverts by a lot of editors, fast — not that anyone is wrong. The drama is already public; this just ranks it.

How it works

MediaWiki recentchanges API  ─crawl→  reverted edits  ─group→  contested pages
   (mw-reverted tag, no key)              ─score→  reverts × editors × velocity
                                          ─classify→  nationality / politics / bio / …
                                          ─→  ranked leaderboard
  • Crawl (crawlReverts) — pulls the edits tagged mw-reverted over a time window from any language edition. Browser-safe (no node:*), so it runs in the CLI, in CI, and live in the web page (MediaWiki allows anonymous CORS).
  • Score (scoreBeef) — reverts × editors × velocity, boosted by real-dispute signals (per talk, POV, consensus, unsourced) and penalized for vandalism signals (rvv, blanking) — so genuine fights outrank routine cleanup.
  • Classify (classify) — a curated lexicon sorts each fight into borders & nationality 🗺️, politics 🏛️, sports ⚽, pop culture 🎬, bios 👤, grammar ✍️, vandalism 🧹, or general beef 🔥.
  • The live site is static: a GitHub Action re-crawls every few hours, commits a fresh beefs.json, and the page renders it — no server, no database.

Install & usage

npm i -g wiki-beef      # then:  wiki-beef
# or zero-install:
npx wiki-beef
wiki-beef                          # today's top fights on en.wikipedia
wiki-beef --lang de                # any edition: de, fr, es, ru, ja, zh, pt…
wiki-beef --hours 6 --top 25       # tighter window, more results
wiki-beef --ns all                 # include talk/user pages, not just articles
wiki-beef --md > beefs.md          # a Markdown table
wiki-beef --json | jq '.beefs[0]'  # the full report as JSON

beef is a shorter alias for the same command.

| Flag | | | --- | --- | | --lang <code> | Wikipedia language edition (default en) | | --hours <n> | how far back to look (default 24) | | --top <n> | how many fights to show (default 15) | | --ns <0\|all> | namespace — articles only (default) or everything | | --min-reverts <n> | min reverts to count as a beef (default 2) | | --json [file] / --md [file] | machine-readable / Markdown output |

Library

The core is pure and browser-safe — crawl + process anywhere:

import { getBeefs, crawlReverts, processChanges } from "wiki-beef";

const report = await getBeefs({ lang: "en", hours: 24, top: 20 });
report.beefs[0]; // { title, score, reverts, editors, category, about, quotes, historyUrl, … }

// or split it:
const changes = await crawlReverts({ lang: "fr", hours: 12 });
const beefs = processChanges(changes, { lang: "fr" });

Privacy & etiquette

All data comes from Wikipedia’s public MediaWiki API — recent changes that are visible to anyone. No account, no key, nothing about you is sent anywhere. The crawler identifies itself with a descriptive User-Agent and a polite request cadence. Be a good citizen: don’t crank --hours absurdly high in a tight loop.

It points at articles, never at individual editors — usernames are only counted, never ranked or shamed.

Contributing

The most useful contribution is a better classifier — a keyword that catches a kind of fight the lexicon misses, or a score tweak that better separates real disputes from cleanup. See CONTRIBUTING.md.

License

MIT © didrod205


It’s public Wikipedia drama — no judgment, just the receipts.