A visualizer for Reddit history: posts and comments, score data, subreddit distribution, trends, and path-traced 3D views.
Open the live visualization to explore the built-in demo or select Show me my own data.
The demo also includes a standalone
20-topic breakdown
of the complete committed posting history. Regenerate it with
python build_topics.py.
To visualize your own history:
- Request an export from Reddit's data request page.
- Download the ZIP Reddit emails to you; do not extract it.
- Drop the ZIP onto the import screen.
- Wait for score and thread-title enrichment, then select Display my data.
The ZIP and its CSV contents are read locally in your browser. They are not uploaded to this project. Reddit's export omits scores, so only post and comment IDs are sent to the third-party Arctic Shift archive. The processed dataset is stored in IndexedDB in your browser profile so the 2D and 3D views share it. Restore demo data clears that stored personal dataset.
Some IDs may not exist in Arctic Shift. Those records remain visible and are
marked score unavailable; they are plotted at the zero-score position and do
not contribute points to score totals.
git clone https://github.com/GregBahm/RedditData.git
cd RedditData
python -m http.server 8765
Then open http://127.0.0.1:8765/viz/. The repository is self-contained.
The committed demo reads viz/data.js; personal imports remain only in the
browser profile.
The following libraries are vendored so page loads do not depend on a CDN:
- JSZip 3.10.1, MIT or GPLv3
- Papa Parse 5.4.1, MIT
Their license files are under viz/vendor/.
viz/data.js is built by fetch_scores.ps1 from a Reddit personal data export
(the CSV export from https://www.reddit.com/settings/data-request). The export
itself is not in this repo — it's large and private. The script:
- Reads
posts.csvandcomments.csvfrom the export folder - Fetches score snapshots (and thread titles for comments) from the Arctic Shift archive API, since Reddit's export contains no scores
- Merges everything and writes
viz/data.js
To rerun it, you need an export folder on disk, and you'll need to edit the
hardcoded $exportDir and $outFile paths at the top of fetch_scores.ps1
to match your machine.