This repository provides a reverse-engineered file format spec for the reMarkable tablet's proprietary file format.
If you are not interested in developing your own parser or writer for the reMarkable file format, you probably should instead look at rmconvert
, my sister project aimed at building bi-directional conversion tooling for this file format. If you're looking to build tools yourself, read on.
Note: This file represents the current version of the reMarkable file format used on tablets with up-to-date firmware. If you are on an older (pre 3.0) version, you should instead look at the work done by others on the older formats.
The format spec in this repository is a single Kaitai Struct YAML-style file (rmv6.ksy). This file is a functional, nearly-complete specification of the reMarkable tablet's "v6" .rm
(formerly .lines
) file format, which was introduced with firmware version 3.0 at the end of 2022. The specification was reverse-engineered by me, Barry Van_Tassell, during my 6-week batch at the Recurse Center in the summer of 2023. I have done my best to follow Kaitai style norms, to include documentation, and to be clear about what is known, unknown, complete, and incomplete.
You'll first will want to check out the Kaitai Struct documentation and tooling, which will explain what stuff means and allow you to translate the spec into parsing code in a number of different languages.
Finally, it's worth pointing out that currently the specification only describes the format of the .rm
files used to store all the vector details of your drawings and scribbles. ReMarkable also includes several text files with these .rm
files, which are necessary but not described here. Since they're text-based though, you can open them up and read them yourself. The unofficial reMarkable wiki (now archived) also had an article describing their structure.
Your reMarkable tablet, believe it or not, is actually just a Linux computer. ReMarkable's creators have been kind enough to give us root-level access to the tablet's internals. You can read more about this on the unofficial wiki and the official reMarkable support page, but the TL;DR is:
- You can access your tablet via
ssh
. First connect your tablet to either your computer via USB or your local home network. Then in your tablet settings, tap on "Help," then "Copyrights and licenses." There you will find your tablet's local IP address and the root password. If the IP address is10.10.11.11
, you'd log in like:ssh [email protected]
and then enter the root password when prompted. - Files are stored in a flat structure in
/home/root/.local/share/remarkable/xochitl
. - Each notebook is stored as a collection of files and directories with the same UUID. Within the UUID-named directory, there will be a single
.rm
file for each page of the notebook, named with a different UUID. These.rm
files are the subject of this repository.
- Neither myself nor this work are associated with reMarkable in any way. I'm just some guy with a tablet who likes having control over his files.
- This work is released under the MIT License, which means you can essentially do whatever you want with it as long as you acknowledge my contribution and agree that it's not my fault if anything goes wrong.
- I am making no guarantees of the accuracy or fitness of this work. Mucking around with the internals of your tablet and its files comes with risks, and it is your responsibilty to manage those risks for yourself.
- If you find a bug or inaccuracy, please submit an issue to this repository, or even better, fork the repository and submit a pull request with a fix.
These links are to previous work I have referenced and taken inspiration from. For the most part, they target obsolete versions of the reMarkable file format.
original format documentation (2017-2019)
Kaitai struct for parsing .rm v3 and v5 files (2020)
lines-are-rusty
, a Rust-based parser based on 2019 documentation
filesystem layout and format of the non-binary metadata files (wiki, archived :( )