See Your GitHub Repository in 3D with GitCoral 🪸
Code lives in files. Files live in folders. Folders live in… a list you click through one level at a time. If you’ve ever tried to make sense of a large, unfamiliar repository by exploring its directory tree, you know how disorienting that experience can be. GitCoral is a small experiment in making that experience spatial.

The Itch
I’d been looking at a particularly sprawling open-source project, one of those repositories that has clearly grown over many years and through many hands, accreting features the way a harbor accretes barnacles. I wanted to understand the shape of it. Not the specifics, not the individual files, but the shape: where does the weight live? Which parts are dense with complexity and which are almost hollow?
No tool I could find answered that question at a glance. So, as programmers do, I decided to build one.
How It Grows
GitCoral renders any public GitHub repository as an interactive 3D structure you can rotate, zoom, and explore. But the metaphor is coral, not a tree, and the name is not accidental.
Each folder’s subfolders are treated as charged particles on the surface of a sphere. They repel each other like like-poles of a magnet, spreading apart until they find equilibrium, while a buoyancy force tugs the heavier ones gently upward — the larger the subtree, the more it rises. What results is not a layout someone designed. It is a layout that emerged.
Files cluster differently. Within each folder they are distributed using a Fibonacci sphere the same golden-angle mathematics that governs sunflower seeds and nautilus chambers, spacing points with almost insulting efficiency (you can read about a similar algorithm in Distributing points on a sphere). The branches connecting folders to their parents vary in thickness: a slender filament for a folder with a handful of bytes, a thick trunk for one carrying megabytes of subtree.
The result, when you first load a repository and watch it assemble itself, is genuinely strange. It looks like something that grew. Sprawling asymmetrically where the codebase is dense, delicate and sparse at the edges where utility scripts or documentation trail off.
Seeing It Differently
There are several ways to colour the visualization. By file type is the default — TypeScript files are one hue, Markdown another, JSON another. By size makes the weight distribution viscerally clear. By depth reveals the nesting structure.

The first time you load a repository you think you know, the result is often surprising. The thing you thought was a minor utility directory turns out to be enormous. The thing you thought was the core turns out to be modest. Assumptions dissolve.
Ways to Focus
GitCoral gives you two distinct modes for cutting through a large repository.
The first is search. Type anything into the search box and the structure doesn’t collapse — it dims. Non-matching files and folders fade to near-invisible while matching nodes and their ancestor folders stay lit. The coral remains intact; you’re just shining a torch at part of it.
The second is the filter panel, which is more surgical. File size sliders, depth range, extension checkboxes — nodes that fall outside these constraints are removed from the scene entirely, not dimmed. The result is a sparser, quieter structure that makes no attempt to preserve context.
And then there is selection. Click any node and everything irrelevant fades: if you click a file, its path back to the root stays lit; if you click a folder, its entire subtree stays lit alongside its ancestors. Click again anywhere to release. It’s the closest thing to pointing at something and saying just this.
Comparing Branches and Pull Requests
Paste a pull request URL and GitCoral fetches both sides of the diff, computes the changes across the entire tree — which files were added, which deleted, which modified — and overlays it in colour. You can see at a glance where a PR touches the codebase, and whether that blast radius is what you expected.
Clicking any node takes you directly to the relevant file on GitHub, anchored to the correct diff — even accounting for fork PRs, where the head branch lives in a different repository entirely.
The same diff view works for any two references you care to compare: branch names, tags, commit SHAs.
What I Didn’t Build (On Purpose)
GitCoral works only with public repositories. There’s no login, no OAuth flow, no token entry.
There’s a version of this tool with an OAuth flow and access to private repositories. I decided not to build it. A tool that never asks for your credentials is a tool you don’t have to think twice about using.
The Unexpected Insight
A codebase is a structure that evolved under constraints — team size, deadlines, technical debt, shifting requirements — and those constraints leave physical marks in the code, the same way a city’s history writes itself into its streets. A cluster of enormous files surrounded by tiny ones suggests a refactor that started but didn’t finish. A deeply nested subtree, isolated from the rest, suggests something bolted on rather than grown.
None of this is information you couldn’t derive by reading the code carefully. But there is something different about seeing it — the same way that understanding a cathedral’s structural logic from architectural drawings is different from standing inside one and looking up.
Try It
GitCoral is free, runs entirely in the browser, and requires nothing beyond a public GitHub URL. The source is on GitHub if you’d like to contribute or suggest what’s missing.
Start with a repository you know well — the most interesting first experience is not discovering an unfamiliar codebase, but seeing a familiar one from an angle you’ve never had before. And if you find something surprising in a repo you thought you knew, I’d genuinely like to hear about it.

RSS - Posts