Skip to content
View MDowser's full-sized avatar
🎯
Focusing
🎯
Focusing
  • Joined Oct 13, 2026

Block or report MDowser

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
MDowser/README.md
MDowser icon

MDowser

The plain-text web, rendered natively.
A minimal, fast, cross-platform browser for Markdown over HTTPS and local files.
No webview, no JavaScript, no cookies, no cache.

Platforms: macOS, Linux, Windows Rust 1.98+ License: MPL-2.0

MDowser is a native desktop browser for the plain-text web. Paste an https:// URL or open a local Markdown file (file:///…, an absolute path or ~/notes.md) and it fetches or reads it, parses it once, and renders it with a clean, desktop-browser-style UI. The surface is deliberately small and auditable: one document format, one HTTP method, one network protocol β€” any static Markdown host just works.

Highlights

  • Native Markdown engine. CommonMark plus GFM-style extensions (tables, footnotes, tasklists, strikethrough) and YAML frontmatter, rendered by MDowser itself with a neutral documentation palette β€” code cards with syntax colors and a Copy button, striped bordered tables, callouts and documentation typography. HTML, JSX and ::: custom containers render at the markup level only: tags are transparent wrappers, MDX components (<Tabs>, <Accordion>, <Card>, <Steps>, <CodeGroup>, <Badge>) and their ::: equivalents (:::tabs, :::code-group, :::steps, :::card, :::accordion/:::details) draw natively, and :::/!!! admonitions become callouts β€” no JavaScript is ever executed. β†’ docs/RENDERING.md
  • Real browser chrome. Vertical tab rail, omnibox with address autocomplete (bookmarks, local history and a curated builtin list) and favicons, encrypted local history and bookmarks, zoom, light/dark theme, preferences and the internal about:home / about:history / about:licenses pages. β†’ docs/INTERFACE.md
  • Documents as they are. Color emoji, CJK and RTL scripts, images in PNG/JPEG/GIF/WebP/JPEG XL/AVIF/ICO/static SVG β€” decoded in pure Rust. In-page anchors, footnotes and bare-URL linkification included.
  • Private by design. https:// only (never http://), GET only, no cookies, cache, proxy, webview or JavaScript; local files only from user input. A remote page can never name or load a local path. β†’ docs/SECURITY.md
  • Small and auditable. One binary, unsafe_code = "forbid", hard caps on every input, and a single document format to reason about. Rendering is incremental: code blocks draw only the lines on screen, tables fingerprint once per document, and the palette is interned. β†’ docs/ARCHITECTURE.md

Install

Prebuilt archives for macOS, Linux and Windows are attached to every release:

Platform Download
macOS 13+ MDowser-<ver>-macos-universal.app.zip (Apple Silicon + Intel)
Linux mdowser-<ver>-linux-<arch>.tar.gz, the matching .deb / .rpm, or the mdowser-<ver>.flatpak bundle
Windows mdowser-<ver>-windows-x86_64.zip (x64) or mdowser-<ver>-windows-aarch64.zip (Windows on ARM)
  • macOS: the .app is ad-hoc signed, not notarized: double-click it once so Gatekeeper registers the block, then allow it in System Settings > Privacy & Security > Open Anyway (right-click > Open no longer bypasses this on current macOS).
  • Linux: sudo dpkg -i mdowser_<ver>_amd64.deb (or arm64), or sudo rpm -i mdowser-<ver>-*.rpm, or flatpak install mdowser-<ver>.flatpak. The package installs the desktop entry, hicolor icon and AppStream metadata, so MDowser appears in the applications menu and its Software-center page.
  • Windows: unzip and run mdowser.exe (on Windows on ARM use the aarch64 zip; the x86_64 one also runs there via emulation). The .exe is unsigned: on the SmartScreen warning click More info > Run anyway; see docs/NAVIGATION.md to register .md files.

SHA256SUMS.txt travels with every release.

Build from source

make        # deps + host release + current-OS dist into dist/
            #   macOS: universal .app.zip | Linux: tar.gz/.deb/.rpm/flatpak | Windows: .exe
make dist   # deps + host release + EVERY platform into dist/ (macOS, Linux, Windows)
make install   # install into /usr/local (PREFIX/DESTDIR honored; `make dist-rpm` for RPM)
make run    # debug build + run

make and make dist install what the host is missing first (make deps; SKIP_SETUP=1 opts out). Requires stable Rust β‰₯ 1.98 and a C compiler (plus NASM on x86/x86_64 hosts; ARM64 hosts assemble with the system toolchain and need none). On native Windows without make, windows.ps1 is the equivalent entry point (see docs/BUILDING.md). Full requirements, the make test pipeline and multi-OS make dist packaging: docs/BUILDING.md.

Usage

mdowser ~/notes.md                     # local document
mdowser https://example.com/readme.md  # remote document

Type an address or path in the omnibox, or open a file with the app. Every navigation stays inside MDowser; Esc stops a load. See docs/NAVIGATION.md for the route cascade and local file rules.

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+H / Cmd+Y History (opens in a new tab)
Ctrl/Cmd+D Bookmark the current page
Ctrl/Cmd + / - / 0 Zoom in / out / reset
Ctrl/Cmd+, Preferences

All shortcuts: docs/INTERFACE.md.

Documentation

Security

The network contract is deliberately tiny: https:// only, GET only, one Markdown content type, no cookies, cache or proxy, and local files only from user input (or links inside a local document) β€” a remote page can never name or load a local path. Every read and decode path is hard-capped (10 MiB documents, 16 MiB / 48 MP images, 1M events, bounded encrypted history and bookmarks), SVG is rasterized statically and unsafe_code = "forbid". The full threat model and caps are in docs/SECURITY.md.

Roadmap

  • Optional cache (deliberately cacheless today).
  • Per-block unique indent ids, tab drag-reorder.

License

Mozilla Public License 2.0 (MPL-2.0) β€” see LICENSE.

Trademarks

MDowser is an independent project, not affiliated with, endorsed by or sponsored by any product, project or service it may mention. Every third-party name and mark belongs to its respective owner and is used only for identification or description; bundled dependencies are listed in THIRD_PARTY_NOTICES.md.

Pinned Loading

  1. MDowser MDowser Public

    The plain-text web, rendered natively. A minimal, fast, cross-platform browser for Markdown over HTTPS (and local files).

    Rust 1