Skip to content

Your website is a text file.

Write a small .page file and publish it as static HTML, with forms built in. It goes on a micropage.sh subdomain, or your own domain on Pro. The file stays yours.

Start freeSee real .page files

Free: one site on a micropage.sh subdomain. Pro, $6/mo: your own domain, the CLI and MCP server, a zip of the built site.

The file, and the site it makes

The first lines of lantern.travel's file (abridged) and the page they produce. Every site in the showcase links to its full source. This page is a file too.

[site]
title: Lantern
description: A simpler way to let people know you're safe while traveling
logo: <- lantern-logo.svg
colors:
  primary: #2563eb

[nav]
Home -> /
How it works -> /how-it-works
Contact -> /contact

[Home -> /]

/// section bg:info text:light align:center

col:
  h1: Check in once. Reduce worry for everyone.
  p: A simpler way to let people know you're safe while traveling. One app. Clear updates.
  btn-secondary: See how it works -> /how-it-works

col:
  img: height:640 <- lantern-welcome.png

One way to write each thing

.page is not Markdown. It's a small, closed grammar for the things a site needs and Markdown doesn't have: nav, sections, columns, buttons and forms. One element per line, no nested tags, no arbitrary CSS. The whole spec is 104 lines.

Nothing to invent

There is one spelling for each thing: -> is always a link, <- is always a file from your folder, col: is always a column. That keeps diffs clean and mistakes local. It's also why agents get it right: the vocabulary is closed, so the editor's AI tab and your own agent, through the MCP server, have nothing to invent.

One escape hatch

/// html is the escape hatch: raw HTML for embeds and the few things the grammar doesn't cover. Everything else stays in the vocabulary, so a file reads the same whoever wrote it.

What it's for

Landing pages, small multi-page sites and blogs. Posts are Markdown, published at /content with an RSS feed, so the page grammar can stay small. Not for app UIs, pixel-perfect design or design systems; use Framer, Webflow or a frontend stack for those.

What's built in

Forms

A form is a few lines in the file. Submissions land in the editor, so a landing page needs no backend. CSV export and an email digest on Pro.

Newsletter

Turn any form into a signup. Subscribers live in the editor. Sending broadcasts is on Pro.

Posts

Markdown files with front matter, published at /content with RSS, from the editor or the CLI. On Pro, posts can also go out to subscribers.

Publishing

Static HTML on Cloudflare Pages over HTTPS. On Pro, a first deploy takes about 3 minutes and updates go live in 2 or less; free builds wait in a queue a few minutes longer. Every build is numbered and can be rolled back.

On Pro, $6 a month or $49 a year

Your own domain

Point a subdomain like www at Micropage with one DNS record; HTTPS is set up and renewed for you. The bare domain redirects to www.

The CLI

Install with Homebrew or npm. The .page file lives in your repo and micropage publish deploys it. Pro+ adds deploy tokens, so GitHub Actions can publish.

Zip export

Download any build as plain HTML, CSS and fonts. It works from disk and on any host, so leaving is a download, not a migration.

MCP server

Connect Claude Code, Claude Desktop, Cursor or VS Code, and your agent creates, edits and publishes pages and posts the way the CLI does. Sending email and deleting projects are off by default.

What a published page loads

Static HTML and one first-party stylesheet trimmed to that site. Measured in October 2026, this site included.

One stylesheet, 8 to 12 KB

Bootstrap compiled and purged against that site's HTML, gzipped. Fonts are self-hosted. Dark mode follows the visitor's OS in CSS, with no theme script.

Almost no JavaScript

Small inline scripts for the mobile menu and nav dropdowns, only on sites that have them. No framework, no Bootstrap JS, no error reporting.

Nothing third-party

Unless you add it yourself in a /// html block; this site adds its own analytics that way. The one exception: Cloudflare Turnstile on pages with a form, to keep spam out.

Sites running on it

Each one links to the file it was published from.

lantern.travel

A simpler way to let people know you're safe while traveling. One file.

lantern.travel homepage

maproll.io

Choropleth maps from a URL. Eleven pages across eight .page files, plus a weekly blog.

maproll.io homepage

micropage.sh

This site: home, pricing, tour, FAQ and showcase from one file. The blog is Markdown posts.

micropage.sh homepage

Pricing

Carrd is cheaper. Framer is prettier. Micropage is the page you still own as a file.

The .page file is plain text on every plan. On Pro the built site is a zip download too, so you can leave whenever you want.

Free

See if the format clicks.

$0

1 project · web editor with monthly AI credits · 100 form submissions

On a micropage.sh subdomain, with a badge. No CLI, custom domain or zip.

Pro

Launch a real site.

$6/mo · $49/year

Your domain, the CLI, MCP server, zip export, newsletter sending, CSV, no badge

5 projects · 1,000 submissions/month

Pro+

Operate it.

$12/mo · $96/year

Webhooks, CI deploy tokens, instant email, 20 projects

10,000 submissions/month

Why this exists

I'm visually impaired, and most website builders assume you can drag blocks around a visual canvas. I can't do that reliably, but I can work in text and with a keyboard all day. So I built Micropage: one small .page file per site, published as static HTML. I use it for every site I run.

Cosmin Stefaniga

Start with one file

Free for one site on a micropage.sh subdomain, no card. If the format doesn't click, you stop, and the .page file is still yours.

Start freeRead the docs