CLI tool
xournalpp/xournalpp avatar
xournalpp/xournalpp

Xournal++: Handwriting Notes and PDF Annotation on Linux, macOS, and Windows

Xournal++ is a handwriting notetaking software with PDF annotation support. Written in C++ with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Windows 10. Supports pen input from devices such as Wacom Tablets.

15,440 stars1,136 forksC++GPL-2.0

At a glance

What is it?
Xournal++ is a handwriting note-taking application written in C++ with GTK3 that supports pressure-sensitive stylus input from devices like Wacom and Huion tablets. It annotates PDFs, exports to SVG and PDF, and includes LaTeX equation support. Version 1.3.8 was released on 2026-09-26.
Who is it for?
Xournal++ is the right choice for users with a stylus or tablet who need handwriting software with deep PDF annotation on Linux, macOS, or Windows. It is not appropriate for users who need cross-device cloud sync without a separate file sync tool, or who want a tablet-native mobile app without managing a distinct codebase.
Can I use it commercially?
Yes, with conditions. GPL-2.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 4 days ago.
What is it written in?
Mainly C++, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 27, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

Handwriting Software Built for Stylus and Tablet Input

Xournal++ (pronounced /ˌzɚnl̟ˌplʌsˈplʌs/) is a handwriting note-taking application written in C++ with GTK3. It targets users who write by hand on a tablet rather than typing, and it supports pressure-sensitive input from Wacom, Huion, XP Pen, and similar devices. The application runs on GNU/Linux, Windows 10, macOS, and Chromium OS.

The core writing surface supports multiple paper backgrounds: blank, lined, ruled, and others selectable from the toolbar. Drawing tools include pen and highlighter with configurable stroke styles (solid, dotted, and more). Shape drawing covers lines, arrows, circles, rectangles, and splines, with fill, resizing, rotation, and grid snapping for precise alignment. A set-square and compass tool supports measurements and drawing straight lines, circular arcs, and radii.

Input stabilization smooths strokes as you write, which compensates for hand tremor or a stylus with limited hardware smoothing. Each stylus and mouse button can be mapped to a different tool or color. The toolbar is customizable and supports multiple configurations, for example separate layouts for portrait and landscape orientation.

Audio recording and playback alongside handwritten notes is listed as a feature in the README. This allows recording a lecture while taking notes and then playing back the audio while reviewing the page.

PDF Annotation: Text Selection, Highlighting, and Link Following

Annotating PDFs is a central use case. Open a PDF as a background layer, then add handwritten annotations on top. The annotation goes further than simple overlay: you can select text directly from the background PDF, copy it, highlight it, underline it, or strike it through. Links embedded in the PDF remain clickable, so a document with a table of contents or external hyperlinks stays navigable while you annotate it.

Export works in multiple formats: SVG, PNG, and PDF, from both the graphical interface and the command line. The command-line export path matters for automated workflows, such as generating an annotated PDF from a script without opening the GUI.

The sidebar contains page previews with advanced sorting, PDF bookmarks from the original document, and layers. Layers can be individually hidden or locked, which is important for keeping annotation layers separate from the original content when you need to print or share a clean version of the base document. Multiple page backgrounds are easily selectable from the toolbar.

Installing Xournal++ on Debian, Ubuntu, Fedora, and openSUSE

Official release binaries are available for Debian, Ubuntu, macOS, and Windows from the GitHub releases page. For GNU/Linux distributions not explicitly covered, an AppImage is provided that works on any distribution released around or after Ubuntu 22.04.

On Debian bookworm or Debian sid, the package is in the official repositories:

sh
sudo apt install xournalpp

On Ubuntu 22.04 Jammy Jellyfish and later Ubuntu-based distributions, the same command applies:

sh
sudo apt install xournalpp

For the latest stable version on Ubuntu, the unofficial stable PPA is maintained separately:

sh
sudo add-apt-repository ppa:apandada1/xournalpp-stable
sudo apt update
sudo apt install xournalpp

An unstable nightly PPA for Ubuntu is also available from the Xournal++ team:

sh
sudo add-apt-repository ppa:andreasbutti/xournalpp-master
sudo apt update
sudo apt install xournalpp

On Fedora, install from the main repository:

sh
sudo dnf install xournalpp

On openSUSE Tumbleweed:

sh
sudo zypper in xournalpp

The README cautions that official Debian and Ubuntu binaries are specific to their named distribution version. A binary named Ubuntu-bionic only works on Ubuntu 18.04. If your exact distribution version does not match an available binary, use the PPA, Flatpak, or AppImage instead.

LaTeX Equation Support and Lua Plugin System

The LaTeX integration allows inserting rendered equations directly into notes. It requires a working LaTeX installation on the system. The editor provides a resizable syntax-highlighted window and a customizable template for the LaTeX preamble. This is directly useful for mathematics and physics courses where equations are a core part of the notes rather than an occasional addition.

