Preparing a Logseq graph for migration to Obsidian — what should I watch out for?

I’m considering transitioning from Logseq to Obsidian because my workflow can’t remain on hold much longer while waiting for future Logseq updates and because I want to stay with the Markdown file format. Before I decide on making the move, I’d like to see if one can prepare a Logseq graph properly and understand the best practices from people who have already done this.

If you’ve migrated from Logseq to Obsidian, how did you handle the following challenges?

Block references

Logseq block refs import as UUIDs in Obsidian.

  • Did you convert them to something more readable?

  • Did you restructure your notes to avoid block‑level linking?

Page & block properties

Page properties can become YAML frontmatter, but:

  • How did you deal with block‑level properties?

  • Did you flatten them, convert them, or restructure the blocks?

Queries

I’ve mostly used only simple querries so far, thus Obsidian’s new Base/Dataview‑style features seem promising, but:

  • How did you replace Logseq queries that rely on block‑level data?

  • Did you convert blocks into pages or subheadings (e.g., page#subheader) to make them queryable?

Tasks

  • Did you reformat Logseq tasks into Obsidian’s task syntax?

  • Any pitfalls when converting recurring tasks or task metadata?

Namespaces

  • How did Logseq namespaces behave after import?

  • Did you keep them, flatten them, or reorganize?

Outlining

  • Does Obsidian’s Outliner plugin correctly interpret Logseq’s indentation structure?

  • Any cleanup needed?

Anything else I should prepare for?

I’d love to hear about unexpected issues, cleanup steps, or tools/scripts that made the migration smoother.


This question builds on the discussion in What if I you had to move to Obsidian?, but I’m looking for concrete migration strategies.

2 Likes

I have recently moved to Obsidian for similar reasons and will be unlikely to return to LogSeq, which does make me a little sad, as I really enjoyed LogSeq for a number of years. It just failed to keep up with my changing needs.

I do not, however, have much positive advice for you. I was vastly unprepared and moved into Obsidian a little too suddenly. While I have no regrets now, the transition was somewhat rough.

I lost most of my block references, as I didn’t recognise what they were until too late. I still have my LogSeq database and will review it if I ever need those exact references, but I didn’t have too many to start with anyway.

Similarly, I didn’t really use block properties. But I can warn you about page properties. The formatting is ever so slightly different to YAML, so you will need to find a way to convert a lot of double colons to single colons. Similarly, any property that allows multiple values (say ‘tags’), will need to be reformatted. There is no default search and replace but there are plugins to assist with this. I did most of it manually, however, as I was using the opportunity to rework my page property settings. Obsidian Bases also helped with this. Once I understood how Bases can work, I used the sorting feature to identify pages with incorrect properties. Bases are also great for simple page searching, better in some respects than even Notion’s databases.

As for queries, again, I didn’t really have block properties to work with. Regardless, DataView queries are much easier than DataQuery, or whatever it was that LogSeq used. What blocks I did want to highlight, I think I ended up marking up with various task types. This works great with the Minimal style plugin which allows for ‘tasks’ to be assigned as to-dos, questions, answers, ‘hot’ tasks, and more, which can all be filtered for with Dataview. Tags are also simple to work with.

Continuing on with tasks, I think I had to incorporate Tasks to get the most out of Dataview, but I am still testing whether I need it. I don’t like the format of Tasks’ query results, whereas Dataview results were easier to customize (albeit with CSS again). YMMV.

In LogSeq, I had most of my tasks using the “LATER” format. There is an Obsidian plugin that will find all of these items for you. Again, there might be faster, automated ways of converting them, but I manually converted almost 100 of them to the markdown format as a way to find those I could delete before updating.

No advice on namespaces, sorry. Never quite understood the concept.

Outlining though? Oof. Prepare to fight the CSS. Maybe it’s just me and my tastes, but I found that I struggled with getting the outlining to look right. I think this is due to how LogSeq fudges the markdown with list dashes, and that I was never swapping to the document view that LogSeq has, whereas Obsidian has three different views to switch between. So to get the paragraph breaks to be slightly bigger than the line spacing across all three views, I ended up having to use list dashes at the start of my plain text paragraphs. I didn’t like the alternative of two line breaks; again, a matter of taste. Good excuse to learn CSS though.

Final comments about scripts, I did end up using a little bit of command line text replacement instead of installing a plugin. I use Linux now, so the command was just of the format:
find . -type f -exec sed -i 's/old-text/new-text/g' {} +
This helped with changing property names en masse, but I don’t have the know-how to really take full advantage of this function.

Anyhow, happy to try and answer any other queries you might have. I know there were more warnings than tips, but you probably want to hear about a negative experience to justify taking your time to get it as right as you can.

In my opinion, moving the graph is a wrong strategy. I switched to LogSeq from OneNote but didn’t copy all my notes. I link OneNote notes I need in Logseq. For specific projects, I copy all notes, manually. In the other cases I apply only the same template.

In summary, I use a new program for new projects and for those that are easy to migrate without relying on other tools that can complicate things quite a bit. It would be nice if it were possible to transfer everything without problems and without losing information but this is not the case. Obviously, the amount of notes and time you can dedicate to the operation guide the choice

Without being particularly familiar with Obsidian, here are my thoughts on namespaces and indentation, with additional dashes compared to plain Markdown.
Both should be easy to adapt using a Python script.
I don’t have any ideas on the other points yet. Although, given that development of the MD variant of LogSeq appears to have ground to a halt, considerations regarding migration are becoming more urgent. Switching to the DB version is not an option for me.

I too want to migrate to Obsidian and experimented a bit with it.

Even though both use markdown, there are some differences in the markdown itself, Logseq uses some weird additional proprietary markdown that obsidian does not have (e.g. numbered lists, collapsed state, admonition blocks …)

Another thing to watch out for is PDF comments, I don’t known how we could migrate them.

The whole thing gets even more complicated when you used plug-ins like awesome-links.

Maybe we should start a list of Logseq feature and differences and show ways how to migrate this. Or we could just work on a migrator script together on github. :thinking: