An open source note taking and to-do application with synchronisation capabilities.

Joplin Web Clipper

The Web Clipper is a browser extension that allows you to save web pages and screenshots from your browser. To start using it, open the Joplin desktop application, go to the Web Clipper Options and follow the instructions.

Troubleshooting the web clipper service

The web clipper extension and the Joplin application communicates via a service, which is started by the Joplin desktop app.

However certain things can interfer with this service and prevent it from being accessible or from starting. If something does not work, check the following:

If none of this work, please report it on the forum or GitHub issue tracker

Debugging the extension

In Chrome

To provide as much information as possible when reporting an issue, you may provide the log from the various Chrome console.

To do so, first enable developer mode in chrome://extensions/

In Firefox

Also press F12 to open the regular Firefox console (some messages from the Joplin extension can go there too).

Now use the extension as normal and replicate the bug you're having.

Copy and paste the content of both the debugging window and the Firefox console, and post it to the forum.

Using the Web Clipper service

The Web Clipper service can be used to create notes from any other application. It exposes a REST API with a number of methods to list folders and to create notes or attach images.

In order to use it, you'll first need to find on which port the service is running. To do so, open the Web Clipper Option in Joplin and if the service is running it should tell you on which port. Normally it runs on port 41184. If you want to find it programmatically, you may follow this kind of algorithm:

let port = null;
for (let portToTest = 41184; portToTest <= 41194; portToTest++) {
    const result = pingPort(portToTest); // Call GET /ping
    if (result == 'JoplinClipperServer') {
        port = portToTest; // Found the port

The following methods are available:

GET /ping

Tells whether the service is active or not. It should return "JoplinClipperServer" if it works.

Example: curl

GET /folders

Returns the list of notebooks (called "folders" internally) as a tree. The sub-notebooks of a notebook, if any, are under the children key.

Example: curl

POST /notes

Creates a new note. You can either specify the note body as Markdown by setting the body parameter, or in HTML by setting the body_html. All parameter are optional.


Key Description
title Note title
body Note body, in Markdown
body_html Note body, in HTML format
source_url The URL the note comes from
author The note author
parent_id The notebook (ID) to move the note to
base_url If body_html is provided and contains relative URLs, provide the base_url parameter too so that all the URLs can be converted to absolute ones. The base URL is basically where the HTML was fetched from, minus the query (everything after the '?'). For example if the original page was https://stackoverflow.com/search?q=%5Bjava%5D+test, the base URL is https://stackoverflow.com/search.
image_data_url An image to attach to the note, in Data URL format.
crop_rect If an image is provided, you can also specify an optional rectangle that will be used to crop the image. In format { x: x, y: y, width: width, height: height }


curl --data '{ "title": "My note", "body": "Some note in **Markdown**"}'

curl --data '{ "title": "My note", "body_html": "Some note in <b>HTML</b>"}'

curl --data '{ "title": "Image test", "body": "Here is Joplin icon:", "image_data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUeNoAyAA3/wFwtO3K6gUB/vz2+Prw9fj/+/r+/wBZKAAExOgF4/MC9ff+MRH6Ui4E+/0Bqc/zutj6AgT+/Pz7+vv7++nu82c4DlMqCvLs8goA/gL8/fz09fb59vXa6vzZ6vjT5fbn6voD/fwC8vX4UiT9Zi//APHyAP8ACgUBAPv5APz7BPj2+DIaC2o3E+3o6ywaC5fT6gD6/QD9/QEVf9kD+/dcLQgJA/7v8vqfwOf18wA1IAIEVycAyt//v9XvAPv7APz8LhoIAPz9Ri4OAgwARgx4W/6fVeEAAAAASUVORK5CYII="}'