Joplin JEX File Format

File Hierarchy

This document will describe the JEX file format, which is one of the export formats supported by Joplin.

At a high-level, a JEX file is a tarball containing notes and attachments.

The notes are all placed at the top level of the tarball.

The attachments are placed under the “attachments” directory in the tarball.

Example

For example, this is what the file hierarchy may look like inside a JEX file:

.
├── 0e1fe57d81ff26afea38.md
├── 3edb302d6c6742df9e86b9c1c6ea3ec8.md
├── 8449599a40df4146952119dd78ac9da5.md
├── 9836727eda734191b4e281770565e494.md
├── 994f8d784b2b3fc2cd04.md
├── 9f132269d958068b11e0.md
├── ae08726c53434f59a3d6bd0544381a1e.md
├── d70facf23fba46e8a17202a7be3742c7.md
└── resources
    ├── 3edb302d6c6742df9e86b9c1c6ea3ec8.svg
    └── 8449599a40df4146952119dd78ac9da5.png

Resource Files

Each resource in a JEX file is represented as a single markdown file.

There are 16 resource types:

export enum ModelType {
    Note = 1,
    Folder = 2,
    Setting = 3,
    Resource = 4,
    Tag = 5,
    NoteTag = 6,
    Search = 7,
    Alarm = 8,
    MasterKey = 9,
    ItemChange = 10,
    NoteResource = 11,
    ResourceLocalState = 12,
    Revision = 13,
    Migration = 14,
    SmartFilter = 15,
    Command = 16,
}

(From the Joplin ModelType enum)

General Resource File Structure

Each resource in a JEX file is represented as a single markdown file.

The markdown file will have a body containing markdown (or other contents) followed by a newline followed by a number of key: value lines containing metadata for the resource.

Note

Here is an example of a serialized note within the JEX file:

My First Note

# My First Note

## References

- [My First Note](:/ae08726c53434f59a3d6bd0544381a1e)
- [My Second Note](:/d70facf23fba46e8a17202a7be3742c7)

id: ae08726c53434f59a3d6bd0544381a1e
parent_id: 9f132269d958068b11e0
created_time: 2021-10-02T16:38:20.381000+0000
updated_time: 2021-10-02T16:39:17.579000+0000
is_conflict: 0
latitude: 0.00000000
longitude: 0.00000000
altitude: 0.0000
author:
source_url:
is_todo: 0
todo_due: 0
todo_completed: 0
source: evernote
source_application: net.cozic.joplin-desktop
application_data:
order: 0
user_created_time: 2021-10-02T16:38:20.381000+0000
user_updated_time: 2021-10-02T16:38:20.381000+0000
encryption_cipher_text:
encryption_applied: 0
markup_language: 1
is_shared: 0
share_id:
conflict_original_id:
type_: 1

Note that the actual document you will see in the Joplin editor is this:

My First Note

# My First Note

## References

- [My First Note](:/ae08726c53434f59a3d6bd0544381a1e)
- [My Second Note](:/d70facf23fba46e8a17202a7be3742c7)

All other lines in the resource are metadata headers.

Also, note that the special link [My First Note](:/ae08726c53434f59a3d6bd0544381a1e) points to another note in the JEX file with the id ae08726c53434f59a3d6bd0544381a1e.

Folder

Here is an example of a serialized folder within the JEX file:

Folder One

id: 9f132269d958068b11e0
created_time: 2021-08-07T14:51:30.227Z
updated_time: 2021-08-07T14:51:30.227Z
user_created_time: 2021-08-07T14:51:30.227Z
user_updated_time: 2021-08-07T14:51:30.227Z
encryption_cipher_text:
encryption_applied: 0
parent_id:
is_shared: 0
share_id: