Convert Outlines

First consider the following examples:

A. an nested bullet outline

  • Top level
    • second level
      • third level
      • third level

B. A markdown flat format

Top level

second level

third level

third level

In my experience so far, Obsidian seems to just work better with text that is a combination of markdown headers and regular paragraphs (b) than it does with bullet list outlines (a). For this reason it would be useful to have a plugin which can convert (a) into (b). This would be useful when exporting from Roam, Dynalist, Workflowy, etc.

The big question with such a plugin would be how many levels of headers to have before displaying text as plain text. In some cases I would want second level text to all be regular paragraphs, while in other cases I would want it to be the third level. And if there are more than 3 levels I would probably want to keep an outline format, but have the top level items converted to headers and outdent the outline below that.


That would be a very big time saver coming from Roam and others are I’m currently doing that same migration but manually. I wonder if there could be ways to make that semi-automatic, though it would require a pretty extensive algorithm probably or maybe add an option to mouse click where you tell, collapse this section flat and collapse this one with 2 header etc on selection

I support this. I currently copy the outline flat and then scroll through the file and add the headers. I think it can be automated. it needs the key user input on the level at witch to stop and consider the text a paragraph. In most cases, a level of 1 or 2 would work fine.

Could you elaborate on how the lists/bullets aren’t working for you? I support any plugin that provide power & flexibility to the users to control their data, but I’m curious what you don’t like about them?

Personally I love lists/indenting so I’m curious of possible limitations.

They’re slightly clunky now (fold arrow isn’t near the bullet icon, could use a bit more line spacing in render, could use a line reddit/outline style to visualize parents), but nothing that can’t be polished. I’d actually love a setting to set “tab” to auto ad “-” in order to be able to list easier.

I’ve also experimented with adding #### to all “-” indents and it makes them a header while retaining the indentation. Useful for linking/embedding a particular header(bullet) but while keeping the indent visualization in tact.

I tried it on a fairly deep list (12 levels, 18 bullets, 1,800 words) with long multi-sentence bullets and the link suggest of headers was super fast and the embed visualization was decent.

So having the option to auto add ### with each indent may be an interesting feature too.

Not everyone’s ideal method, but it’s an option.


The biggest problem with outlines is that Obsidian only supports linking to markdown headers, so if you want block-level granularity you need nested headers, not nested outlines. You mention this but say that you enter the headers in outline format. That is certainly a possibility, and might work better in a WYSIWYG editor, but right now I find it hard to work this way. And if you have headers anyway, I don’t think the outlines give you much added benefit if your outline is only a few levels deep. (I mentioned that outlines should be retained if they are deeper than this.)

1 Like

Ah I see. Yeah I guess nested/indented headers for me allow for some visual communication but they could have some visual polish to be more useful/friendly. Here’s an example of a list of indented headers I tested

I’m all for flexibility for the users so a convert to what you suggested would be a welcomed option, alongside setting up auto indenting/headers on indents, etc.

These methods are nice way to get some more granular embeds, but I personally don’t like viewing them as block level references as they don’t have UIDs.

1 Like

I had also been thinking about this.

Workflowy can export outlines as plain text, so was wondering of how to convert to markdown e.g.

Convert from:

  • l1
    • l2
      • l3
      • l3
      • l4

(couldn’t figure out how to stop auto conversion from " -" to html - but the workflowy format uses “-” and spacing to indicate indenting/list level

Convert to:

"# l1

"## l2

"- l3
"- l3
" - l4

(just using " to stop conversion to html formatting)

I am not much of a programmer but should be straightforward with some find/replace regex. Obviously will depend on what nesting you have - you might want l3 or l4 to be markdown headers.

I found this for dynalist:

1 Like

This bookmarklet is nice, but you have to add header tags in Dynalist before running it. For long lists this is a bit cumbersome. Hopefully someone who knows javascript could adapt this though…

1 Like

I think either way it is tricky - I have arbitrarily nested lists in workflowy.
So perhaps there could be some code (e.g. javascript) which based on user input would create nesting depending on user specified levels, (e.g. headings for L1-L3, bullets from L4). Or you have to tag bullets in some way, such as using headings in Dynalist, Bolding in workflowy or even use markdown headers (# ). Cumbersome yes…