Everybody knows which way a news outlet leans. The claim gets made constantly, in arguments about bias and in complaints about coverage, and it is almost always made by somebody who has read the outlet and formed a view. Reading is slow, and one person’s reading is one person’s. So turn the claim into a question with a checkable answer: how would you place a news outlet on a left-right scale without reading a word of it?
One answer is to stop looking at the outlet and look at who chooses to link to it. Between 2016 and 2021, 641 members of the 116th Congress — the one that sat from 2019 to 2021 — and other political actors posted 375,979 links to 184 news domains on Twitter, the platform now called X.1 Every one of those people also carries a position built from a completely different behaviour, their votes on the floor. That pairing is what makes the file worth having.
The source is PolShares, the demonstration dataset that
the authors of the method ship with their R package
mediascores, MIT licensed and downloadable by anyone from a
public repository (https://github.com/SMAPPNYU/mediascores). One row per
political actor, seven columns saying who they are, and then 184 columns
counting how often each person shared each outlet.
Why a link-sharing ledger, of all sources? It records an act rather than an opinion about an act. Nobody was asked which outlets they trust. A platform logged what these people posted while they were doing something else, which makes it an administrative record of the kind this section of the book is about.
The seventh column is what turns a ledger into a test. It carries each actor’s DW-NOMINATE score: a number between −1 and 1 that places a member of Congress on a liberal-to-conservative line, computed from their roll-call votes, the votes on which each member’s yes or no is recorded by name. This book takes it apart in its own brief. Sharing and voting are different acts by the same people. So an estimate built out of one of them can be held up against the other.
The rule for scoring an outlet is one sentence. An outlet’s score is the average roll-call score of the politicians who shared it, weighted by how often each one shared it. Weighted means that a politician’s score is counted once for every link they posted, so someone who shared an outlet a hundred times pulls its score a hundred times as hard as someone who shared it once. An outlet posted only by members who vote conservatively lands where those members sit. One posted by everybody lands in the middle. Nobody reads a single article to produce the number.
And this is a simplification of the published method, not the method. The method is Gregory Eady, Richard Bonneau, Joshua Tucker and Jonathan Nagler’s,2 and it estimates outlet positions and politician positions jointly: a statistical model places both on the same scale at once, using nothing but who shared what, with no roll-call score in it. The rule above takes DW-NOMINATE as given and averages it. That is transparent and it is weaker, and the closing sections say what it costs. What this brief can reproduce is the paper’s ordering of outlets by the politicians who share them, by a cruder rule. What it cannot reproduce is the paper’s placement of ordinary citizens on the same scale, because the data for them sits behind a wall described below.
Two tables are made from the source file. outlets.csv
has one row per domain: domain, shares,
score, sharers for how many different people
posted it, top_sharer_pct for the share of its links
contributed by its single busiest sharer, and a kept flag.
politicians.csv has one row per actor: name,
role, party, nominate,
shares and media_score, the last of these
built by running the same arithmetic backwards.
Two cleaning decisions stand between the source and those tables, and both are worth stating before any of it is believed.
114 of the 641 actors have no roll-call score, because governors and other non-legislators never cast one. They cannot enter the estimate at all. Taking them out removes 62,353 shares, 16.6% of the total.
An outlet needs 100 shares to be scored here. That keeps 112 of the 184 domains, which between them carry 99.0% of all the sharing. The other 72 are drawn in gray below rather than dropped, so you can see what the cut removed.
This is not the paper’s replication archive, and the difference matters. A replication archive is the bundle of data and code a journal has its authors deposit so that anyone can redo the analysis. This paper’s sits on Harvard Dataverse (https://doi.org/10.7910/DVN/1QMLOV), which answers an automated request with a success code and an empty body. A person with a browser gets the file in thirty seconds. A script never does, which is the same wall the survey access brief measures directly. So what is here is the politician half of the object, and nothing below is a claim about ordinary citizens.
Before you look at the scale, commit to a number. Its most conservative outlet is therightscoop.com, with 401 shares behind it. How much of that outlet’s total do you think came from the single politician who shared it most? Write down a percentage.
Figure 1. 184 news domains on one left-right scale. Each circle is a domain, placed by the average roll-call score of the politicians who shared it and sized by how many shares it got. A one-dimensional scatter is the form this question wants: the estimate produces exactly one number per outlet, and what matters is the order and the spacing, not a trend over time. Outlines mark outlets where one politician contributed more than half the links. In the browser, hover any circle, and use the checkboxes to hide those outlets or to show the 72 below the share cut.
The two ends are where you would put them. blavity.com sits at -0.52 and therightscoop.com at 0.79, a span of 1.30. The New York Times comes out at -0.33 and Fox News at 0.53. Nobody coded a single article to produce that ordering. It came out of counting who posted what.
Now the number you wrote down. 84.5% of therightscoop.com’s shares came from one politician. The typical outlet on this scale gets 9.8% of its links from its biggest sharer. The most extreme outlet on the scale gets more than four fifths of them from a single person’s posting habits.
Here is where that number comes from, and the outlet’s whole score with it. These are the politicians who shared therightscoop.com, each with their roll-call score and how many times they posted it:
| Politician | Party | Roll call score | Shares | Score times shares |
|---|---|---|---|---|
| Ted Cruz | Republican | 0.817 | 339 | 277.0 |
| Billy Long | Republican | 0.544 | 39 | 21.2 |
| Charles Roy | Republican | 0.800 | 14 | 11.2 |
| Louie Gohmert | Republican | 0.644 | 2 | 1.3 |
| John Cornyn | Republican | 0.471 | 2 | 0.9 |
| Rand Paul | Republican | 0.889 | 1 | 0.9 |
| Marsha Blackburn | Republican | 0.627 | 1 | 0.6 |
| Ron Johnson | Republican | 0.626 | 1 | 0.6 |
| Debbie Lesko | Republican | 0.615 | 1 | 0.6 |
| Matt Gaetz | Republican | 0.599 | 1 | 0.6 |
Multiply each score by its share count, add the products up, and divide by the 401 shares in total: the answer is 0.79, the position of therightscoop.com in Figure 1. Ted Cruz alone posted it 339 times, so the weighted average is mostly Ted Cruz’s own roll-call score of 0.817 and a little of everyone else’s. Take Ted Cruz out and the same arithmetic over the remaining 62 shares gives 0.61. The outlet holding up the right-hand end of the scale is, to a first approximation, one politician’s posting habit.
That is not an error in the data and not a defect of the method. It is what a scale looks like at its edges. The middle of Figure 1 rests on hundreds of people sharing thousands of links. The ends rest on the few outlets that only a few people ever post, and the fewer the people, the further out the outlet lands. Tick the first checkbox in Figure 1 and the right-hand end retracts.
The overplotting brief makes the same point about a scatter plot. The outline of the ink is drawn by the rarest points, the shape of the mass by the common ones, and the eye reads the outline. Here the outline is a ranking, and a ranking invites you to read the top of it.
An outlet’s score came from the politicians who shared it, so run the arithmetic backwards. Score each politician by the average score of the outlets they share, and set that against the roll-call score they already had.
Figure 2. The same estimator, run backwards. 516 politicians with at least twenty shares to scored outlets, each placed by their roll-call score across and their media score up. Blue Democrats, red Republicans, with the fitted line through them.
The correlation — a number between −1 and 1 for how tightly two quantities rise and fall together, where 1 means they move in lockstep — is 0.94. What these people vote for and what they link to are close to the same thing, measured two entirely different ways.
This is not an independent validation, and calling it one would be wrong. The outlet scores were built out of DW-NOMINATE, so some agreement is guaranteed by construction. What the figure bounds is how much of one behaviour the other reproduces once the numbers have been through two averagings.
The exceptions are where the interest is. 30 politicians land inside the other party’s range. The median Democrat scores -0.22 and the median Republican 0.16, a smaller separation than the same people show on roll calls. Sharing is a noisier signal of position than voting, which is what you would expect and is worth having measured.
It has no members of the public in it. The study this method comes from places news media, politicians and ordinary citizens on one scale. The citizens are in the replication archive, and the archive refuses scripts. Every number above is about what politicians share.
Sharing is not endorsement. A member who posts a link in order to attack it counts here exactly like one who posts it approvingly. Nothing in a count of links tells the two apart, and the sharpest outlets are the likeliest place for that to matter.
The 184 domains are a list somebody wrote. An outlet nobody thought to include cannot appear at any position, and the file does not say how the list was drawn.
DW-NOMINATE is itself an estimate, on a scale defined by the votes that happened to be held, which is the subject of its own brief. This brief inherits every one of those limits and adds two averagings on top.
And it is one platform, one chamber, one stretch of years. 2016 to 2021, the 116th Congress, one platform, Twitter. Nothing here says how any of it would look in 2026.
None of these is answered above, and every one can be answered by sorting or grouping the tables the Sources section hands over.
outlets.csv has score,
shares, sharers and a kept flag.
Filter to the outlets that were dropped. What do they have in common,
and is dropping them defensible?outlets.csv also has top_sharer_pct. Sort
by it and find the outlets whose position rests on one person. How much
of this scale is a handful of prolific accounts?politicians.csv has both nominate and
media_score. Sort by the difference between them. Where do
the two measures disagree most, and which would you trust for those
people?politicians.csv also has role and
party. Group by role and compare the median
media_score in each. Do senators and representatives share
different things?Two stretch ideas go past the spreadsheet. Pick one outlet at an end of the scale, look up who its biggest sharer is, and read a dozen of that person’s posts to see whether the sharing looks like endorsement or attack. And take the same idea to a source outside this file: score a set of outlets by which committees’ members post them, and see whether the ordering survives a change of yardstick.
Data
PolShares, the
demonstration dataset in the R package mediascores (MIT
licence), 641 political actors and 184 news domains, 2016–2021. https://github.com/SMAPPNYU/mediascores; the file’s
documentation is at https://github.com/SMAPPNYU/mediascores/blob/master/man/PolShares.RdPolShares,
sourced from Voteview (https://voteview.com/). This book takes it apart in its own brief.data/raw/, and the
tables below are what this brief reads. Every number above is computed
from them when this page is rendered.Checks
| Check | Passed |
|---|---|
| the metadata columns are the seven documented ones | yes |
| the counts are non-negative whole numbers | yes |
| the people without a score are a minority of the shares | yes |
| the cut keeps most of the sharing | yes |
| the two ends are on opposite sides of zero | yes |
| Fox News scores to the right of the New York Times | yes |
| the two behaviours agree strongly but not perfectly | yes |
| at least one kept outlet rests mostly on a single sharer | yes |
The data itself
Every figure above is drawn from these tables. They are plain CSV, they open in a spreadsheet, and they are yours to take further.
Two more files here are not data about the subject at all – they are
how this chapter checked its own work: facts.csv, the individual
numbers the text above quotes, and checks.csv, the
arithmetic verified before anything was drawn.
I want to rebuild a public dataset from its original source, without any starting files. Please do the following and show your work. THE SOURCE. New York University's Social Media and Political Participation lab publishes mediascores, the R package behind Eady, Bonneau, Tucker and Nagler's study of news sharing (Political Analysis, 2024). The package ships a demonstration dataset called PolShares, MIT-licensed, served plainly from GitHub: https://raw.githubusercontent.com/SMAPPNYU/mediascores/master/data/PolShares.RData About 70 KB, and it is an .RData file, so open it in R with load(). Each row is one politician or political actor. Seven columns in front say who they are — including their DW-NOMINATE score from roll-call votes — and each of the remaining 184 columns is a news website, holding the count of times that person tweeted a link to it between 2016 and 2021. WHAT TO BUILD. 1. The file's own dimensions: how many actors, how many news domains, how many link shares in total, and how many actors carry a NOMINATE score. 2. A simple ideology score for each news site: the average NOMINATE score of everyone who shared it, weighted by how often they did. Check that Fox News lands to the right of the New York Times. CHECK YOUR WORK. The copy this book used was downloaded in August 2026. If your rebuild matches it, you should find: - 641 politicians and political actors - 184 news domains and 375,979 link shares between them - 527 of the actors carry a NOMINATE score The repository is the archive of a published study; the file should not change at all. A difference means the package itself was updated, not that you made an error.
The file’s own description: “News Media Domains Tweeted by members of the 116th US Congress and other political actors (2016–2021),” https://github.com/SMAPPNYU/mediascores/blob/master/man/PolShares.Rd.↩︎
Gregory Eady, Richard Bonneau, Joshua A. Tucker and Jonathan Nagler, “News Sharing on Social Media: Mapping the Ideology of News Media, Politicians, and the Mass Public,” Political Analysis 33, no. 2 (2025): 73–90, published online 19 November 2024, https://doi.org/10.1017/pan.2024.19.↩︎