SpeedyNote
June 3, 2026 · View on GitHub
A blazing-fast, cross-platform note-taking app for stylus users
Built for students who need iPad-quality annotation on budget hardware
Why SpeedyNote?
| The Problem | SpeedyNote's Solution |
|---|---|
| OneNote doesn't support PDF annotation | Full PDF support with fast rendering |
| Xournal++ is painfully slow on large PDFs | 360Hz input on a Celeron N4000 (1.1GHz) |
| GoodNotes/Notability cost $10+ and require iPad | Free & open source, runs on $50 tablets |
| Most note apps are mobile-only or desktop-only | Same 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 -
.snbxnote 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 Annotation | Layer Panel | Page Thumbnails |
|---|---|---|
![]() | ![]() | ![]() |
| Edgeless Canvas | Action Bar | Subtoolbar |
|---|---|---|
![]() | ![]() | ![]() |
| Link Objects | Markdown Support | Android |
|---|---|---|
![]() | ![]() | ![]() |
Getting Started
System Requirements
| Platform | Minimum | Recommended |
|---|---|---|
| Windows | Windows 10 1809 | Windows 11 |
| macOS | macOS 13 | macOS 15+ |
| Linux | Ubuntu 22.04 / Fedora 38 | Any with Qt 6.4+ |
| Android | Android 9 (API 28) | Android 13+ |
| iPadOS | iPadOS 16.0 | iPadOS 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.
| Platform | Package |
|---|---|
| Windows | .exe installer |
| macOS | .dmg disk image |
| Debian/Ubuntu | .deb package |
| Fedora/RHEL | .rpm package |
| Arch Linux | yay -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
| Platform | Requirements |
|---|---|
| All | CMake 3.16+, C++17 compiler |
| Windows | MSYS2 with clang64/clangarm64 toolchain |
| macOS | Xcode Command Line Tools, Homebrew |
| Linux | Qt 6.4+ dev packages, MuPDF (handwriting OCR optional, see Linux guide) |
| Android | Docker (see Android Build Guide) |
| iPadOS | macOS, 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
| Format | Description | Use Case |
|---|---|---|
.snb | Bundle folder with tiles | Edgeless canvas, large projects |
.snbx | Compressed 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
| Command | Description |
|---|---|
export-pdf | Export notebooks to PDF format |
export-snbx | Export notebooks to .snbx packages |
import | Import .snbx packages as notebooks |
Export to PDF
speedynote export-pdf [OPTIONS] <input>... -o <output>
| Option | Description |
|---|---|
-o, --output | Output file (single) or directory (batch) |
--dpi <N> | Export resolution (default: 150) |
--pages <RANGE> | Page range, e.g., "1-10,15,20-25" |
--no-metadata | Don't preserve PDF metadata |
--no-outline | Don't preserve PDF bookmarks |
--annotations-only | Export strokes only (blank background) |
--overwrite | Overwrite existing files |
--recursive | Search directories recursively |
--dry-run | Preview 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>
| Option | Description |
|---|---|
-o, --output | Output file (single) or directory (batch) |
--no-pdf | Don't embed source PDF (smaller files) |
--overwrite | Overwrite existing files |
--recursive | Search directories recursively |
--dry-run | Preview 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>
| Option | Description |
|---|---|
-d, --dest | Destination directory for notebooks |
--add-to-library | Add imported notebooks to the launcher timeline |
--overwrite | Overwrite existing notebooks |
--recursive | Search directories recursively |
--dry-run | Preview 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-libraryto make them appear in the launcher timeline.
Common Options
These options work with all commands:
| Option | Description |
|---|---|
--verbose | Show detailed progress |
--json | Output results as JSON (for scripting) |
--fail-fast | Stop on first error |
-h, --help | Show help for command |
-v, --version | Show version |
Exit Codes
| Code | Meaning |
|---|---|
| 0 | All operations succeeded |
| 1 | Some files failed or were skipped |
| 2 | All files failed |
| 3 | Invalid arguments |
| 5 | Cancelled (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
| Library | License | Usage |
|---|---|---|
| Qt 6 | LGPL v3 | UI framework |
| MuPDF | AGPL v3 | PDF rendering/export |
| QMarkdownTextEdit | MIT | Markdown editor |
| miniz | MIT | ZIP compression |
Support the Project
If SpeedyNote helps you, consider:
- Buy me a coffee
- Starring this repository
- Purchasing the Android version on Google Play
- Reporting bugs and suggesting improvements
- Contributing translations
Made for students who deserve better tools
SpeedyNote v1.x








