I read a lot of Markdown files — project docs, meeting notes, personal journals. But every time I wanted to quickly preview a .md file, I hit the same wall: Typora wants a license. VS Code needs a workspace. GitHub Gist needs internet. For something as simple as "read this file beautifully," the friction was absurd.
So I asked: what if a Markdown reader was just a single HTML file? No install. No server. No dependencies. Drag a file in, read it, done.
That's EdgeMD Viewer.
The Problem With Existing Tools
Markdown tooling in 2026 falls into two camps. On one side, you have full-featured editors — Typora, Obsidian, VS Code — packed with plugins, configs, and sidebars. They're great for writing, but wildly overkill when you just want to read a file.
On the other side, you have raw GitHub rendering or bare-bones browser previews. Functional, but ugly. No typography. No spacing. No joy.
I wanted the reading experience of a well-designed app with the setup cost of opening a browser tab.
How I Built It
EdgeMD Viewer is literally one HTML file. Everything — the parser, the sanitizer, the editor, the styling — lives inside index.html. Here's why:
Single-file architecture. No build step, no node_modules, no bundler config. You can email it. You can put it on a USB drive. You can host it on any static server. The constraint of "everything in one file" forced every design decision to be minimal.
marked.js + DOMPurify. Two libraries, loaded from CDN with Subresource Integrity hashes. marked.js handles Markdown parsing, DOMPurify prevents XSS from untrusted input. That's the entire dependency tree.
File System Access API. This is the underrated hero. Instead of the typical "export → download → replace original file" dance, EdgeMD uses the browser's File System Access API to write changes directly back to your original .md file. Open a file, edit it, press Cmd+S, done. The file on your disk is updated.
UX through iteration. I spent more time on micro-interactions than on the actual code. Does the typography breathe? Does the toolbar get out of the way? Does the editor panel slide in without jarring the reading flow? These small decisions are what make the difference between a tool you tolerate and one you enjoy using.
What It Looks Like
The reading view uses a warm stone palette — soft grays and warm blacks on white, with Noto Sans TC for CJK support. Content is capped at 720px width with generous line-height. It's optimized for one thing: making Markdown pleasant to read.
The editor is a slide-out panel from the right. No mode switching, no split view — just a clean overlay that shows your raw Markdown source. Press Cmd+E to open, make your edits, press Done. The reading view updates instantly.
Export to HTML produces a fully self-contained document. No external CSS, no CDN links. One file that looks exactly like what you see in the reader.
Privacy by Design
This matters to me: EdgeMD makes zero network requests after loading. No analytics, no tracking, no cookies, no localStorage. The Firebase deployment includes a strict Content-Security-Policy header that blocks outbound connections at the browser level.
You can verify this yourself: open DevTools, check the Network tab. Three requests total — index.html, marked.min.js, purify.min.js. Nothing else. Ever.
Try It
Live demo: https://md-viewer-edge.web.app/ — drag any .md file into the browser.
Source code: https://github.com/0xedgelessblade/edge-md-viewer — it's MIT licensed.
If you've ever wished for a Markdown reader that just works without the overhead, give EdgeMD Viewer a try. Stars are appreciated — they help others find the project.
Built by @0xedgelessblade. Tools should be invisible. EdgeMD Viewer is my attempt at making that real for Markdown reading.

Top comments (0)