---
title: "Digital Graffiti Wall"
description: "Digital Graffiti Wall: A shared 32x32 canvas that everyone in the room paints at once, shown on a real LED grid."
url: https://www.joekarlsson.com/work/digital-graffiti-wall/
---

![Digital Graffiti Wall](https://www.joekarlsson.com/images/blog/building-a-real-time-digital-graffiti-wall/hero.webp)

# Digital Graffiti Wall

A shared 32x32 canvas that everyone in the room paints at once, shown on a real LED grid.

2020

[View on GitHub →](https://github.com/JoeKarlsson/digital-graffiti-wall) · [Read why I built it](https://www.joekarlsson.com/blog/building-a-real-time-digital-graffiti-wall/)

## Artist statement

At a tech talk, the audience mostly sits there and types questions into a chat. I wanted everyone in the room to make something together instead, so I built a wall they could all paint on at once.

You open a link on your phone, pick a color and draw on a small grid, and every pixel shows up on everyone else's screen and on a real LED grid. There are no accounts, and if two people paint the same pixel, the last one wins. The best part was watching a room organize itself: someone starts drawing a shape and others join in, or groups fight over the corners. A 32x32 grid forces creativity in a way a blank whiteboard never would.

## How it's made

JavaScript · MongoDB Realm · RGB LEDs · Real-Time Sync

The canvas is a 32x32 grid of plain HTML divs in eight colors, and each pixel is one document in MongoDB with a color and an x, y coordinate. You sign in anonymously through MongoDB Realm, your pixel changes color right away and the write goes out behind it, and every screen and the LED grid read the whole grid again every 5 seconds. [The post](https://www.joekarlsson.com/blog/building-a-real-time-digital-graffiti-wall/) has the code.

_Diagram: How the wall works: the canvas in the browser writes pixels through the MongoDB Realm SDK with anonymous sign-in to MongoDB Atlas, which holds 1,024 pixel documents, and a microcontroller reads that state and lights the LED matrix_

## Lineage

Before it

[IoT Kitty Litter Box](https://www.joekarlsson.com/work/iot-kitty-litter-box/): Welcome to the Internet of Toilets. An IoT-connected cat litter box built with a Raspberry Pi, weight sensors, and Node.js. Monitors usage patterns and sends notifications. 2019 · 25 stars · Raspberry Pi, Node.js, MongoDB

[Project page](https://www.joekarlsson.com/work/iot-kitty-litter-box/) · [Source](https://github.com/JoeKarlsson/iot-kitty-litter-box) · [Demo](https://kittylitter.joekarlsson.com/) · [Blog Post](https://www.joekarlsson.com/blog/an-introduction-to-iot-internet-of-toilets/)

Led to

[PixelPane](https://www.joekarlsson.com/work/pixelpane/): A 32x32 LED pixel art frame behind a two-way mirror, driven by a Raspberry Pi. It plays seasonal pixel art, and Home Assistant pushes to it: ON AIR when my camera turns on, the doorbell, the weather. It's open source, and every scene is a plugin. 2026 · Python, Raspberry Pi, LED matrix

[Project page](https://www.joekarlsson.com/work/pixelpane/) · [Source](https://github.com/JoeKarlsson/pixelpane) · [Blog Post](https://www.joekarlsson.com/blog/pixelpane-pixel-art-home-assistant/)

[Get the code on GitHub →](https://github.com/JoeKarlsson/digital-graffiti-wall) · [Read why I built it](https://www.joekarlsson.com/blog/building-a-real-time-digital-graffiti-wall/)

[← All works](https://www.joekarlsson.com/work/)
