Skip to content
listlis

October 8, 2026

Move Logseq Markdown notes to an outliner, safely

The safe way to move Logseq notes into another outliner is a rehearsal, not a migration. Copy the graph folder, pick one active project, import that project’s pages into the new tool, and check what came across before you move anything else. Your original graph stays untouched the whole time, so the worst outcome is an afternoon spent learning what doesn’t transfer.

This guide walks that rehearsal step by step, with a checklist of what usually survives and what doesn’t. If you’re still deciding whether to leave at all, start with Leaving Logseq? A calm guide to your options or Logseq OG vs the database version. This page assumes you want to try a move and keep it reversible.

Step 1: copy the graph before you touch anything

A file-based Logseq graph is a folder on disk. Pages live as Markdown files, journals as one Markdown file per day. Copy the whole folder somewhere else and work only from the copy. Don’t open the copy in Logseq while you experiment; you want a frozen snapshot, not a second live graph.

If you’d rather have a cleaner set of files, Logseq can also export the graph from the three-dot menu under Export graph. The Standard Markdown option produces plain Markdown, and Logseq’s own docs note that block properties are left out of that format. There’s an OPML option too, which suits outliners that read it. Either way, you end up with files you can import without touching the original graph.

Step 2: choose one project, not the archive

Don’t import five years of journals. Pick one project you’ll actually work on this week: a client engagement, a book outline, a home renovation. Gather its pages, usually somewhere between five and thirty files.

One active project tells you more than a full archive import. You’ll use the new tool for real work, and its friction will show up in days. A full import mostly tells you how the importer handles your oldest formatting quirks, which is useful later and noise now.

Leave the journals behind for this trial. Daily notes are the hardest thing to judge in a new tool, because their value comes from accumulation and from Logseq’s linked references, and neither carries over in a weekend.

Step 3: know what survives the trip

Logseq writes every block as a Markdown bullet, so any outliner that reads nested bullets will rebuild the structure. The Logseq-specific parts are where things go missing. Here’s what to expect when the target tool reads plain Markdown:

Logseq featureWhat usually happens
Nested bulletsStructure carries over cleanly
Page titlesUsually taken from the filename or first heading
[[Page links]]Kept as literal text; no longer a live link
((block refs))Kept as an id string that points nowhere
TODO / DONE markersKept as text at the start of the line, not as task state
key:: value propertiesDropped by Standard Markdown export, or left as plain lines
{{query}} blocksKept as text; nothing runs them
Multi-line blocksDepends on the importer; check the first one by hand

The pattern: structure travels, meaning that Logseq computes doesn’t. If a page is mostly bullets and prose, it’ll land well. If it’s mostly queries and block references, it was a view over your graph, and you’ll need to rebuild the idea instead of moving the file.

Step 4: rehearse the import

Import the project’s files into the new tool, then spend ten minutes checking three things:

  1. Order and nesting. Open the deepest page and compare it against the original. Nesting errors show up at the third or fourth level.
  2. Tasks. Find every TODO and decide whether you’ll re-mark them as tasks or treat the old ones as reference.
  3. Links you relied on. Search for [[ in the imported text. Each hit is a link that’s now plain text. Most turn out not to matter. Fix the few that do.

If the check goes badly, delete the import and you’ve lost nothing. If it goes well, use the new tool for that project for a full week before importing anything else.

Doing the rehearsal in listlis

listlis is a keyboard-first outliner where everything is one tree, each node a title with an optional Markdown body. It imports Markdown and OPML directly, which makes it a reasonable place to run this rehearsal.

Open the command list with ? and choose import and export, or on a phone open the ☰ menu in the header and choose import and export. Then select the project’s .md files together. listlis treats each file as its own top-level node, titled by the file’s first heading or its filename. Bullets become nested child nodes, so Logseq’s block structure comes across intact. Lines that aren’t bullets, like page-level prose, go into that page’s Markdown body. By default the whole import lands under one new section, titled “Markdown import” when you pick several files (rename it in the Section name field). It sits apart from the rest of your tree, and one delete undoes it. Confirm your email first: until you do, an account holds 100 nodes and 1 MiB of text, which a 5-30 page project will pass. After that, a single import takes up to 2,000 nodes, plenty for one project and a good reason to bring the archive over in pieces later. You can import one OPML file instead if you exported that format. The import guide has the full table of what transfers.

Then work the checklist with the keyboard. Press / and search for TODO to find old task markers. On each one, press ! to make the node a real todo, then edit the title to remove the leftover TODO text. Completing a todo with c marks it done, along with everything under it, and the progress rolls up to its parent, so a finished branch reads as finished. Use Tab and Shift-Tab to fix any nesting that came across wrong, and o to add the next action you think of while you’re there.

Two honest limits. listlis has no block references and no query language, so ((refs)) and {{query}} blocks stay as text. If your Logseq workflow depends on those, the rehearsal will show it quickly, and that’s a good reason to stay on Logseq. And listlis keeps your tree on its server rather than in a local folder. If plain files on your own disk are the point, read Local-first or hosted outliner first. listlis exports the whole tree as Markdown or OPML from the same panel, so a trial isn’t a one-way door.

Step 5: decide after a week, not after the import

The import is the least informative part of the trial. What matters is whether you reached for the new tool on day four without thinking about it. At the end of the week, take one of three paths:

  • It stuck. Bring the next project over the same way. Keep the Logseq copy as a read-only archive; you may never need to migrate the journals at all.
  • It almost stuck. Write down the one thing you missed. If it’s queries or backlinks, that’s a real gap in a plain outliner. If it’s a habit, give it another week.
  • It didn’t stick. Delete the trial and go back to your graph, which never changed. You’ve learned what you actually depend on, and that’s useful too.

Moving notes feels high-stakes because your notes hold your thinking. The rehearsal lowers the stakes: one project, a copied graph, and a week of real use. If you want to run it somewhere fast and keyboard-driven, open listlis, import one project’s pages, and see if you’re still using it on Friday.

← All writing