Impact score
Footprint Score across the two most representative contexts.
5 scans · last scan 1 month ago
Homepage Score
Impact measured on the public homepage
v2.0 · 2 scans · Consolidated score over 90 days · 1 versions
What it adds to every page load
- Added time
- 0 ms
- Added memory
- 0.0 MB
- SQL queries
- +0
- CSS/JS files
- +0
- External calls
- 0
Admin Score
Impact measured in the WordPress admin
About
The web has never known what to do with a poem.
For thirty years browsers have treated verse as prose with pretensions, or else as a picture of text. HTML collapses white space on principle. Indentation vanishes on publish. A long line, wrapping on a phone, breaks into two lines nobody wrote. The distances a poet opens inside a line — the pause, the held breath — flatten to a single space, when they survive at all.
Poets and their editors have met all this with duct tape: strings of , periods dyed the color of the page, pre tags that set Keats in monospace, and, most often, screenshots — pictures of poems, unsearchable, silent to a screen reader, soft at the edges on the very phones where poetry is now mostly read. The Poetry Foundation, which publishes verse as carefully as anyone, still resorts to an image when a poem’s shape turns ambitious. Until now there has been no better way.
Read more Show less
This is the better way.
A poem is made of lines, and a line is a unit of sense. Where a line ends is not an accident. Nor is the pause inside it. Nor is the white space that holds one stanza off from the next. Each of these is a choice that conveys meaning. Print created conventions to carry this meaning by about 1501. The web never has.
Lineate treats the poem as a structure, not a string.
WordPress ships a Poetry block. It is not a bad pre tag; it is only a pre tag. The differences are quickly told:
Every one of these has stood between poetry and the web since the beginning. Every one of them ends here.
Epigraphs, dedications, and attributions set as proper poem notes. Centering on the longest line, the way print does it. A scroll mode for long-lined poems that must not wrap at all. A phone-width preview inside the editor, so you see the fold before your readers do. And straight quotes stay straight, double hyphens stay double: WordPress does not “smarten” a poem’s punctuation while Lineate is watching.
Poems set in the theme’s own type — never monospace, unless you ask for it — and they are free to leave: one click returns any Lineate poem to plain Verse or paragraphs. It would be a poor tribute to poetry to hold it hostage.
I am, regrettably, a poet, and for years I edited an online poetry journal called Linebreak. A decade of good poems arrived as Word attachments and left as compromises; every hack condemned above, I have committed personally. Lineate is the tool I needed then and could not find, because it did not exist.
Forgive my boasting, but this is the best way there has ever been to publish a poem on the web. The problem is as old as the browser, and it has simply never been solved before — not by the built-in block, not by the workarounds, not by the systems behind the handsomest poetry publications on the internet. Now it is solved, and the solution is free software — GPL, no premium tier, no locked features — because the shape of a poem must not be a luxury good.
The human-readable source of all compiled JavaScript and CSS ships inside the plugin: the src/ directory holds the original code and package.json the build configuration. To build: install a Node.js LTS release, then run npm install and npm run build from the plugin directory (the toolchain is the standard @wordpress/scripts).
Bundled third-party libraries (all GPL-compatible):
Lineate makes no network requests of its own: no external services, no tracking, no phoning home.
Description published by Johnathon Williams on WordPress.org, licensed under GPLv2 or later.
Screenshots
Screenshots published by Johnathon Williams on WordPress.org, licensed under GPLv2 or later.
Per-version history
Show per-version detail (1 version)
Per-version history
Show per-version detail (1 version)
How the plugin evolves version by version.
| Version | Homepage | Admin | Last scan |
|---|---|---|---|
| v2.0 | 2 scans | — | 1 month ago |
Scan history
Show individual scan log (5 scans)
Scan history
Show individual scan log (5 scans)
| Date | Version | Context | Score | Grade | Time | Memory |
|---|---|---|---|---|---|---|
| 1 month ago | v2.0 | messages.page_type.custom | 98/100 | A | 0 ms | 0.0 MB |
| 1 month ago | v2.0 | Homepage | 100/100 | A | 0 ms | 0.0 MB |
| 1 month ago | v2.0 | messages.page_type.custom | 100/100 | A | 0 ms | 0.0 MB |
| 1 month ago | v2.0 | messages.page_type.custom | 100/100 | A | 0 ms | 0.0 MB |
| 1 month ago | v2.0 | Homepage | 100/100 | A | 0 ms | 0.0 MB |