Browse by type

A blazing-fast, cross-platform note-taking app for stylus users
Built for students who need iPad-quality annotation on budget hardware
| 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 |
.snbx note bundles allows easy cross-platform note sharing. | PDF Annotation | Layer Panel | Page Thumbnails |
|---|---|---|
![]() |
![]() |
![]() |
| Edgeless Canvas | Action Bar | Subtoolbar |
|---|---|---|
![]() |
![]() |
![]() |
| Link Objects | Markdown Support | Android |
|---|---|---|
![]() |
![]() |
![]() |
| 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
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 |
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.
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.
# 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
| 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) |
# 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
| 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.
SpeedyNote includes a powerful CLI for batch operations on Windows and Linux. Perfect for scripting, automation, and syncing notes between devices.
# 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/
| Command | Description |
|---|---|
export-pdf |
Export notebooks to PDF format |
export-snbx |
Export notebooks to .snbx packages |
import |
Import .snbx packages as notebooks |
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
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
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.
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 |
| Code | Meaning |
|---|---|
| 0 | All operations succeeded |
| 1 | Some files failed or were skipped |
| 2 | All files failed |
| 3 | Invalid arguments |
| 5 | Cancelled (Ctrl+C) |
#!/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
SpeedyNote supports multiple languages:
$ claude mcp add SpeedyNote \
-- python -m otcore.mcp_server <graph>