Skip to content

ThorstenRhau/rendr

Repository files navigation

rendr

rendr is a native macOS Markdown previewer for local documents. Open a file from Finder, Open With, or the shell, and rendr shows a live AppKit preview backed by WKWebView.

It is built for the everyday writing loop: edit Markdown in your preferred editor, keep a native preview window beside it, and export the result when you need to share it.

Why rendr exists

Markdown previewing should feel like opening a document, not signing into a service or starting a web app. rendr keeps the workflow local-first: no accounts, no analytics, no remote rendering service, and native macOS file-open behavior for the documents already on your machine.

Core capabilities

  • Open Markdown files from Finder, Open With, or open -a rendr.
  • Live reload as the source file changes.
  • GitHub-flavored Markdown with tables, task lists, strikethrough, autolinks, footnotes, heading anchors, and GitHub-style alerts.
  • Light and dark appearances that follow the system setting.
  • Syntax highlighting and copy buttons for fenced code blocks.
  • Mermaid and supported PlantUML diagram fences.
  • Preview search with Command-F, plus zoom controls.
  • Export to HTML or continuous, web-page-style PDF.
  • Conservative sanitization before rendering in WKWebView.

Requirements

  • macOS 26 or newer.
  • Swift 6.2 toolchain, usually through Xcode 26.5 or newer.

To compile from source:

  • Xcode 26.5 or newer, or another Swift 6.2 toolchain with the macOS 26 SDK.
  • SwiftPM access to fetch the pinned swift-cmark 0.8.0 dependency on the first build.
  • Standard macOS command-line tools used by the Makefile and install scripts, including make, bash, git, perl, xcrun, and codesign.
  • Full Xcode, not only the Command Line Tools, when running make install; the install script uses actool to build the app icon asset catalog.

No Homebrew cmark-gfm, Node.js, npm, or external Mermaid install is required. Mermaid is bundled as an app resource.

Install

Build and install the app bundle:

make install

By default this installs rendr.app to ~/Applications. Override the install location with APP_DIR:

APP_DIR="$HOME/Applications" make install

The installed app contains its executable, bundled rendering resources, privacy manifest, license, and third-party notices. It does not install a separate rendr shell command.

Usage

Open a Markdown file with rendr.app from Finder, Open With, or the shell:

open -a rendr path/to/document.md

For development without installing first:

make run-app MD=README.md

Closing the last preview window leaves the app running so it can handle the next file-open event without relaunching.

If sandboxed access prevents document-relative images or media from loading, use File -> Grant Folder Access... and choose the containing folder.

Use the File menu to export the current preview as HTML or as a continuous PDF.

Privacy

rendr does not collect analytics, create accounts, track users, or send document contents to an external service. Documents are rendered locally. HTTPS images and media referenced by a document may load from their original URLs, while scripts and network fetches are blocked by the preview content security policy. Local exports are written only to destinations selected by the user.

See Resources/AppStore/Privacy.md for the App Store privacy summary.

Development

Use the Makefile entry points:

make help
make build
make test
make release

Project layout:

  • Sources/RendrKit: shared app policy and rendering pipeline code.
  • Sources/rendr-app: AppKit application entry point and bundled resources.
  • Tests/RendrKitTests: Swift Testing coverage for rendering, app policy, install behavior, and source contracts.
  • Resources: app icon assets.
  • Resources/AppStore: sandbox entitlements and privacy resources used by the installed app bundle.
  • scripts: install tooling.

License

BSD 3-Clause. See LICENSE. Third-party notices are listed in THIRD_PARTY_NOTICES.md.

About

Markdown Previewer

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors