The Problem

Standard browsers render web pages as visual layouts, but AI tools consume content as structured text. When developers need to see what an AI actually reads from a URL—whether for prompt engineering, content extraction, or debugging—they're forced to copy-paste HTML through conversion tools. That workflow is slow, error-prone, and doesn't reflect how content flows to LLMs in practice.

What This Does

md-browse is a markdown-first desktop browser built on Electrobun. It requests pages with an Accept: text/markdown header first, so servers that support native markdown (like Vercel's docs) return it directly. For regular HTML, it runs the page through turndown with settings tuned to match what Copilot and Claude see—stripping scripts, navigation, and footers while preserving structure.

The app has two processes: a Bun main process (src/bun/index.ts) handles HTTP requests, markdown conversion, tab state, and RPC. A Svelte toolbar view (src/toolbar-svelte/) provides the UI: tab bar, navigation controls, URL bar, and a toggle between raw markdown and rendered preview. The conversion logic lives in src/shared/turndown.ts, shared across both sides.

How To Use It

The README documents the setup. You'll need Bun and macOS for native development.

Setup and run: bun install bun run start

Build for current platform: bun run build

Build Windows artifacts: bun run build:stable:win

There's no configuration file to edit—the app runs out of the box. Tests exist in scripts/turndown.test.ts and scripts/turndown-comparison.test.ts, runnable via Bun's test runner.

Real-World Use

A developer building an LLM-powered documentation assistant can use md-browse to verify what their model will actually receive. Point it at a target URL, toggle to raw markdown view, and see the exact content that would flow into a prompt. The comparison test file (scripts/turndown-comparison.test.ts) suggests the author has been validating output against reference conversions—the same check you'd run before trusting the output in production.

Code Health & Issues

Med – No CI/CD pipeline: No .github/ or CI config exists, so there's no automated build or test gate. The two test files exist but nothing runs them in a pipeline. Med – Single-platform assumption: The README states macOS is required for native development. Windows builds are possible, but Linux support isn't mentioned. This limits the contributor base. Low – Dependency lockfile duplication: Both bun.lock and package-lock.json are present. That's redundant—Bun uses bun.lock, npm uses package-lock.json. One should be removed to avoid drift. Low – Heuristic-only issue detection: The analysis flags no CI, but the codebase is small, well-organized, and includes tests. The shared types.ts and RPC layer (src/toolbar-svelte/lib/rpc.ts) suggest deliberate separation of concerns.

The Bottom Line

This is a focused, well-scoped tool that solves a real problem for anyone working with LLM content pipelines. The dual-view approach and markdown-priority fetching are thoughtful design choices. It's early-stage (no CI, macOS-only for dev), but the architecture is clean and the tests cover the core conversion logic. Worth using if you're building AI content workflows on macOS; wait for broader platform support if you're not.