A shelf of real browsers,
Every Chromium, one click away.
Pick a Chromium version, press Launch, and it opens as an ordinary desktop browser — tabs, bookmarks, DevTools and all. No account, no build step, nothing to configure.
Modern browsers are excellent liars.
They quietly polyfill, gracefully degrade and make your site look finished — right up until it meets an engine from 2019, where an unsupported CSS declaration is dropped, not degraded, and a layout falls apart in a way nothing on your machine will ever show you.
POS terminals, scanners and industrial tablets ship a System WebView years behind the OS. It is the engine that decides whether your CSS survives.
The same engine on your desk, in a window you can click around in.
A customer on a locked-down browser reports a bug you cannot reproduce anywhere.
Open their engine, load the page, see it happen.
Your config promises support for an old floor. Nobody has ever checked.
Two minutes to find out whether the promise is true.
Something broke somewhere between two releases.
90, 105 and 120 open side by side, bisected by eye.
Sixty seconds to your first old browser
Open it
Double-click the launcher. The manager opens in your normal browser: every version, what is installed, what each one costs in disk.
Pick a version
Press Launch on any row. The first launch of a version downloads it — 90–300 MB, a few minutes, once. Every launch after that is instant.
Use it
A real browser window opens. Type a URL, open DevTools, log in, keep the profile. Close the launcher window when you are done.
Type a URL in the box at the top of the manager and
every
version you launch opens straight to it.
localhost:4173
is fine — it is the fastest way to compare four engines on the
same page.
Three versions in flight, one window.
Downloads, launches, profile resets and Docker containers all report into the same strip along the bottom — and the log remembers every one of them.
Every version on the shelf, verified against the live archive.
And any other snapshot revision works too. Drag the scrubber, or click a year.
No flexbox `gap` (84), `aspect-ratio`/`:is()` (88), optional chaining (80).
Hard floors for very old WebViews.
No flexbox gap;
optional chaining arrives in 80.
Flexbox gap,
aspect-ratio,
:is().
Container queries and
:has() arrive in
105.
dvh, CSS
nesting, view transitions,
subgrid.
Near-current — the control when you are bisecting.
The manager is a front end for the CLI.
Both do the same things, so they cannot drift apart. Flags for
run:
--size 1280x800,
--gpu
/
--no-gpu,
--no-restart, and anything after
--
goes straight to Chromium.
Windows runs the same commands through
.\chromium-stack.ps1.
The Linux build in a container, shown in a browser tab.
Runs the Linux x86_64 build in a container and shows its desktop in a tab of your normal browser, over noVNC. It never touches Rosetta, so on Apple Silicon it sidesteps the stack-profiler crash.
Each version gets its own image, container, profile volume and port, so several can run side by side. Docker is optional, and the native launcher is what most people should use.
Inside the container,
localhost is the
container. Use
http://host.docker.internal:4173
to reach a server running on your own machine.
Every download is self-contained.
The launcher finds everything it needs inside the package. Nothing to install, nothing to keep together, no loose folder of files to lose.
Unzip → double-click ChromiumStack.app
Unzip → double-click ChromiumStack.bat
Extract → run ./ChromiumStack
Runs on — macOS 10.13+ on Intel and 11+ on Apple Silicon · Windows 10/11, using the PowerShell 5.1 that ships with them · Linux x86_64. The manager wants Python 3 on macOS and Linux; the command line does not.
Paranoid, sensibly so?
shasum -c SHA256SUMS.txt
verifies the download against the published checksums.
The honest caveats.
It really is a browser
Address bar, tabs, bookmarks, history, downloads, DevTools — all there, and each version keeps its own profile between launches. Do bear in mind that the old ones really are old. Sites built for a modern engine may refuse to load, render strangely, or nag you to upgrade. That is the browser being honest, not the tool misbehaving.
Point it at a production build, not your dev server
Vite, Next.js and friends ship your source untranspiled and
skip the CSS-fallback step, so an old engine chokes on the dev
server even when your shipped build is perfectly fine. A blank
page on
localhost:3000
usually means "the dev server is modern", not
"my code is broken". Build the site the way you
deploy it, serve the output, and open that.
Stability on Apple Silicon
Chromium publishes native arm64 macOS builds from roughly M92
on, so
95 and later run natively. 60 through 90 have no arm64 build, so they run through
Rosetta. Those builds run with
--disable-gpu
by default, which removes the GPU-process crash completely.
Chromium's stack sampling profiler occasionally segfaults
under Rosetta and there is no switch to turn it off, so the
launcher relaunches the browser and lets Chromium restore your
tabs, up to 5 times. Use
--no-restart
if you would rather it stop and show the log.
Nothing listens outside your machine
The server binds to
127.0.0.1
and every request must carry a token generated for that run,
so a web page you happen to have open cannot drive your
browser installs. Closing the launcher window stops the
manager; browsers it opened keep running.
Keeping disk under control
Each version is a separate 90–300 MB download. The
···
menu on any installed row can reset the profile, delete the
browser but keep the profile, or delete both. A running total
across every browser and profile sits at the top of the
manager, so it is obvious when to clear something out.
Found something? Say so.
Windows reports especially welcome — nothing on the Windows side has been run on Windows yet.