Plugins extend Xournal++ using Lua scripting. The repository includes a plugins/ directory, and the user guide at xournalpp.github.io/guide/overview/ covers plugin development in detail. The README does not document the plugin API inline.

Custom color palettes use the .gpl format, which is the GIMP palette format. This is readable by other graphics tools, which makes it practical to define a color set once and use it across both Xournal++ and image editing software. Page template definitions allow setting up default paper types and page layouts that apply automatically to new pages.

Bug reporting, auto-save, and auto-backup tools are listed as features. The auto-save interval and backup settings reduce the risk of losing notes from an unexpected crash, which is a relevant concern for handwriting software where the input cannot be easily retyped.

How Xournal++ Differs from the Original Xournal

Xournal++ is not an independent project; it continues from the original Xournal codebase. The README states that the stroke recognizer and other parts are based on Xournal, which is available on SourceForge. The original Xournal was written in C with GTK2. Xournal++ is a C++ rewrite using GTK3, bringing it to a supported toolkit and enabling features that the older GTK2 base could not easily support, including layers, audio recording, and Lua plugins.

The native file format for Xournal++ is .xopp. The README does not document whether .xopp files are forward- or backward-compatible with the original .xoj format from Xournal. Users migrating from the original Xournal should verify file compatibility before relying on both applications interchangeably.

Translations for Xournal++ are managed through Crowdin. The README lists over 20 supported languages and invites translators to contribute. This is a practical maintenance consideration: a contributor who wants to add a language or improve an existing translation can do so through Crowdin without needing to modify the C++ source.

Where Xournal++ Is Not the Right Choice

Xournal++ is a desktop application; it has no built-in synchronization service. Notes stored as .xopp files on a local disk do not automatically appear on another device. Cross-device access requires configuring a file sync tool (such as Syncthing or a cloud storage provider) to replicate the data directory. This is a real gap for users accustomed to applications where sync is built in.

A separate Xournal++ Mobile project exists for Android and other handheld platforms, and the README references a mobile and web app section. It is a distinct codebase, not the same application running on a phone.

LaTeX support requires a working LaTeX installation, which is a heavy dependency for users who want only equation rendering. Without LaTeX on the system, that feature fails. For users whose only need is rendering math, a lighter note-taking application with built-in MathML or a web-based LaTeX renderer avoids the full LaTeX stack.

Official distribution packages on some Linux distributions may lag behind the current release. For time-sensitive features or bug fixes in a specific release, the PPA or AppImage is more reliable than waiting for the distribution's packaging cycle.

Release Cadence and GPL-2.0 Licence

The current stable release is v1.3.8, published on 2026-09-26. The previous stable release, v1.3.7, was published on 2026-08-09. The last push to the repository was on 2026-09-25. The project also maintains an automated nightly release at the nightly tag on GitHub, which carries the latest features and bug fixes but is explicitly described as unstable.

The source code is licensed under the GPL-2.0. Any derivative work distributed as a compiled binary must make its source code available under the same licence. For organizations distributing a modified Xournal++ binary internally or externally, this is a copyleft obligation that requires source code availability. GPL-2.0 contrasts with the more permissive Apache-2.0 or MIT licences that do not carry this requirement.

Editorial conclusion

Xournal++ is the right choice for users with a stylus or tablet who need handwriting software with deep PDF annotation on Linux, macOS, or Windows. It is not appropriate for users who need cross-device cloud sync without a separate file sync tool, or who want a tablet-native mobile app without managing a distinct codebase. Version 1.3.8 is the current stable release; Ubuntu users should use the stable PPA at ppa:apandada1/xournalpp-stable for the latest build rather than waiting for distribution packages to update.

Frequently asked questions

What is Xournal++ used for?

Xournal++ is used for taking handwritten notes on a tablet with a stylus and for annotating PDFs. It supports pressure-sensitive input from Wacom, Huion, and XP Pen devices, and runs on Linux, macOS, and Windows. Notes are saved in the native .xopp format and can be exported to SVG, PNG, or PDF.

How does Xournal++ differ from the original Xournal?

Xournal++ is a C++ rewrite of the original Xournal, which was written in C with GTK2. The README notes that the stroke recognizer and other parts are based on the original Xournal code from SourceForge. Xournal++ uses GTK3 and adds features including layers, audio recording, and Lua plugins.

Does Xournal++ support LaTeX for writing equations?

Yes. Xournal++ includes a LaTeX tool for inserting rendered equations into notes. It requires a working LaTeX installation on your system and provides a resizable editor with syntax highlighting and a customizable template for the LaTeX preamble.

Official sources

  1. License: GPL-2.0
  2. Project website
  3. README
  4. Releases
  5. xournalpp/xournalpp on GitHub
For maintainers

Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/xournalpp-xournalpp.svg)](https://hysenlabs.com/projects/xournalpp-xournalpp)
Community notes

Community notes