Look Closer

A visualization bringing individual identities to the human cost of mass shootings in America.

Medium
Conceptual data visualization
Year
2018
Form
Physical prototype, e-paper proof of concept and this page
Status
Prototype, ongoing
A man leans in close to a frosted acrylic sheet marked by bullet holes. Behind it, a blurred red shape; through each hole, tiny red names.

1,404 names

Between 1966 and 2025, 1,404 people were killed in 197 mass public shootings in the United States. These are their names, in the order they were taken.

Scroll to move through time. Hover over or select a name to learn more about the person.

Skip the list

The data ends on August 1, 2025, the most recent case in the database.

Mass shootings are usually reported as numbers, and a number is easy to read past. I wanted the scale to be impossible to skim.

The page lists every person killed in a mass public shooting in the United States since 1966, by name. Getting to the end takes time, and that is the point: the length of the list does the work.

The names run in the order the shootings happened, so scrolling moves you through time. Names fill in as you reach them, and the timeline beside them shows how far you’ve come and how much closer together the shootings get. Each name opens a short card with the person’s age, where they were killed and an estimate of the years of life they lost, so every entry reads as a person rather than a line.

Names and data: The Violence Project Mass Shooter Database, Version 10 (January 2026), Jillian Peterson and James Densley.

The idea

Since the 1966 University of Texas tower shooting, 197 mass public shootings have killed 1,404 people in the United States. Each one leads the news for a few days, until the next one takes its place.

Most of these shootings have no clear motive and no tie to gangs or other crime. People are killed at school, at work, at the cinema and at church, at random, and children are among them. The total keeps rising, and the names fade much faster than the numbers grow.

Objective

I wanted a piece that stops people, stays with them, and makes the toll impossible to file away as a statistic. It had to inform as well as move, and work in different settings: a gallery wall, a public space, a screen.

Approach

I compiled a chronological list of everyone killed, starting with the 1966 tower shooting, and set their names in small red type, packed into the shape of blood soaking through clothing. From across the room the piece reads as a wound. Up close, every mark is a name.

Physical prototype

The first version is a print of the names behind a sheet of frosted acrylic that was shot through with real bullets.

Making the bullet holes

The holes had to be real. A professional shooter fired through the sheet with an AR-15 at an indoor range, and the holes still hold lead and powder residue. They are the only clear places in the acrylic.

A handful of brass rifle cartridges on a green cloth.
The rounds.
A shooter in ear protection handles an AR-15 rifle in an indoor range lane.
A professional shooter at the range.
The acrylic sheet in a cardboard backing, standing at an indoor range, with two people beside it.
The acrylic sheet set up at the range.

Building the frame

I printed the names on museum-grade, fade-resistant paper and set the frosted sheet a short distance in front of them. That gap turns the type into a stain: the further back the print sits, the softer the red.

A tape measure laid across the printed back image: rows of names in bold red capitals.
The back image, printed on museum-grade, anti-fade paper.
The frosted acrylic sheet lying in a laser cutter.
Cutting the frosted acrylic.
A person lifts a large frosted acrylic sheet into place; light shows through the bullet holes.
Fitting the front sheet.

The result

From a few steps away, the piece reads as blood. The names can only be read through the bullet holes, so to find them you have to come close and look through the damage.

Four bullet holes in the frosted acrylic, cracks radiating from each, over a blur of red.
From a step back, the names blur into red.
Close-up of two bullet holes. Through each, red names are sharp and readable.
The holes are the only places the names can be read.
A man stands in front of the piece on a gallery wall, looking at the red stain behind the frosted acrylic and its bullet holes.
On the wall.

Digital proof of concept

A print is fixed on the day it’s made, and the list keeps growing. In the digital version, the image behind the acrylic is an e-paper display that bleeds new names when a shooting is added to the data.

A Raspberry Pi behind the display runs a Python program once a day. It reads The Violence Project’s database from a Google Sheet, adds anyone new and refreshes the panel. E-paper keeps its image with the power off, so the piece only changes when the list does.

