jrnl can store your journal in a few different ways:
- a single text file (encrypted or otherwise)
- a folder structure organized by date containing unencrypted text files
- the DayOne Classic format
There is no need to specify what type of journal you'd like to use. Instead,
jrnl will automatically detect the journal type based on whether you're
referencing a file or a folder in your config file,
and if it's a folder, whether or not DayOne Classic content exists in it.
The single file format is the most flexible, as it can be encrypted.
To use it, enter any path that is a file or does not already exist. You can
use any extension.
jrnl will automatically create the file when you save
your first entry.
The folder journal format organizes your entries into subfolders for the year
and month and
.txt files for each day. If there are multiple entries in a day,
they all appear in the same
The directory tree structure is in this format:
YYYY/MM/DD.txt. For instance, if
you have an entry on May 5th, 2021 in a folder journal at
~/folderjournal, it will
be located in:
Creating a new folder journal can be done in two ways:
- Create a folder with the name of the journal before running
jrnl. Otherwise, when you run
jrnlfor the first time, it will assume that you are creating a single file journal instead, and it will create a file at that path.
- Create a new journal in your config_file and end the path with a
/(on a POSIX system like Linux or MacOSX) or a
\(on a Windows system). The folder will be created automatically if it doesn't exist.
Folder journals can't be encrypted.
Day One Classic
jrnl supports the original data format used by DayOne. It's similar to the folder
journal format, except it's identified by either of these characteristics:
- the folder has a
- the folder has a subfolder named
This is not to be confused with the DayOne 2.0 format, which is very different.
DayOne Classic journals can't be encrypted.
Changing your journal type
You can't simply modify a journal's configuration to change its type. Instead,
define a new journal as the type you'd like, and use
to export your old journal as
txt to an import command on your new journal.
For instance, if you have a
projects journal you would like to import into
new journal, you would run the following after setting up the configuration
jrnl projects --format txt | jrnl new --import