SpeedyNote

June 3, 2026 · View on GitHub

SpeedyNote Logo

A blazing-fast, cross-platform note-taking app for stylus users

Built for students who need iPad-quality annotation on budget hardware

License: GPL v3 Platform Qt

Get it on Flathub

English中文


Why SpeedyNote?

The ProblemSpeedyNote's Solution
OneNote doesn't support PDF annotationFull PDF support with fast rendering
Xournal++ is painfully slow on large PDFs360Hz input on a Celeron N4000 (1.1GHz)
GoodNotes/Notability cost $10+ and require iPadFree & open source, runs on $50 tablets
Most note apps are mobile-only or desktop-onlySame experience on Windows, Linux, macOS, Android & iPadOS

Features

Performance First

  • 360Hz stylus polling on low-end hardware (tested: Celeron N4000 @ 1.1GHz)
  • Instant PDF loading - large documents open in seconds, not minutes
  • Small memory footprint - native C++ with no Electron bloat
  • ARM64 native builds - optimized for Snapdragon laptops and Rockchip Chromebooks

Professional Drawing Tools

  • Pressure-sensitive inking with Pen, Marker, and Highlighter tools
  • Vector-based strokes - always sharp at non-extreme zoom levels
  • Multi-layer editing (SAI2-style) - add, delete, reorder, merge layers
  • Stroke eraser with full undo/redo support
  • Touch gestures - two-finger pan, pinch-to-zoom, palm rejection

Document Modes

  • Paged Notebooks - traditional page-by-page notes (`.snb)
  • Edgeless Canvas - infinite whiteboard with lazy-loading tiles (`.snb)
  • PDF Backgrounds - annotate PDFs with clickable internal links
  • Sharing - .snbx note bundles allows easy cross-platform note sharing.

Tablet-First UX

  • Action bars - context-sensitive buttons appear when you need them
  • Subtoolbars - quick access to tool settings without menu diving
  • Page panel - thumbnail navigation with drag-to-reorder
  • PDF outline - click TOC entries to jump to sections

Advanced Features

  • Handwriting OCR - recognize handwritten notes on-device for text search and selection (macOS & Linux); supports Latin scripts, Chinese, Japanese, and Korean
  • Link objects - create clickable links to markdown notes, URLs, or positions
  • Markdown notes - attach rich text notes to any page or position
  • Multi-tab editing - work on multiple documents simultaneously

Screenshots

PDF AnnotationLayer PanelPage Thumbnails
PDFLayersPages
Edgeless CanvasAction BarSubtoolbar
EdgelessActionSubtoolbar
Link ObjectsMarkdown SupportAndroid
LinkObjectsMarkdownAndroid

Getting Started

System Requirements

PlatformMinimumRecommended
WindowsWindows 10 1809Windows 11
macOSmacOS 13macOS 15+
LinuxUbuntu 22.04 / Fedora 38Any with Qt 6.4+
AndroidAndroid 9 (API 28)Android 13+
iPadOSiPadOS 16.0iPadOS 17+

Hardware: Any x86_64 or ARM64 CPU. Tested on Intel Core i5 470UM (2010), Celeron N4000, Snapdragon 7c Gen 2, Rockchip RK3399, Apple M4

Installation

Windows / macOS / Linux

Download the latest release from GitHub Releases or the official website.

PlatformPackage
Windows.exe installer
macOS.dmg disk image
Debian/Ubuntu.deb package
Fedora/RHEL.rpm package
Arch Linuxyay -S speedynote

Android

Option 1: Google Play Store (coming soon), supports development
Option 2: Build from source - Free, see Android Build Guide

The Play Store version is a convenience fee. The source code is always free under GPL v3.

iPadOS

Option 1: Sileo (jailbroken iPads) - Add the SpeedyNote APT repository and install via Sileo
Option 2: TrollStore - Download the .ipa from GitHub Releases and install via TrollStore
Option 3: Build from source - See iPadOS Build Guide

iPadOS builds require a jailbroken device or TrollStore. App Store distribution is not available at this time.

Linux APT Repository (Debian/Ubuntu)

# Add repository and install
wget -O- https://apt.speedynote.org/speedynote-release-key.gpg | \
  sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/speedynote.gpg

echo "deb [arch=amd64,arm64 signed-by=/etc/apt/trusted.gpg.d/speedynote.gpg] \
  https://apt.speedynote.org stable main" | \
  sudo tee /etc/apt/sources.list.d/speedynote.list

sudo apt update && sudo apt install speedynote

Building From Source

Prerequisites

PlatformRequirements
AllCMake 3.16+, C++17 compiler
WindowsMSYS2 with clang64/clangarm64 toolchain
macOSXcode Command Line Tools, Homebrew
LinuxQt 6.4+ dev packages, MuPDF (handwriting OCR optional, see Linux guide)
AndroidDocker (see Android Build Guide)
iPadOSmacOS, Xcode 15+, Qt 6.9.3 for iOS (see iPadOS Build Guide)

Quick Build

# Clone the repository
git clone https://github.com/alpha-liu-01/SpeedyNote.git
cd SpeedyNote

# Windows (MSYS2 clang64 shell)
./compile.ps1

# macOS
./compile-mac.sh

# Linux
./compile.sh
# Or build packages: ./build-package.sh

Detailed Build Guides


File Formats

