Skip to content

Joplin Cheat Sheet

Overview

Joplin is a free, open-source note-taking and to-do application that supports Markdown formatting, end-to-end encryption, and synchronization across multiple platforms. It can handle large numbers of notes organized into notebooks, and supports tagging, searching, and attaching files to notes. Notes are stored locally and can be synced via cloud services.

Joplin is available on Windows, macOS, Linux, Android, and iOS. It supports importing from Evernote (ENEX files), and can synchronize via Nextcloud, Dropbox, OneDrive, WebDAV, or Joplin Cloud. The application also features a web clipper browser extension for saving web pages directly into your notes.

Installation

Desktop

# macOS via Homebrew
brew install --cask joplin

# Linux via AppImage
wget -O Joplin.AppImage https://github.com/laurent22/joplin/releases/latest/download/Joplin-x86_64.AppImage
chmod +x Joplin.AppImage
./Joplin.AppImage

# Linux via Snap
sudo snap install joplin-desktop

# Windows via Chocolatey
choco install joplin

# Windows via winget
winget install --id=Joplin.Joplin

Terminal App (CLI)

# Install via npm
npm install -g joplin

# Start the terminal app
joplin

# Import notes from Evernote
joplin import /path/to/exported.enex

# Sync with configured target
joplin sync

CLI Commands

CommandDescription
joplinStart the terminal UI
joplin lsList notebooks
joplin ls notebook_nameList notes in a notebook
joplin mknote "Title"Create a new note
joplin mkbook "Notebook"Create a new notebook
joplin edit "Title"Edit a note in your default editor
joplin cat "Title"Display note contents
joplin rm "Title"Delete a note
joplin cp "Title" "Notebook"Copy note to notebook
joplin mv "Title" "Notebook"Move note to notebook
joplin tag add tagname "Title"Add a tag to a note
joplin tag listList all tags
joplin search "query"Search notes
joplin syncSynchronize notes
joplin import file.enexImport Evernote export
joplin export --format md /pathExport notes as Markdown
joplin configShow configuration
joplin server startStart Joplin Server

Keyboard Shortcuts (Desktop)

ShortcutAction
Ctrl+NNew note
Ctrl+Shift+NNew to-do
Ctrl+BNew notebook
Ctrl+PGo to anything (search)
Ctrl+Shift+PCommand palette
Ctrl+FSearch in note
Ctrl+GSearch in all notes
Ctrl+EToggle editor/viewer
Ctrl+LToggle sidebar
Ctrl+Shift+LToggle note list
Ctrl+SSync manually
F10Toggle external editing
Alt+EToggle rich text / Markdown
Ctrl+,Open settings

Synchronization

Sync Targets

TargetConfig ValueDescription
File system2Sync to a local directory
OneDrive3Microsoft OneDrive
Nextcloud5Self-hosted Nextcloud
WebDAV6Any WebDAV server
Dropbox7Dropbox cloud storage
S3 (Compatible)8AWS S3 or compatible
Joplin Server9Official Joplin Server
Joplin Cloud10Hosted Joplin Cloud service

Configuring Sync via CLI

# Set sync target to Nextcloud
joplin config sync.target 5
joplin config sync.5.path https://nextcloud.example.com/remote.php/webdav/Joplin
joplin config sync.5.username your_username
joplin config sync.5.password your_password

# Set sync target to filesystem
joplin config sync.target 2
joplin config sync.2.path /path/to/sync/directory

# Run sync
joplin sync

Configuration

Key Configuration Options

# Enable end-to-end encryption
joplin config encryption.enabled 1

# Set editor
joplin config editor "vim"

# Set date format
joplin config dateFormat "YYYY-MM-DD"

# Set time format
joplin config timeFormat "HH:mm"

# Set locale
joplin config locale en_US

# Show completed to-dos
joplin config showCompletedTodos 1

# Set sort order
joplin config notes.sortOrder.field user_updated_time
joplin config notes.sortOrder.reverse 1

Encryption

# Enable E2EE via CLI
joplin e2ee enable

# Check encryption status
joplin e2ee status

# Decrypt all notes
joplin e2ee decrypt

# Disable E2EE
joplin e2ee disable

Advanced Usage

Joplin Server (Self-Hosted)

# docker-compose.yml
version: '3'
services:
  joplin:
    image: joplin/server:latest
    ports:
      - "22300:22300"
    environment:
      - APP_PORT=22300
      - APP_BASE_URL=https://joplin.example.com
      - DB_CLIENT=pg
      - POSTGRES_PASSWORD=changeme
      - POSTGRES_DATABASE=joplin
      - POSTGRES_USER=joplin
      - POSTGRES_PORT=5432
      - POSTGRES_HOST=db
    depends_on:
      - db
    restart: unless-stopped
  db:
    image: postgres:15
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    environment:
      - POSTGRES_PASSWORD=changeme
      - POSTGRES_USER=joplin
      - POSTGRES_DB=joplin
    restart: unless-stopped

Web Clipper API

# Enable web clipper service in Joplin settings
# Default port: 41184

# Create a note via API
curl -X POST http://localhost:41184/notes \
  -H "Content-Type: application/json" \
  -d '{"title":"API Note","body":"Content here"}' \
  --data-urlencode "token=YOUR_TOKEN"

# Search notes
curl "http://localhost:41184/search?query=keyword&token=YOUR_TOKEN"

# List notebooks
curl "http://localhost:41184/folders?token=YOUR_TOKEN"

Plugins

PluginDescription
Note TabsTabbed note navigation
KanbanKanban board for tasks
TemplatesNote templates support
BackupAutomated backups
Quick LinksFast note linking
FavoritesPin favorite notes

Troubleshooting

IssueSolution
Sync conflictOpen conflicting notes; manually merge changes
Notes not appearing after syncWait for full sync; check sync target configuration
Encryption errorsVerify master password; re-enable E2EE if needed
Slow search with many notesRebuild search index: Tools → Note list → Rebuild
Web clipper not connectingCheck port 41184 is open; enable clipper in settings
Import failing from EvernoteEnsure ENEX file is valid; try smaller batches
Large attachments not syncingCheck sync target storage limits
CLI not finding notesRun joplin sync first to populate local database