Markdown links not working without https://?

Pedantically speaking, I think this the behaviour is acceptable. There’s not enough information by itself to distinguish between relative or a hostname.

A link contains link text (the visible text), a link destination (the URI that is the link destination)

example.com is not a valid URI by itself, even though if you type example.com by itself it’ll get turned into a link. That’s convention not specification though, since pineapple.belongson.pizza is also a valid hostname (well, it was until I let the domain expire) but doesn’t get auto-linked.

You can use:

  • rooted URI
    [rooted](/t/384591)
    rooted
  • relative URI (with or without ./)
    :information_source: these are valid markdown, but our parser forbids it
    [relative](../../386082)
    relative
    [relative](./386082)
    relative
    [relative](386082)
    relative
  • absolute URI
    [absolute](https://www.example.com/foo.html)
    absolute
  • schemeless URI (similar to relative, but explicitly relative to only the scheme)
    [schemeless](//www.example.com/foo.html)
    schemeless

Arguably, this is the correct behaviour. Without any sort of anchoring at the front, it’s a path relative to the current location, same as [link](./example.com).

2 Likes