Reimagining user experience of links in Markdown

5 min read Original article ↗

Popular applications such as Notion, Slack and Trello support Markdown. While Markdown is a very ergonomic way to write, I believe the writing experience still leaves much to be desired, particularly in the aspects of editing.

What if we combined the ergonomics of Markdown and the friendly UI elements found in Google Doc, and we applied that approach on links in Markdown? Well, here is what I have come up with:

Enter a link in Zuunote shows 3 buttons of control, edit, copy and remove.

You can jump to here to see how those buttons work, or read on to learn about the process.

Permalink to heading How to create a link in Markdown

Let's get this out of the way first. This is how a link looks like in Markdown: [Contact us](https://example.com/contact-us`)`

There are two parts to it:

  1. Brackets []: The text of your link goes in there, in this case Contact us. And,
  2. Parentheses (): The URL goes in there, in this case https://example.com/contact-us.

The brackets [] part comes first, followed by the parentheses () part.

Why brackets and parentheses shine

Permalink to heading Why brackets and parentheses shine

On first impression, the brackets and parentheses can be a turn off to a lot of people. But I believe that once you get past that, you are going to experience a flow in your writing like you never did before.

For example, this is how you would create a link in Google Doc:

Click hyperlink icon in toolbar to enter link text and url in google doc

Now, compared to Markdown editors such as Typora:

Create Markdown link using brackets and parentheses in Typora

Confluence can do that too:

Create Markdown link using brackets and parentheses in Confluence

And one positive side effect from that is: editing becomes precise too.

I mean, for example, you will run into troubles in Google Doc and Confluence if you want to edit in the beginning of a link's text:

Entering characters at the start of a link's text wouldn't make them part of the linked text in Google Doc
Google Doc

even though you can edit it anywhere in between:

No problem editing characters in between start and end of a link's text in Google Doc

That's a little confusing if not frustrating, right?

This is the fool-proof way to edit link's text in Google Doc:

Focus on link text to enter a pop up edit box

and in Confluence:

Fool proof way to edit link in Confluence via pop up
(Note: in Confluence, link creation and modification flows are different. See more)

and in Notion:

Fool proof way to edit link in Notion via pop up

Compared again with Markdown editors:

Precisely insert characters anywhere on a link's text
But notice the exploded long url and the inconvenience to copy and select. More on this below.

We can precisely edit the texts anywhere within brackets [] .

But I believe there are some UX issues which we will address next.

Permalink to heading UX issues of Markdown links

Markdown editors such as Typora that offers live-preview without split-pane offer an ergonomic way to create links. However, when it comes to editing them, it's not as ergonomic and pleasant as it's precise.

Focus cursor into a link in Typora causes a massive shift in your content due to expanding link URL that is very long

Notice the jarring shift in your content when you focus on a link with a super long URL.

Nota, a Markdown editor for Mac, solves it by initially showing an icon as a placeholder:

Nota shows a placeholer icon in the parentheses

But still doesn't avoid the content shift when cursor enters the parentheses:

Content shift in Nota when cursors enter a link parentheses

Additional to the content shift, copying and editing the long URL are not easy to everyone:

Tedious way to copy URL in Typora

Best of both worlds

Permalink to heading Best of both worlds

Writing purely in Markdown can be a tough pill to swallow for folks coming from, for example, Google Doc, because user experience is not as intuitive. Conversely, writing purely in intuitive editors such as Google Doc sacrifices the ergonomics and precision of Markdown.

How can we have the best of both worlds?

I'm building a Markdown editor called Zuunote. Its guiding principle is to meet everyone halfway - everyone who is using Google Docs and Microsoft Words, and everyone who is using Notion, Confluence, Typora, and Obsidian.

Here are the results of applying that principle on links.

Create links in Zuunote using Markdown syntax brackets and parentheses

Everything is just plain-texts. This is how writing in Markdown can be ergonomic and precise, both of which are an ingredient to get into the flow.

Enter a link in Zuunote shows 3 buttons of control, edit, copy and remove.

Here, I adopt the action buttons that you see in Google Docs and Notion, and enclose them with parentheses (). This means we are still enforcing Markdown syntax of links:

Once Markdown link syntax becomes invalid, whole thing is back to orignal text.

This approach not only avoids the jarring content shift, but most importantly it's functional and delightful to everyone.

Edit a link in Zuunote by clicking the edit icon button.

To edit URL, click the edit button. It will reveal an input field with the URL pre-filled. Since it's a vanilla HTML input field, you can use familiar keyboard shortcuts(or mouse clicks) to quickly select all, copy, or paste.

Notice that things still flow and act like plain-text but now with added niceties you see in places like Google Doc and Notion.

Copy a link URL in Zuunote by clicking the copy icon button.

Copy the URL with a click of a button, rather than carefully selecting its entirety with repetitive actions on keyboard or mouse.

Remove a link in Zuunote by clicking the remove icon button.

A click on the remove icon instantaneously removes all artifacts and behavior of a link in Markdown.

It seems to me that every text editor caters solely to a particular group of people. What if there's a text editor where all groups of people can equally enjoy? That's the goal of Zuunote. And I hope it shows here through the way it implements links. But I'm way in over my head. So please send me feedbacks at hello@zuunote.com if you want. Or just join the waitlist, again, if you want.

Thank you for your attention and time. Take care.