From incident to artwork: a shooting is recorded in The Violence Project’s database, the Raspberry Pi checks it daily, and the artwork bleeds.
A Raspberry Pi wired to a three-colour e-paper display showing rows of names in red and black.
A Raspberry Pi drives a three-colour e-paper display.
The e-paper display of names in front of a laptop showing the Python program’s debug output.
The Python program running, with its debug output on screen.
The display is a few millimetres thin, so it can sit just behind the acrylic.
The e-paper display, half covered by frosted acrylic: sharp red names on one side, a soft red blur on the other.
Behind the frosted acrylic, the names blur into red.
A refresh: the panel flashes through its colours before the names appear.

An ongoing process

The prototype left two problems open: keeping the type inside the shape of the blood, and finding a display large enough to hold it.

The program on this page solves the first. It traces Final Wounds, my original layout with names up to 2019, and fills it one name at a time, in the order people were killed. Each of the six bullet holes is a wound. The first names gather around the first hole, blotches spread outward from the others, and when a blotch reaches its lower edge, names run down from it in narrow columns, broken and hyphenated the way the original was set. Nothing is erased or moved, so the shape only grows.

Today’s list fills the original design almost exactly. Names added from here on lengthen the runs below it. For the second problem, a 25.3-inch colour e-paper panel is large enough to set the design at its own proportions.

The simulation runs the program’s own layout on the real data, playing from 1966 so you can watch the wounds form. Pause it or run an update the way the Pi does each morning, and follow the code in the window beside it. Move over the panel to look closer.

look_closer.py simplified

idle
rows = read_source(cfg["source"])        # the Victims Data sheetevents = victims_in_order(rows)          # oldest firstorder = saved_order + new_names(events)  # no one on the panel moveslayout = Layout(cfg)                     # Final Wounds, cut into cellsfor k in order:    pieces, where = layout.place(label(k))  # nearest free spot to a wound    for row, col, text in pieces:        draw.text((x(col), y(row)), text, fill=RED)img.save("output/panel.png")show_on_panel(img, cfg)                   # e-paper keeps it with the power off

How it works

The Raspberry Pi behind the panel runs a short Python program every morning:

  1. FetchDownload the victims table as CSV, from a Google Sheet link or a file on the Pi.
  2. CompareCheck it against the last run and log any names that were added.
  3. PlaceAdd each new name at the edge of the red: around a wound, or at the foot of a run. The order is saved, so no one already on the panel ever moves.
  4. DisplayIf anything changed, redraw the panel in red type and refresh it. Then the panel sleeps until the next change.
Ten renders from the program. Top row: the panel at the end of 1975, 1984, 1999, 2012 and 2025. A small blotch of red names forms around the first bullet hole, then larger blotches spread from the other five holes, merge and send runs of names down from their lower edges, until by 2025 the names fill the Final Wounds shape. Bottom row: the same panels behind frosted acrylic, where the names blur into red and only the bullet holes show text.
Rendered by the Python program from Version 10 of the database, at the end of 1975, 1984, 1999, 2012 and 2025: the panel (top) and the same panel behind frosted acrylic (bottom). Earlier names never move.
  • ComputerRaspberry Pi Zero 2 W, running the Python program once a day
  • Display25.3-inch colour e-paper panel (E Ink Spectra 6, 3200 × 1800), mounted upright: about 32 × 56 cm. That is large enough to set the Final Wounds design at its own proportions, with the type under 2 mm tall. Panels this size are driven by their own controller board or signage software, so the program saves the image for it
  • FrontThe frosted acrylic sheet with the six bullet holes, a few millimetres in front of the panel. The gap sets how much the names blur into blood
  • DataThe Violence Project’s victims table, read as CSV from a Google Sheet or a file on the Pi

Because every name stays for good, the type has to be small: under two millimetres tall on the panel, readable only up close. That is the point of looking closer.

The Violence Project publishes a new version of its database about once or twice a year, so the memorial changes when a new version comes out rather than the day after a shooting. Pointing the program at a sheet you update yourself would make it more immediate.

Data and credit

Names and data come from The Violence Project Mass Shooter Database, Version 10 (January 2026), by Jillian Peterson and James Densley.

The database covers mass public shootings as defined by the Congressional Research Service: four or more people killed with firearms, not counting the shooter, at least partly in a public place, and not part of other crimes such as robbery or gang conflict. Years of life lost are the database’s estimates, based on CDC life expectancy data.

The people who carried out these shootings are not named anywhere on this page or in the artwork.

Peterson, J., & Densley, J. (2026). The Violence Project database of mass shootings in the United States (Version 10). https://www.theviolenceproject.org

Next project