Wikipedia history tools compared
This page compares tools for reading a Wikipedia article's history: the built-in page history, XTools, WikiBlame, Who Wrote That? and Refract.
Each answers a different question:
- the page history lists every edit with its editor, timestamp, edit summary and diff;
- XTools reports statistics about a page's edits and each editor's share of the current text;
- WikiBlame finds the revision in which a given text was inserted or removed;
- Who Wrote That? highlights who wrote each part of the current text;
- Refract reports each change between revisions as a typed event (sentences, citations, templates, reverts, sections), without editor identity.
Wikipedia's page history
Sources: Help:Page history, Manual:Reverts, API:Revisions, Help:Watchlist.
| Capability | Page history | Refract |
|---|---|---|
| View a single revision diff | Yes — click "prev" on any revision | Yes — every event carries before/after snapshots |
| See who edited what | Yes — username + timestamp per revision | No — Refract observes document change, not editor identity |
| Find when a sentence first appeared | Not built in — on English Wikipedia, the history page's "Find addition/removal" link opens WikiBlame | refract claim "Page" --text "sentence" → exact revision + timestamp |
| Track a sentence across its entire lifecycle | Manual — follow the page history | Automatic — first seen, modified, removed, reintroduced, all timestamped |
| Detect citation swapping | Manual — compare each diff's reference section | citation_replaced event — before/after show the old and new source |
| Detect edit wars | Partly — undos, rollbacks and manual reverts are tagged, as are the edits they revert; spotting back-and-forth is manual | revert_detected + edit_cluster_detected — automatic structural detection |
| Correlate article edits with talk page discussion | Manual — check Talk tab separately | talk_page_correlated — Refract checks 7 days before / 3 days after each edit |
| Compare the same topic across language editions | Manual — open each wiki separately | refract diff — cross-wiki comparison with z-score outlier detection |
| Query with SQL | No | DuckDB: SELECT "eventType", count(*) FROM 'events.jsonl' GROUP BY 1 |
| Hash an export so others can check it | Per revision — each revision has a permanent link, and the API returns a SHA-1 of its content | refract export --manifest → Merkle root over the event hashes; the same version over the same revision range reproduces it |
| Automated monitoring | Watchlist, with optional email when any watched page changes | refract cron + refract watch → Slack, email, webhook alerts |
| AI agent integration | No | refract mcp → Claude Code, Cursor, VS Code can call Refract tools directly |
Refract vs. other tools
| Tool | What it does | Refract's difference |
|---|---|---|
| XTools | Page History: statistics about a page's edits, such as top editors and edits per year and month. Authorship: each editor's share of the current text, by character count. Blame: the edits that added a given text. Authorship and Blame use WikiWho | Refract reports each change between revisions as a typed event and does not attribute text to editors |
| WikiBlame | Uses binary or linear search over a page's revisions to find the one in which a given text was inserted or removed. Works on MediaWiki wikis | refract claim follows one sentence through every revision: first seen, modified, removed, reintroduced |
| Who Wrote That? | Browser extension for Chrome and Firefox that uses WikiWho to highlight who wrote each part of an article's current text | Refract does not identify editors; it reports what changed at each revision |
| WikiWho | Token-level provenance for about 70 Wikipedia editions: who added, removed or reinserted each token, and in which revision | Refract emits events for sentences, citations, templates, reverts and sections rather than tokens, and does not attribute editors |
| WhoColor | Userscript that colors article text by author, with conflict and age views, built on WikiWho | Refract structures the data for querying, not just viewing |
| Wikimedia Enterprise | APIs that deliver Wikimedia project content: daily project snapshots, single articles on demand, and a real-time stream of updates. Free access, and paid plans with service-level agreements | Refract analyzes a page's past revisions, is open-source, and runs locally |
| MediaWiki API | Raw revision data: metadata, content and a SHA-1 of each revision | Refract adds deterministic analysis, event typing, provenance metadata |
| Internet Archive | Archived captures of web pages from its crawls | Refract produces structured, queryable event streams, not page captures |
| Custom scrapers | Ad-hoc revision analysis | Refract has 26 event types, deterministic hashing, and a published SDK |
What Refract deliberately doesn't do
| Capability | Why not |
|---|---|
| Truth/fact-checking | Refract observes change, not correctness. It answers "what changed?", not "is this true?" |
| Sentiment analysis | Refract doesn't judge editor intent or tone |
| Editor scoring | Refract tracks document change, not editor behavior |
| Prediction | Refract reports what happened, not what might happen |
| Automated editing | Refract is read-only observation |
When to use Refract
- You need to prove when a claim appeared, not just screenshot it
- You're analyzing patterns across many revisions (citation churn, edit clusters, talk correlation)
- You need exports others can reproduce and compare (a Merkle root over the event hashes)
- You want to monitor pages automatically (cron + notifications)
- You're building a RAG pipeline that needs claim stability signals
- You want AI agents to reason about page history with structured data
Refract vs. AI evaluation tools
Refract's model evaluation capability — temporal leakage detection, provenance hallucination checking, retrieval quality scoring — has no direct competitor. Existing tools evaluate models on accuracy, safety, or reasoning. None evaluate models against deterministic ground truth about what was public knowledge and when.
| Capability | Existing tools | Refract |
|---|---|---|
| Temporal leakage detection | Heuristic: compare model output to training cutoff dates. No deterministic proof. | refract_eval.build_leakage_benchmark() — exact revision ID, timestamp, SHA-256 hash. Proves leakage deterministically. |
| Provenance hallucination | Manual: check model citations against sources one at a time. | refract_eval.check_provenance() — query citation_added/removed/replaced events. Classify: verified, outdated, hallucinated. |
| Retrieval quality (stability-weighted) | Embedding similarity only. Contested and stable passages score identically. | refract_eval.score_retrieval_quality() — each passage scored by revert count, citation churn, talk activity. |
| Knowledge recency | No standard tooling. Ad-hoc: "ask the model what date it thinks it is." | refract snapshot "Page" --at <date> — deterministic page state at any point. Compare model answer against ground truth. |
| Standard benchmark | No open benchmark for temporal ground truth. | BENCHMARK.md — 10 standard pages, submission format, reproducibility requirements. |
| Reproducibility | Most eval suites: "run our script, trust our numbers." | Every event has a deterministic SHA-256 hash. Reviewer runs same command, gets same hash. |
The gap Refract fills: every eval suite tests whether a model is accurate. None test whether a model knows things it shouldn't. Refract provides the ground truth for that test — and makes it reproducible.
When Wikipedia's UI is enough
- You're checking one revision diff quickly
- You need to see who made an edit
- You're browsing page history casually
Refract doesn't replace the page history. It adds typed change events, SQL queries over them, exports that others can reproduce from the same revisions, and scheduled re-observation with Slack, email or webhook notifications.