Free & Open Source · MIT License

Open .MD Files. Stay Private. Work Offline.

Free .md file viewer and md reader. Open .md files and folders instantly in your browser — no uploads, no accounts. Works offline.

No signupNo uploadWorks offline
No file uploads
Works offline
100% open source

The best .md file viewer for privacy

Three principles that guide every decision in ReadLocal MD viewer.

Private by Design

.md files open via the browser's FileReader API. No server ever receives your content — not even for a millisecond. Your notes, documentation, and journals stay yours.

Offline-Ready PWA

Install once, read .md files forever. A full Workbox service worker caches every asset on first load. Open ReadLocal with zero internet. Works on desktop, Android, and iOS.

Folder-Aware Reader

Drop an entire project directory with .md files. ReadLocal recursively traverses subdirectories and renders a collapsible folder tree in the sidebar — exactly like your file manager.

Everything you need to read Markdown well

No feature bloat. Every decision was made with privacy and simplicity first.

Full GFM Support

GitHub Flavored Markdown

Tables, fenced code blocks with syntax highlighting for 180+ languages, task lists, strikethrough, blockquotes, collapsible details sections, superscript, and subscript. Exactly what GitHub renders.

  • highlight.js powers 180+ language grammars
  • Task lists with [ ] and [x] syntax
  • Collapsible <details> and <summary> tags
syntax-demo.md
GitHub Flavored Markdown
Language
Highlight
Lines
JavaScript
180+
Python
Rust
typescript
// highlight.js powers this
const viewer = ReadLocal.init();
Task list support
Strikethrough text
Collapsible <details> sections
Comfort Controls

Reading Controls

Three font sizes (S · M · L). Four column widths: 580px · 740px · 960px · Full. Warm cream light theme and deep ink dark theme. All settings auto-save to localStorage — nothing to configure, ever.

  • Font size: Small, Medium, Large
  • Column widths: Narrow to Full
  • Settings persist via localStorage
reading-preferences.md
Reading Controls
Font Size
Column Width
Theme
Your preferences, remembered

All settings auto-save to localStorage. Nothing to configure — just read.

Privacy-First

Session Persistence (Optional)

Enable "Remember Files" via the header toggle and your documents survive a browser refresh — stored locally via IndexedDB, never sent anywhere. Turn it off and nothing is stored. Default is off.

  • Opt-in only — off by default
  • IndexedDB stores file handles, not content
  • One toggle to disable completely
READLOCAL
Remember Files
Session persistence is on
Stored in IndexedDB · Never sent anywhere
📄docs/README.md
📄notes.md
📄changelog.md
↺ These files will reopen after a browser refresh
Quick Access

Favorites

Star any file for instant access at the top of the sidebar. Favorites persist across sessions as a list of IDs in localStorage — no file content is stored, just references.

  • Star any file from the sidebar
  • Favorites section always at top
  • Stored as IDs only — zero content
Sidebar
★ Favorites
README.md
notes.md
All Files
📁 docs/
📄 setup.md
📄 changelog.md
📄 ideas.md
Safe by Default

Secure Rendering

DOMPurify sanitization with a protocol-validation hook. <script>, <iframe>, inline event handlers (onclick, onerror), and data: URIs are stripped before rendering. Open any .md file safely.

  • DOMPurify strips dangerous HTML
  • Protocol allowlist: http, https, mailto
  • Safe to open files from any source
XSS Protection Active
DOMPurify sanitizationallowed
Protocol validation hookallowed
<script> tagsstripped
Inline onclick handlersstripped
data: URIsstripped
Instant Results

Real-Time Search

Instant filename and path filtering across all loaded files. Results narrow as you type — no debounce, no delay. Find any file in a large project immediately.

  • Searches filenames and full paths
  • No debounce — instant feedback
  • Works across hundreds of files
read|
3 results for "read"
📄
docs/README.md
Getting Started with <mark class="bg-teal/20 text-teal rounded px-0.5">read</mark>Local
📄
docs/setup.md
How to <mark class="bg-teal/20 text-teal rounded px-0.5">read</mark> local .md files
📄
changelog.md
<mark class="bg-teal/20 text-teal rounded px-0.5">read</mark>Local v1.2.0 released

Three steps to reading .md files

No setup required. No account needed. Just drop .md files and read.

1

Drop your files

Drag any .md file or folder onto the app. Or click Add to use the file picker.

2

Browse the tree

Your folder structure with .md files appears instantly in the sidebar. Click any .md file to open it in the reading area.

3

Read in peace

Adjust font size, column width, and theme to your preference. Everything remembers itself the next time you open the app.

What stays on your device, stays on your device.

  • No file upload — FileReader API processes files 100% in-browser
  • No analytics — no Google Analytics, Mixpanel, Sentry, or pixel trackers
  • No accounts — no sign-up, no email, no user profile
  • No cookies — only localStorage for your own preferences (theme, font, width)
  • Open source — every line of code is auditable on GitHub

The only network requests ReadLocal ever makes are to load its own JS/CSS/font assets from the host server on first load. After that, everything comes from your local cache.

Roadmap

What's built and what's coming

ReadLocal is actively developed. Everything we ship is open source and privacy-first.

Completed

8 features shipped

Syntax highlighting

Core

highlight.js, 180+ languages

Recursive folder support

UX

Drag-and-drop with cycle detection

Session persistence

Privacy

IndexedDB, opt-in, privacy-respecting

Favorites

UX

Quick file access via starred list

XSS hardening

Security

DOMPurify + protocol validation hook

PWA installation

Core

Full offline caching

Error Boundary

Stability

Graceful recovery UI

Keyboard navigation

Accessibility

Full ARIA accessibility

Planned

8 features in pipeline

Copy Code Block

UX

One-click copy on every fenced code block

Table of Contents

Navigation

Auto-generated from headings with smooth scroll

Frontmatter display

Enhancement

YAML front matter as styled document header

Find in Document

Search

Ctrl+F style search with highlighted matches

Local image rendering

Media

Support ./relative.png paths from dropped folders

Mermaid diagrams

Enhancement

Flowcharts, sequence diagrams, ERDs in Markdown

Print / Export PDF

Export

One-click clean print stylesheet

Multiple Tabs

UX

Split view for power users

Have a feature request? We'd love to hear from you.

Request a Feature on GitHub

Install it. Forget the browser.

ReadLocal works as a native-feeling app on any device. No app store. No account. Install directly from your browser.

Chrome / Edge

Windows, macOS, Linux, Android

Look for the "Install ReadLocal" banner at the bottom of the page, or click the install icon in the browser's address bar.

iOS Safari

iPhone / iPad

Tap the Share button (square with upward arrow) → scroll to "Add to Home Screen" → tap Add.

Android (Samsung, Firefox, Brave)

All Android devices

Open the three-dot menu → "Add to Home Screen" or "Install App".

After installing:
  • Opens in its own window — no browser chrome, no address bar
  • Works completely offline
  • Updates silently in the background when a new version ships
Open Source

Free to use. Free to fork.
Free forever.

ReadLocal is MIT-licensed and fully open source. Self-host in three commands. No vendor lock-in. No telemetry. No subscription required.

MIT Licensed

Free for personal and commercial use

Zero Telemetry

No tracking, no phone home, ever

Self-Hostable

Deploy anywhere in 3 commands

terminal
git clone https://github.com/Imranpranto/readlocal-local-markdown-md-file-renderer.git
npm install
npm run dev