FormatDescriptionUse Case
.snbBundle folder with tilesEdgeless canvas, large projects
.snbxCompressed bundle (ZIP)Sharing, backup

Note: The legacy .spn format from v0.x is not supported.


Command Line Interface (Desktop)

SpeedyNote includes a powerful CLI for batch operations on Windows and Linux. Perfect for scripting, automation, and syncing notes between devices.

Quick Start

# Export all notebooks to PDF
speedynote export-pdf ~/Notes/ -o ~/PDFs/

# Backup notebooks to .snbx packages
speedynote export-snbx ~/Notes/ -o ~/Backup/

# Import .snbx packages
speedynote import ~/Downloads/*.snbx -d ~/Notes/

Commands

CommandDescription
export-pdfExport notebooks to PDF format
export-snbxExport notebooks to .snbx packages
importImport .snbx packages as notebooks

Export to PDF

speedynote export-pdf [OPTIONS] <input>... -o <output>
OptionDescription
-o, --outputOutput file (single) or directory (batch)
--dpi <N>Export resolution (default: 150)
--pages <RANGE>Page range, e.g., "1-10,15,20-25"
--no-metadataDon't preserve PDF metadata
--no-outlineDon't preserve PDF bookmarks
--annotations-onlyExport strokes only (blank background)
--overwriteOverwrite existing files
--recursiveSearch directories recursively
--dry-runPreview without creating files

Examples:

# Single notebook to PDF
speedynote export-pdf ~/Notes/Lecture.snb -o ~/Desktop/lecture.pdf

# All notebooks at 300 DPI
speedynote export-pdf ~/Notes/ -o ~/PDFs/ --dpi 300

# Export only annotations (no background)
speedynote export-pdf ~/Notes/*.snb -o ~/PDFs/ --annotations-only

# Preview what would be exported
speedynote export-pdf ~/Notes/ -o ~/PDFs/ --dry-run

Export to SNBX

speedynote export-snbx [OPTIONS] <input>... -o <output>
OptionDescription
-o, --outputOutput file (single) or directory (batch)
--no-pdfDon't embed source PDF (smaller files)
--overwriteOverwrite existing files
--recursiveSearch directories recursively
--dry-runPreview without creating files

Examples:

# Backup with embedded PDFs
speedynote export-snbx ~/Notes/ -o ~/Backup/

# Backup without PDFs (smaller)
speedynote export-snbx ~/Notes/ -o ~/Backup/ --no-pdf

# Single notebook
speedynote export-snbx ~/Notes/Project.snb -o ~/Desktop/project.snbx

Import SNBX Packages

speedynote import [OPTIONS] <input>... -d <dest>
OptionDescription
-d, --destDestination directory for notebooks
--add-to-libraryAdd imported notebooks to the launcher timeline
--overwriteOverwrite existing notebooks
--recursiveSearch directories recursively
--dry-runPreview without importing

Examples:

# Import packages
speedynote import ~/Downloads/*.snbx -d ~/Notes/

# Import and add to library (shows in launcher)
speedynote import ~/Downloads/*.snbx -d ~/Notes/ --add-to-library

# Import from a directory
speedynote import ~/Backup/ -d ~/Notes/ --recursive --add-to-library

Note: On Android, imported notebooks are automatically added to the library. On desktop, use --add-to-library to make them appear in the launcher timeline.

Common Options

These options work with all commands:

OptionDescription
--verboseShow detailed progress
--jsonOutput results as JSON (for scripting)
--fail-fastStop on first error
-h, --helpShow help for command
-v, --versionShow version

Exit Codes

CodeMeaning
0All operations succeeded
1Some files failed or were skipped
2All files failed
3Invalid arguments
5Cancelled (Ctrl+C)

Scripting Example

#!/bin/bash
# Sync notes from tablet to PC via SSH

TABLET="user@tablet:/storage/emulated/0/Notes"
LOCAL="$HOME/Notes"
BACKUP="$HOME/Backup"

# Pull new .snbx files from tablet
rsync -av "$TABLET/*.snbx" "$BACKUP/incoming/"

# Import to local library
speedynote import "$BACKUP/incoming/" -d "$LOCAL" --json | \
  jq '.status == "success"' && rm "$BACKUP/incoming/"*.snbx

# Export updated notes as PDF for reference
speedynote export-pdf "$LOCAL" -o "$HOME/PDFs/" --dpi 150

Supported Languages

SpeedyNote supports multiple languages:

  • English
  • 简体中文 (Simplified Chinese)
  • Español (Spanish) (Machine translated)
  • Français (French) (Machine translated)
  • German (Machine translated)
  • Brazilian Portuguese (Machine translated)

Contributions for additional translations are welcome!


Contributing

Contributions are welcome! Please feel free to:

  • Report bugs via GitHub Issues
  • Suggest features
  • Add translations
  • Submit pull requests

License

SpeedyNote is licensed under the GNU General Public License v3.0.

  • Free to use, modify, and distribute
  • Source code always available
  • Commercial use allowed (Play Store version)
  • Derivative works must also be GPL v3

See LICENSE for details.

Third-Party Libraries

LibraryLicenseUsage
Qt 6LGPL v3UI framework
MuPDFAGPL v3PDF rendering/export
QMarkdownTextEditMITMarkdown editor
minizMITZIP compression

Support the Project

If SpeedyNote helps you, consider:


Made for students who deserve better tools

SpeedyNote v1.x