Show HN: Lobster.js – Extended Markdown with layout blocks and footnotes
7 points
2 days ago
| 3 comments
| github.com
| HN
Hi HN!

I built lobster.js which is an extended Markdown parser that renders directly in the browser — no build tool, no framework, no configuration.

The entire setup is a single script tag:

  <script type="module">
    import { loadMarkdown } from "https://hacknock.github.io/lobsterjs/lobster.js";
    loadMarkdown("./content.md", document.getElementById("content"));
  </script>
It's particularly useful for GitHub Pages sites where you want Markdown-driven content without pulling in Jekyll or Hugo.

---

What makes it different from marked.js or markdown-it:

Standard parsers convert Markdown to HTML — that's it. lobster.js adds layout primitives to the Markdown syntax itself:

- :::warp id defines a named content block; [~id] places it inside a silent table cell. This is how you build multi-column layouts entirely in Markdown, without touching HTML. - :::details Title renders a native <details>/<summary> collapsible block. - :::header / :::footer define semantic page regions. - Silent tables (~ | ... |) create borderless layout grids. - Cell merging: horizontal (\|) and vertical (\---) spans. - Image sizing: ![alt](url =800x).

---

CSS-first design:

Every rendered element gets a predictable lbs-* class name (e.g. lbs-heading-1, lbs-table-silent). No default stylesheet is bundled — you bring your own CSS and have full control over appearance.

---

The showcase site is itself built with lobster.js. The sidebar is nav.md, and each page is a separate Markdown file loaded dynamically via ?page= query parameters — no JS router, no framework.

Markdown is the one format that humans and LLMs both write fluently. If you want a structured static site without a build pipeline, lobster.js lets that Markdown become a full web page — layout and all.

GitHub: https://github.com/Hacknock/lobsterjs Showcase: https://hacknock.github.io/lobsterjs-showcase/

ramon156
2 days ago
[-]
This is going to be my last comment about AI, but please HN, do something about this.

I can't be arsed to read this post since the very first sentence is AI generated. If you dont give a shit about your project, why should I...

reply
Kyome22
2 days ago
[-]
I am Japanese, and this is my first time posting on Hacker News. To be honest, I used generative AI to help me write the post because I wasn't familiar with the culture or how things work here, and I'm sorry if that was annoying. Does starting with "Hi HN!" make it sound like it's AI-generated?
reply
llagerlof
2 days ago
[-]
I liked your standard. For me, there is only one thing that really bothers me in Markdown and causes me trouble. It's not possible to have line breaks inside individual cells. This is the major flaw in Markdown.
reply
Kyome22
1 day ago
[-]
Pure Markdown often falls short when you need fine-grained control. As you mentioned, the inability to freely insert line breaks within table cells is one of those limitations. With lobster.js, you can achieve this by using wrap blocks.
reply
mlysk
1 day ago
[-]
Interesting - might become handy for get-colibri.com what is the upside of :::details over html version?
reply
Kyome22
19 hours ago
[-]
There are technical article posting sites that support extended Markdown syntax like ":::details," and this syntax is commonly adopted by existing Markdown parsers as well.

I personally don't want to write HTML within Markdown. It’s not very readable, and I believe it's better if users can write content without needing to know both Markdown and HTML.

While building a static website might require some technical expertise, the fact that content can be updated by anyone who can write Markdown—even those who aren't tech-savvy—is a significant advantage.

reply