01What it is
A reader opens a post and gets one column of about seventy characters in a book face, the article's own contents standing in the gutter beside it, and its facts in the gutter on the other side. They pick one of six palettes, in light or dark, and their choice is remembered on their own device.
The theme fetches nothing from anybody else. The six typefaces are in it, there is no analytics, no avatar service and no font host. Ghost itself is a different matter and section 03 measures it.
Everything visual is generated from the blog engine's stylesheet, the same sheet the demo renders with: an extractor runs the engine's own emitters and a static check compares bytes, so the theme cannot quietly drift away from the product it came from.
Book mode resets the article into two columns sized from the window, keeping the reader's place. Book typography, which indents and justifies and hyphenates, is a second switch and it ships off: those belong to print, and on a screen they are a preference rather than an improvement.
02Nothing of yours moves
This is the part that decides whether trying it is cheap, so it is worth being exact about. The theme adds no custom field, no content type and no table. Switch away and every post is still a post, in the same place, with the same content.
What it does use is what Ghost already has. The rail in the left gutter is the site's own structure: its navigation, its featured posts, its tags, and its authors when there is more than one. Featured is Ghost's own flag, set per post in the editor. Nine settings live in Ghost's design panel and nowhere else.
One thing is Ghost's rather than the engine's, on purpose. The comment thread is Ghost's own, with its sign-in, replies and moderation. Ghost draws it inside a frame this theme cannot reach into, so a reader meets the site's type and then Ghost's. That seam is real and it is the price of not shipping a second comment system.
03What it costs a reader
One long article, measured over the wire on a local Ghost with the browser's own timings, gzipped as served. The post's own pictures are not counted, because those are your content and not the theme.
| The theme, first visit | 129 KB | the HTML plus every file the theme asks for |
|---|---|---|
| Every visit after | 4.7 KB | only the HTML is fetched again |
| Fonts | 54.4 KB | four of the twenty-one faces that ship; a browser takes only the character ranges the page uses |
| CSS | 53.9 KB | five sheets, four of them generated from the engine |
| JavaScript | 16.4 KB | the engine's own reader bundles, plus 3 KB written for Ghost |
| Third-party requests the theme makes | 0 | no CDN, no font host, no tracker, no avatar service |
| Third-party requests Ghost makes | 474 KB | Portal at 389 KB and its search at 85 KB, both from a public CDN, on every page whether a theme uses them or not |
That last row is the honest headline, and no theme can remove it. Ghost injects those two scripts itself. They are almost four times the weight of everything this theme ships, and they arrive from a host that is not yours. A self-hosted Ghost can be configured to serve them from its own domain; a hosted one cannot. The theme's claim is therefore narrow and exact: it adds no third-party request, and the page still makes two.
The blog engine serves about 100 KB for the same shape of article and makes no third-party request at all, which is the figure the comparison page publishes. So the theme costs roughly a third more than the engine, and the page around it costs five times more again. That gap is not the stylesheet. It is the platform.
04What does not carry over
Five things the blog engine draws are not in this theme, and each is a decision with a reason rather than a queue of work.
- The pen. The highlighter, the pencil underline and the ballpoint ring are markup Ghost's editor has no way to write, so the theme does not ship the sheets that style them. Footnotes, the same.
- Series. Ghost has tags and authors and nothing else, and inventing a taxonomy in a theme would put content structure into the layer that is supposed to be about looks. An authors block stands where the engine's categories block does, and only on a blog that has more than one.
- The rail's year list. A year is a URL, and Ghost has no date route without a routes file the site owner installs by hand. The gutter timeline is a different thing and it does ship, because it points at nothing: it is a label positioned against cards that are already on the page.
- Right to left. WordPress links a mirrored stylesheet by itself, so the sibling theme gets one for free. Ghost has no such convention. Not refused, just not built.
- A callout's colour. Ghost offers eight backgrounds per callout; the engine draws a rule down the left and no slab. Both at once is the same idea said twice, and a bright panel in the middle of a dark page.
Made for one person writing long pieces on their own Ghost. Not made for a magazine front page, a shop, or a site whose design is its photographs.
05Put it on your site
Settings, then Design, then Change theme, then Upload theme, then Activate. The zip is one command from a checkout, and it runs every check before it packages: a zip that fails Ghost's own linter is a zip the person holding it usually cannot fix.
from a clone of the theme repository
bun run zip
Then Settings, then Design, for the nine controls: the palette the site opens in, whether readers may change it, the default light or dark, the terminal chrome, book typography, where a list thumbnail goes, the feature image above a headline, the tagline and the footer credit.
Two things are worth doing straight after. Put a couple of links in Navigation, which is the rail's first block, and mark two or three posts featured, which is its second.
Name the zip for the theme, not for the release. Ghost takes a theme's identity from the filename of the zip you upload, not from what is inside it, so quire-ink-0.2.0.zip installs a second theme beside the first instead of upgrading it. bun run zip writes quire-ink.zip for that reason.
06And when you want the engine
The theme gives you the reading page. What it cannot give you is the reason the reading page is cheap: one process, two SQLite files, nothing fetched from a CDN, and no platform deciding what loads on your pages. That part is the blog engine, and moving to it is a smaller job than it sounds.
Ghost exports its whole site as one JSON file, and the engine reads it: posts and pages, their tags, their dates and their bodies, turned into Markdown. Images still hosted on the old site are fetched into your own library straight after, batch by batch, with anything unfetchable named in a list. Clear that list before the old hosting lapses.
Or do not. Ghost has answers for requirements this software will never have: paid memberships with tiers, a newsletter sent to thousands, several staff users with different powers. The comparison page says which, name by name, and ends with the cases where Quire Ink is the wrong answer. If you are staying, stay, and keep the reading page.