Joplin vs Logseq
Detailed comparison of features, pros, cons, and usage
Joplin is a more traditional note-taking app with robust synchronization and encryption, while Logseq is a privacy-focused, local-first outliner that emphasizes networked thought, with Joplin offering better cross-platform support and Logseq providing a more flexible, graph-based structure for organizing information.
Joplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS.
A privacy-first, open-source platform for knowledge management and collaboration. Download link: http://github.com/logseq/logseq/releases. roadmap: http://trello.com/b/8txSM12G/roadmap
Joplin Pros and Cons
Pros
- Open-source and cross-platform note-taking application
- Supports Markdown formatting and rich text editing
- Offers end-to-end encryption for secure note storage
- Provides synchronization across multiple devices and platforms
Cons
- Learning curve for users unfamiliar with Markdown syntax
- Limited collaboration features compared to some proprietary alternatives
- Sync conflicts can occasionally occur when using multiple devices
- Mobile apps may have fewer features compared to desktop versions
Logseq Pros and Cons
Pros
- Open-source and privacy-focused knowledge management tool
- Supports both Markdown and Org-mode syntax
- Offers local-first storage and offline functionality
- Provides a graph view for visualizing connections between notes
Cons
- Steeper learning curve compared to some other note-taking apps
- Limited mobile support (currently in beta)
- Fewer integrations with third-party services compared to some competitors
- May require additional setup for cloud sync and collaboration features
Joplin Code Examples
Note Creation and Manipulation
This snippet demonstrates how to create a new note and set its properties using the Joplin API:
const joplin = require('api');
async function createNote() {
let newNote = await joplin.data.post(['notes'], null, {
title: 'My New Note',
body: 'This is the content of my new note.',
parent_id: 'your_notebook_id_here'
});
console.log('New note created with ID:', newNote.id);
}
Plugin Development
Here's an example of how to create a simple Joplin plugin that adds a custom command:
import joplin from 'api';
joplin.plugins.register({
onStart: async function() {
await joplin.commands.register({
name: 'myCustomCommand',
label: 'My Custom Command',
execute: async () => {
await joplin.commands.execute('showModalMessage', 'Hello from my plugin!');
}
});
}
});
Logseq Code Examples
Graph Query
This snippet demonstrates how to perform a graph query in Logseq, which is a core feature for retrieving and filtering data:
(defn query-blocks
[query-string]
(let [query (parse-query query-string)
blocks (db/get-all-blocks)]
(->> blocks
(filter #(match-block? % query))
(map #(assoc % :block/page (:db/id (:block/page %))))
(sort-by :block/created-at))))
Markdown Parsing
Logseq uses Markdown for content creation. Here's a snippet showcasing the parsing of Markdown content:
(defn parse-markdown
[content]
(-> content
(string/replace #"(?m)^#\s+(.*?)\s*$" "<h1>$1</h1>")
(string/replace #"(?m)^##\s+(.*?)\s*$" "<h2>$1</h2>")
(string/replace #"(?m)^###\s+(.*?)\s*$" "<h3>$1</h3>")
(string/replace #"\*\*(.*?)\*\*" "<strong>$1</strong>")
(string/replace #"\*(.*?)\*" "<em>$1</em>")))
Plugin System
Logseq supports a plugin system for extending functionality. Here's a snippet demonstrating how to register a new plugin:
(defn register-plugin
[plugin-name plugin-fn]
(swap! plugins assoc plugin-name plugin-fn)
(println "Plugin registered:" plugin-name))
(defn run-plugin
[plugin-name & args]
(if-let [plugin-fn (get @plugins plugin-name)]
(apply plugin-fn args)
(println "Plugin not found:" plugin-name)))
Joplin Quick Start
Installation
-
Install Node.js (version 12 or later) on your system.
-
Open a terminal and run the following command to install Joplin:
npm install -g joplin
-
After installation, start Joplin by running:
joplin
Basic Usage
Creating a Note
-
In the Joplin terminal interface, press
n
to create a new note. -
Enter a title for your note and press Enter.
-
Write your note content using Markdown syntax.
-
Press
Ctrl+S
to save the note.
Example Note
Here's a simple example of a note in Joplin:
This is a **bold** statement.
- Item 1
- Item 2
- Item 3
[Visit Joplin's website](https://joplinapp.org)
Synchronization
To sync your notes across devices:
-
Press
:config
to open the configuration menu. -
Set up a sync target (e.g., Dropbox, OneDrive, or WebDAV).
-
Press
Ctrl+S
to save the configuration. -
Use the
:sync
command to synchronize your notes.
For more detailed information and advanced features, refer to the official Joplin documentation.
Logseq Quick Start
Installation
- Visit the Logseq releases page on GitHub.
- Download the appropriate version for your operating system (Windows, macOS, or Linux).
- Install the application:
- For Windows: Run the
.exe
installer - For macOS: Drag the
.dmg
file to your Applications folder - For Linux: Use the
.AppImage
file or install via your package manager
- For Windows: Run the
Basic Usage
Creating Your First Graph
- Open Logseq after installation.
- Click on "Create a new graph" and choose a location on your computer to store your notes.
- Start writing in the main editor. Logseq uses Markdown syntax for formatting.
Adding Pages and Links
- To create a new page, simply type
[[Page Name]]
anywhere in your notes. - To link to an existing page, use the same
[[]]
syntax and start typing the page name. Logseq will show autocomplete suggestions.
Using Daily Notes
Logseq automatically creates a daily note for you. To access it:
- Click on the calendar icon in the left sidebar.
- Select today's date or navigate to a specific date.
- Start writing your daily entries.
Example Usage
Here's a simple example of how you might use Logseq for note-taking:
- [[Project X]] kickoff meeting
- Attendees: [[John]], [[Sarah]], [[Mike]]
- Action items:
- [ ] John to prepare project timeline
- [ ] Sarah to contact potential clients
- [ ] Mike to set up development environment
## Next Steps
- Schedule follow-up meeting for next week
- Review [[Project Goals]]
#meeting #projectx
This example demonstrates creating links to other pages, using task checkboxes, and adding tags to your notes.
Top Related Projects
Think fearlessly with end-to-end encrypted notes and files. For issues, visit https://standardnotes.com/forum or https://standardnotes.com/help.
Pros of Standard Notes
- Strong focus on privacy and end-to-end encryption
- Clean, minimalist interface for distraction-free note-taking
- Cross-platform synchronization with web, desktop, and mobile apps
Cons of Standard Notes
- Limited free features compared to Joplin and LogSeq
- Less flexible in terms of note organization and linking
- Fewer integrations with third-party tools and services
Code Comparison
Standard Notes (TypeScript):
export function encryptNoteContent(content: string, key: string): string {
const encrypted = CryptoJS.AES.encrypt(content, key);
return encrypted.toString();
}
Joplin (JavaScript):
async function encryptNoteContent(content, masterKey) {
const encryptedContent = await shim.sjclModule.encrypt(masterKey, content);
return encryptedContent;
}
LogSeq (ClojureScript):
(defn encrypt-content [content key]
(let [encrypted (-> content
(encrypt-string key)
(base64-encode))]
encrypted))
While all three projects focus on note-taking and personal knowledge management, they have different approaches to encryption and data handling. Standard Notes emphasizes simplicity and strong encryption, Joplin offers more features and flexibility, and LogSeq provides a unique outliner-based approach with local-first philosophy.
The Markdown-based note-taking app that doesn't suck.
Pros of Notable
- Clean and intuitive user interface
- Supports attachments and multi-note editing
- Faster performance for large numbers of notes
Cons of Notable
- Lacks mobile apps and sync functionality
- Limited plugin ecosystem compared to Joplin and LogSeq
- Less active development and community support
Code Comparison
Notable (JavaScript):
import * as React from 'react';
import {render} from 'react-dom';
import App from './components/app';
render(<App />, document.getElementById('root'));
Joplin (TypeScript):
import { App } from './app';
import { setupGlobalShortcuts } from './globalShortcuts';
import { initializePluginService } from './services/plugins/PluginService';
const app = new App();
app.start();
setupGlobalShortcuts(app);
initializePluginService(app);
LogSeq (ClojureScript):
(ns frontend.core
(:require [frontend.handler.route :as route]
[frontend.state :as state]
[frontend.ui :as ui]))
(defn ^:export init []
(route/start!)
(state/restore-state!)
(ui/render!))
Notable focuses on simplicity and performance, while Joplin and LogSeq offer more advanced features and extensibility. Joplin provides better cross-platform support and synchronization options. LogSeq stands out with its graph-based knowledge management approach and bi-directional linking. The code snippets highlight the different technologies used: Notable uses React, Joplin employs TypeScript, and LogSeq is built with ClojureScript.
A personal knowledge management and sharing system for VSCode
Pros of Foam
- Lightweight and flexible, integrating seamlessly with VS Code
- Supports local storage and version control with Git
- Highly customizable with VS Code extensions
Cons of Foam
- Less feature-rich compared to Joplin and LogSeq
- Steeper learning curve for non-technical users
- Limited mobile support
Code Comparison
Foam (using VS Code API):
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
// Foam-specific activation code
}
Joplin (using Electron):
const { app, BrowserWindow } = require('electron');
function createWindow() {
// Joplin-specific window creation
}
LogSeq (using ClojureScript):
(ns logseq.core
(:require [reagent.core :as r]))
(defn main []
;; LogSeq-specific main function
)
Foam leverages VS Code's ecosystem, making it highly extensible but potentially more complex for non-developers. Joplin offers a more traditional note-taking experience with cross-platform support, while LogSeq provides a powerful knowledge graph and outlining capabilities. The choice between these tools depends on the user's specific needs, technical proficiency, and preferred workflow.
A plain text note-taking assistant
Pros of zk
- Lightweight and focused on plain text Zettelkasten note-taking
- Command-line interface for efficient note management
- Supports flexible note linking and tagging
Cons of zk
- Limited graphical user interface compared to Joplin and Logseq
- Fewer built-in features for rich media and document formatting
- Steeper learning curve for users unfamiliar with command-line tools
Code Comparison
zk (Go):
func (n *Note) Content() (string, error) {
content, err := os.ReadFile(n.Path)
return string(content), err
}
Joplin (JavaScript):
async function noteContent(noteId) {
const note = await Note.load(noteId);
return note.body;
}
Logseq (ClojureScript):
(defn get-block-content [block-id]
(when-let [block (db/entity [:block/uuid block-id])]
(:block/content block)))
These code snippets demonstrate basic note content retrieval in each project, highlighting their different programming languages and approaches to data access.
Athens is no longer maintainted. Athens was an open-source, collaborative knowledge graph, backed by YC W21
Pros of Athens
- Built with Clojure/ClojureScript, offering a unique and powerful functional programming approach
- Focuses on networked thought and bidirectional linking, similar to Roam Research
- Open-source and self-hostable, providing more control over data
Cons of Athens
- Less mature and feature-rich compared to Joplin and LogSeq
- Smaller community and ecosystem, potentially leading to slower development and fewer plugins
- Steeper learning curve due to its unique approach and Clojure-based architecture
Code Comparison
Athens (ClojureScript):
(defn create-page [title]
(let [new-page {:node/title title
:block/uid (gen-block-uid)}]
(d/transact! conn [new-page])))
Joplin (JavaScript):
async function createNote(title) {
const note = await Note.save({
title: title,
body: '',
parent_id: app.selectedFolderId(),
});
return note;
}
LogSeq (ClojureScript):
(defn create-page! [repo page-name]
(let [page (db/create-page! repo page-name)]
(state/pub-event! [:page/create page])
page))
All three projects use different languages and approaches, reflecting their unique architectures and design philosophies. Athens and LogSeq both use ClojureScript, while Joplin is built with JavaScript.