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 |
- 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
- 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
- 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.
- 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
- 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
| 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, Poppler-Qt6 |
| 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-runspeedynote 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.snbxspeedynote 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-libraryNote: 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 150SpeedyNote supports multiple languages:
- English
- 简体中文 (Simplified Chinese)
- Español (Spanish) (partial)
- Français (French) (partial)
Contributions for additional translations are welcome!
Contributions are welcome! Please feel free to:
- Report bugs via GitHub Issues
- Suggest features
- Add translations
- Submit pull requests
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.
| Library | License | Usage |
|---|---|---|
| Qt 6 | LGPL v3 | UI framework |
| MuPDF | AGPL v3 | PDF rendering/export |
| QMarkdownTextEdit | MIT | Markdown editor |
| miniz | MIT | ZIP compression |
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








