A cleaner web should not be a privilege reserved for AI agents. People deserve it, too.
Read the web as text-first documents; without a webview, JavaScript, cookies or trackers.
Modern web pages often bring far more than the document you came to read: scripts, interfaces, trackers and layers of machinery between you and the information. AI agents are increasingly being given cleaner ways to access content. That should not mean humans are left with the clutter.
MDowser brings the plain-text web to your desktop. Enter an https:// address or open a local Markdown file, and MDowser renders the document in a fast, native interface designed for reading. No embedded web browser. No JavaScript execution. No cookies or trackers. An encrypted, bounded disk cache keeps repeat visits fast and stays under your control. Just the content, presented clearly.
MDowser is deliberately focused: one document format, one HTTP method and one network protocol. There is no web stack to run scripts or reproduce an entire website. If a host serves a Markdown document over HTTPS, MDowser can read it.
For people who write, learn, research, build and read. For anyone who wants information without the noise.
Get MDowser from GitHub Releases β
-
Markdown, rendered natively. CommonMark with GFM-style tables, footnotes, task lists and strikethrough, plus YAML frontmatter. Code blocks include syntax coloring and a Copy button; tables, callouts and documentation layouts are rendered by MDowser itself. HTML, JSX and
:::containers are treated as markup rather than executable application code. MDX components such as<Tabs>,<Accordion>,<Card>,<Steps>,<CodeGroup>and<Badge>β along with supported:::equivalents β render natively, without running JavaScript. See rendering details. -
A real desktop-browser experience. Vertical tabs, an address bar with autocomplete, favicons, encrypted local history and bookmarks, an encrypted HTTP cache for repeat visits (with clearly marked offline/saved copies), a document outline sidebar, one-key Markdown saving, zoom, light and dark themes, preferences and built-in
about:home,about:historyandabout:licensespages. Explore the interface. -
Your documents, not a stripped-down text dump. Images, color emoji, CJK and right-to-left scripts, in-page anchors, footnotes and automatic links for bare URLs are supported. Image formats include PNG, JPEG, GIF, WebP, JPEG XL, AVIF, ICO and static SVG, decoded in pure Rust.
-
Privacy by design. HTTPS only β never plain HTTP. GET requests only. No JavaScript, webview, cookies or proxy. Responses are cached only in an encrypted, bounded store that Preferences can clear per class and "Forget on exit" disables. Local files are opened only through user input or links inside a local document. A remote page cannot specify a local file path. Read the security model.
-
Small enough to reason about. One desktop application,
unsafe_code = "forbid", bounded inputs and a deliberately limited document format. Rendering is incremental: code blocks draw only visible lines, tables are fingerprinted once per document and the palette is interned. See the architecture.
Ready to try MDowser? Download the latest release for your operating system from the Releases page. Each release includes the available prebuilt packages and a SHA256SUMS.txt file for checksum verification.
Choose the asset matching your system:
| Platform | Release asset |
|---|---|
| macOS 13 or later | MDowser-<ver>-macos-universal.app.zip β Apple Silicon and Intel |
| Linux | mdowser-<ver>-linux-<arch>.tar.gz, the matching .deb or .rpm, or the mdowser-<ver>.flatpak bundle |
| Windows (x64) | mdowser-<ver>-windows-x86_64.zip |
| Windows on ARM | mdowser-<ver>-windows-aarch64.zip |
Release filenames use the version number and architecture of the build. Open Releases, select a release and download the appropriate file from its Assets section.
- macOS: The
.appis ad-hoc signed, not notarized. Open it once so Gatekeeper registers the block, then allow it under System Settings β Privacy & Security β Open Anyway. On current macOS, right-clicking and choosing Open does not bypass this restriction. - Linux: Install a Debian package with
sudo dpkg -i mdowser_<ver>_amd64.deb(orarm64), an RPM withsudo rpm -i mdowser-<ver>-*.rpm, or the Flatpak bundle withflatpak install mdowser-<ver>.flatpak. The package installs the desktop entry, hicolor icon and AppStream metadata, so MDowser can appear in the applications menu and software center. - Windows: Unzip the archive and run
mdowser.exe. On Windows on ARM, use theaarch64archive; the x86_64 build can also run through emulation. The.exeis unsigned, so Windows SmartScreen may show a warning. If you choose to proceed, select More info β Run anyway. See the navigation guide for registering.mdfiles.
Open a local document:
mdowser ~/notes.mdOr read a Markdown document hosted online:
mdowser https://example.com/readme.mdYou can also type a URL or file path into the address bar, or open a file from the application. Navigation stays inside MDowser, and Esc stops a load. mdowser --help prints the usage and mdowser --version the build, without opening a window.
For the URL-routing sequence, redirects and local-file rules, see Navigation.
| Shortcut | Action |
|---|---|
Ctrl/Cmd+T Β· Ctrl/Cmd+W |
New tab Β· close tab |
Ctrl/Cmd+L |
Focus the address field |
Ctrl/Cmd+R / F5 |
Refresh |
Ctrl/Cmd+F |
Find in page |
Ctrl/Cmd+S |
Save the page as Markdown in the downloads folder |
Ctrl+H (Windows/Linux) Β· Cmd+Y (macOS) |
Open history in a new tab |
Ctrl/Cmd+D |
Bookmark the current page |
Ctrl/Cmd +/= / - / 0 |
Zoom in / out / reset |
Ctrl/Cmd+, |
Open preferences |
See Interface and shortcuts for the complete list.
The Makefile handles dependencies, the host release build and packaging:
make # dependencies + host release build + current-OS packages in dist/
make dist # dependencies + packages for macOS, Linux and Windows in dist/
make install # install into /usr/local (PREFIX/DESTDIR supported)
make run # debug build and runmake and make dist install missing host dependencies first via make deps; set SKIP_SETUP=1 to skip setup. If Rust itself is not installed yet, run make deps once first (the Makefile resolves the toolchain at startup). Requirements include stable Rust β₯ 1.98 and a C compiler. NASM is also required on x86/x86_64 hosts; ARM64 hosts use the system toolchain and do not need it. On native Windows without make, use windows.ps1 as the equivalent entry point.
The build guide covers full requirements, the make test pipeline, multi-platform packaging and native Windows setup: Building MDowser.
Want to understand a specific part of MDowser? Start here:
| Guide | What you'll find |
|---|---|
| Rendering | Supported Markdown, code blocks, tables, callouts and native rendering behavior |
| Interface | Desktop UI, preferences and all keyboard shortcuts |
| Navigation | URL handling, redirects, local files and file associations |
| Building | Toolchain, Makefile pipeline, packages and runtime requirements |
| Architecture | Module map, design contracts and performance model |
| Security | Threat model, input limits and vulnerability reporting |
| Contributing | Getting started and code standards |
| Changelog | Notable changes, improvements and bug fixes |
| Third-party notices | Licenses for bundled dependencies and fonts; also available in Preferences β View third-party licenses |
MDowser keeps its network and document-handling surface intentionally small:
https://only,GETonly, and a single Markdown content type.- No JavaScript execution, webview, cookies or proxy. The only persistent network state is an encrypted, bounded HTTP cache that Preferences can clear per class and "Forget on exit" disables.
- Remote documents cannot name or load local paths; local files are opened only from user input or links in a local document.
- Hard limits on input and decoding: 10 MiB documents, 16 MiB / 48 MP images, 1 million events, and bounded encrypted history, bookmarks and cache.
- SVG is rasterized statically, and
unsafe_code = "forbid".
These restrictions are part of the design, not optional privacy switches. Read the full threat model and security limits.
MDowser is distributed under the Mozilla Public License 2.0 (MPL-2.0).
MDowser is an independent project and is not affiliated with, endorsed by or sponsored by any product, project or service it may mention. Third-party names and marks belong to their respective owners and are used only for identification or description. Bundled dependencies are listed in Third-party notices.