Skip to content

Repository files navigation

Markread

A minimal, read-only Markdown reader for Android and web.

Good open-source Markdown readers are hard to find on Android. Existing apps tend to have either poor UI or poor scrolling performance.

MarkReader is one of the few that gets the UI right, but beneath it lies the outdated Markwon library, which holds back its file rendering. This project was born to fill that gap — powered by the much more modern gpt_markdown rendering library, while inheriting MarkReader's polished UI (with a few improvements along the way).

Since this is a Flutter app, the APK size will be larger than MarkReader. If you're size-sensitive, stick with the original.

Features

  • Markdown rendering with full formatting support (headings, tables, code blocks, images)
  • Source code view with syntax highlighting and language detection
  • Raw text view for plain text reading
  • Search within open documents
  • Table of contents with heading navigation
  • Zoomable text with pinch-to-zoom
  • Reading surfaces: Light and Dark (from app color schemes), with a session-only reader surface toggle
  • Blue Topaz markdown theme (light blue-cascade / dark rainbow headings), selectable in Settings
  • Monospace markdown theme (Typora-style source-like chrome; light + dark), selectable in Settings
  • Customizable reading: font size, line height, text alignment
  • Word wrap and code block wrap toggles
  • Android intent support: open markdown files from other apps via "Open with..."
  • Material 3 design with light, dark, and system theme modes

Screenshots

Light theme    Dark theme

Light                                                        Dark

Getting Started

Prerequisites

  • Flutter SDK (^3.11.0-296.4.beta)
  • Android SDK (for Android builds)

Install dependencies

flutter pub get

Run on device

# List available devices
flutter devices

# Run on a connected Android device
flutter run -d <device-id>

# Run on web
flutter run -d chrome

Build

# Android debug APK
flutter build apk --debug

# Android release APK (arm64 only, minified — ~20 MB)
flutter build apk --release --target-platform android-arm64

# Android universal APK (armeabi-v7a + arm64-v8a + x86_64)
flutter build apk --release --target-platform android-arm,android-arm64,android-x64

# Full release (APK + AAB, with analysis)
./release.sh

# Web
flutter build web

Architecture

  • State management: Riverpod 3.x (Notifier/AsyncNotifier pattern, no code generation)
  • Navigation: GoRouter with route parameters
  • Markdown rendering: gpt_markdown 1.1.7
  • Design: Material 3 with ColorScheme manual configuration
lib/
├── main.dart                    # Entry point
├── app.dart                     # App widget, router, theme setup
├── core/
│   ├── models/                  # Data models (UserPreferences, etc.)
│   ├── providers/               # Shared providers (preferences)
│   ├── services/                # File I/O, intent handling
│   └── theme/                   # Light/dark theme definitions
└── features/
    ├── home/                    # Home screen with file picker
    ├── viewer/                  # Markdown/Source/Raw viewer
    │   ├── screens/
    │   ├── providers/
    │   └── widgets/             # MarkdownView, SourceCodeView, SearchBar, TOC, Zoom
    └── settings/                # Appearance and reading preferences

Credits

The original Android version of this app: mark-reader by usamaiqb.

Markdown theme Blue Topaz is adapted from typora-blue-topaz-theme by qishaoyumu (MIT; upstream Obsidian Blue Topaz by whyt-byte).

Markdown theme Monospace is adapted from typora-monospace-theme by typora (MIT).

License

This project is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0-only).

Third-party dependencies and adapted themes retain their original licenses (see Credits).

About

A minimal, read-only Markdown reader for web and Android.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages