Reading & Writing. Software that gets out of the way of words.
Most software is something you use. Reading and writing software is somewhere you stay, sometimes for hours. This guide teaches you to design that place: the page, the light, the way through a long text, the margin where you think back, and the blank page where you write. Calm here is not a style. It is the whole job.
Reading timeAbout 4 hours, in 5 sittings (one per part)
Explain why reading and writing tools follow different rules from task software, and what "the interface disappears" means in measurable terms (understand).
Choose between pages and scroll, and set measure, leading, margins, justification and typeface for a long-form surface with reasons (apply).
Design a reader settings panel with the right number of controls and defaults that are already right (create).
Diagnose themes, e-ink limits, progress indicators, annotation flows and footnotes in any reading app you use (analyse).
Design a calm feed or read-later tool that ends instead of hooking (create).
Design a writing tool: focus, typewriter scrolling, editor model, storage, autosave, versions, export and capture (create).
Judge accessibility claims for reading (dyslexia fonts, "bionic" reading, text-to-speech) against the evidence (evaluate).
Warm-up: what do you already notice?
Before we start, spend five minutes with the reading app you use most: Kindle, Apple Books, a read-later app, an RSS reader, or just Safari's Reader view. Read one page of anything. Then answer the two questions below without looking anything up. They are not a test. They tell you which chapters to read slowly.
Diagnostic 1
You are reading a novel on your phone at night. Which of these does the most damage to a 40-minute reading session?
Typeface, page-turn style and progress format all matter, but they are tuning. An interface that interrupts on its own schedule breaks the one thing a reader came for: unbroken attention. Chapter 1 builds on exactly this. If you picked a, b or d, you are already thinking about detail, which is good; the lesson is to rank problems by what they cost the reader's attention.
Diagnostic 2
Your writing app loses a user's paragraph once in a thousand saves. What is the right priority?
A writing tool's first feature is that the words are safe. A writer who has lost text once starts copying everything to a second place, which is the opposite of calm. Chapter 14 covers autosave, versions and storage in depth. A manual Save button (c) moves the risk onto the user; a version history (d) does not help if the lost text never reached it.
How to study this guide: read one Part per sitting. Do the exercise at the end of each chapter on your own product if it has any reading or writing surface (most products do: settings pages, help docs, notes fields, onboarding text). If yours does not, use the reading app you use every day and redesign it on paper. The labs are there to be played with; drag every slider to its extremes before reading the caption.
Part one
The reading surface
Six chapters on the page itself: why reading software is different, pages versus scroll, the text block, the book typeface, the controls you hand the reader, and light (themes, night, e-ink). This is the foundation. If the surface is wrong, no feature on top of it will save the experience.
1
Attention is the product
Taught by Oliver Reichenstein, with Naoto Fukasawa and Kenya Hara
In reading software the user's attention is not a resource you spend on your interface; it is the thing you are protecting. Every pixel of chrome, every animation, every prompt is paid for out of the reader's concentration.
Think about how most software is used. You open a banking app, do a task in 40 seconds, and leave. The interface is the experience, so it is reasonable for it to be visible, labelled and explicit. Reading is the reverse. A reading session lasts 20 minutes to two hours. During that time the reader is building something fragile in their head: a model of an argument, a world, a set of characters. Psychologists call this a situation model. It takes minutes to build and seconds to collapse.
That gives you the mechanism behind every rule in this guide. Any element that pulls the eye away from the text, even for a quarter of a second, forces the reader to put the model down and pick it back up. One interruption is cheap. Ten interruptions in a chapter turns reading into skimming, and the reader blames the book, not your app. They just feel that reading on your app is tiring.
Naoto Fukasawa's "without thought" idea is useful here: good design fits behaviour people already have, so they act without stopping to think about the object. For reading, the behaviour already exists and is centuries old: eyes move along a line, hands turn a page, a finger keeps a place. Your job is to fit that behaviour, not to teach a new one. Kenya Hara's idea of emptiness (an empty vessel that can hold whatever the user brings) is the other half. A reading screen should be close to empty, so that the text can fill it.
Same reading time, different reading. Each red dot costs more than its own duration: the reader has to rebuild where they were in the argument. Count interruptions per chapter in any reading app you audit.
The three jobs of a reading interface
Strip it down and a reading interface has three jobs. Get the reader in (open to the right place, fast, with the text already set well). Keep the reader in (stay out of the way, never surprise them). Get the reader back (when they leave, make return effortless: same place, same settings, maybe a reminder of where they were). Almost every reading feature belongs to one of those three jobs. Features that belong to none of them, like streak badges or social prompts mid-chapter, deserve hard suspicion.
Sort every feature into a job. The middle job is the one most apps get wrong, because it is the one where doing less is the work.
Don't
The app is louder than the book. Text gets about half the screen, and every non-text element is a place for the eye to land.
Do
The book is the interface. Chrome waits behind a tap in the middle. Only two quiet facts stay: where you are, how far to go.
Web Design is 95% Typography.Oliver Reichenstein, essay title, iA, 2006
Reichenstein's essay title was a provocation, but for reading products it is close to literal. If the text is set well and the chrome is hidden, you have most of a great reader. Everything after that is about not breaking it.
Key idea
In a reading app, measure success by what the reader did not notice. If they finish a chapter without once thinking about your app, you won.
Do
Hide all chrome by default; reveal it with one tap in the centre or a mouse move, and hide it again when reading resumes.
Keep every surprise out of the reading surface: no banners, toasts, or tips while text is on screen.
Sort each feature into get in, stay in, get back. Cut what fits none.
Open straight to the text at the last position, in under a second.
Don't
Show ratings prompts, upsells or "share your progress" mid-chapter.
Animate anything the reader did not trigger.
Put persistent tab bars or floating buttons over text.
Measure the reading app by time on screen or taps; measure finished sessions and returns.
In the wild
Kindle (e-ink)Amazon, 2007 to now
A tap at the top of the page brings up the toolbar; otherwise the screen is text, a small chapter title and a progress line. Turning pages is a tap or a side button. The default state is pure text. Chrome is a mode you enter on purpose.
iA WriterInformation Architects, 2010 to now
A writing app, but built on the same idea: a blank window, one typeface tuned for the size, and almost no visible controls while you type. The same "interface disappears" rule applies to writing as to reading.
Safari ReaderApple, since 2010
One button strips a web page down to headline, byline, images and body text. Readers want this so much that browsers built it in. Your product should not need it.
For the solo creator
Calm is the cheapest feature you will ever ship, because most of it is deletion. You do not need a design team to remove a toolbar. You need the discipline to not add one. When you are tempted to add a mid-reading prompt because a metric dipped, write down what attention it costs first.
Common mistakes
Treating the reader like a task app
Most of your design experience comes from forms and dashboards, where visible controls are good.
Write the session length at the top of your design doc. If it is over 10 minutes, apply reading rules: chrome hidden, nothing unprompted.
Growth features inside the text
Prompts placed where users spend the most time get the most impressions.
Move all prompts to the edges of the session: the library screen, or the end of a book. Never between two paragraphs.
Hidden means unfindable
Designers hide chrome but give no clue how to bring it back.
Show the chrome on first open, then fade it after a few seconds; one tap anywhere central brings it back. That is learnable in one session.
Check yourself
Your reading app's retention dipped. A teammate (or your own inner growth hacker) suggests a small "Keep your streak!" toast every 15 minutes of reading. Best response?
The toast's cost is not its size or duration; it is the eye movement and the broken situation model. Moving the message to the edges of the session (d) keeps the motivation without taxing reading. A short fade (a) still interrupts; opt-in (b) is better but still mid-text; top placement (c) changes nothing about attention.
Exercise 1.1 30 minutes · on a reading app you use daily
The interruption log
Read for 20 minutes in your main reading app with a paper notepad beside you.
Every time your eyes leave the text because of the app (not the content), make a tally mark and write two words on what it was.
Afterwards, sort each interruption into: needed (you asked for it), tolerable, or harmful.
For each harmful one, write the fix in one line: remove it, move it to the session edges, or make it on-demand.
You're done when: you have a list of interruptions, their category, and a one-line fix for each harmful one.
Beginner
Competent
Strong
Lists visible chrome elements.
Logs actual interruptions during reading and sorts them.
Also maps each to get in / stay in / get back and proposes fixes that keep the feature's purpose.
2
Pages or scroll
Taught by Marco Arment (Instapaper), with lessons from Kindle and Apple Books
Pages give the reader a fixed place and a rhythm; scroll gives them continuity and speed. Choose by the length and purpose of the text, and if you offer both, make each one complete rather than half of each.
The page is the oldest reading interface we have, and it does three useful things. It gives every word a fixed place on a fixed rectangle, so your memory can attach to it ("the quote was near the top of a left page"). It creates a rhythm: read, turn, read, which gives the mind small rests. And it makes progress countable: page 112 of 300 means something.
Scroll does different useful things. It never cuts a paragraph in half. It lets you glance back at the previous line without a gesture. It handles text of any length without the machinery of pagination, which is why the web is a scroll. And on a phone, a flick of the thumb is less effort than a tap per screen for skimming.
The weaknesses mirror the strengths. Scroll's position is fuzzy: the same sentence sits at a different height every time you return, so spatial memory has nothing to hold. Continuous motion also asks the eye to track moving text, which is tiring over hours. Pages force awkward breaks (a heading at the bottom of a page, a single line at the top) and, on screens, a turn animation that can become a toy.
No universal winner. Books read cover to cover reward pages; articles, documentation and anything you skim reward scroll. Code and tables almost always want scroll.
The page turn is a micro-interaction, not a show
Apple's iBooks launched in 2010 with a realistic page curl that followed your finger. It was a beautiful demonstration of the iPad's touch screen, and it was also skeuomorphism at its most literal. In the 2022 redesign of Apple Books the curl was replaced by a simpler slide, and enough readers missed it that Apple brought the curl back as an option in a later update. The lesson is not "curl good" or "curl bad". The turn is felt hundreds of times per book. It must be fast (under about 250 ms), it must follow the finger if you drag, and it must never be the thing you notice. Some readers love the curl because it gives the turn a physical weight; others find it slow. That is a legitimate preference, which is why it is a setting.
On e-ink, the turn has no animation at all: the screen just redraws. That turns out to be fine. Readers stop noticing the redraw within minutes, because it is consistent. Consistency matters more than smoothness.
Curl
Physical, slower. Feels like a book; costs time on each turn.
Slide
Clear, quick. Shows direction; works with a drag.
Instant
Invisible. The e-ink default; also good for reduced motion.
Lab: pages versus scroll, and how you show progress
Page 1 of 1
Tap the right or left third of the text (or press the arrow keys after clicking it) to turn pages. Switch to scroll and notice two things: your place has no fixed address, and "page" stops meaning anything, so the progress line must change to percent or time. Try "Nothing" and see how quickly you want it back. Text: Jane Austen, Pride and Prejudice, 1813, chapter 1 (public domain).
If you offer both, finish both
Many readers offer pages and scroll as a setting: Kindle's phone apps, Apple Books, and Instapaper all have had both at various points. That is fine, but each model has its own requirements, and teams often build one properly and the other as an afterthought. A complete page model needs widow and orphan control, headings that never sit alone at the bottom of a page, images that fit a page, and stable page numbers for a given text size. A complete scroll model needs a position that survives rotation and font changes, a meaningful progress indicator, and a way to page by screen (space bar, a tap at the bottom edge) for readers who like the rhythm without the animation.
Content
Default
Why
Novel, long non-fiction
Pages
Hours of linear reading, spatial memory, rhythm, countable progress.
Article, essay, newsletter
Scroll
Read in one sitting; skimming and back-glancing matter more than place.
Documentation, reference
Scroll with anchors
You jump in and out; headings and links are the navigation.
Comics, fixed-layout, PDFs
Pages (fixed)
The layout is the content; reflowing it breaks it.
Code, tables, poetry
Scroll
Line breaks carry meaning; pagination splits units awkwardly.
Do
Pick a default per content type and make it excellent before adding the other model.
Keep page turns under about 250 ms and let them follow a drag.
Let the reader page by screen in scroll mode (space bar, tap the bottom edge).
Keep the reader's exact sentence when they switch models, rotate, or resize text.
Don't
Animate page turns slowly to "feel premium".
Leave a heading stranded at the bottom of a page.
Show "page 3 of 9" in scroll mode, where pages do not exist.
Reflow fixed-layout content (comics, forms, slides) into pages.
In the wild
Apple BooksApple, 2010 to now
The page curl was a signature of the original iBooks; the 2022 redesign replaced it with a slide, and the curl later returned as an option alongside slide and scroll. The turn is felt hundreds of times per book; readers have strong preferences, so make it a setting with a calm default.
Kindle e-readersAmazon
Pages with an instant redraw. Tapping most of the screen turns forward; a narrow left strip turns back. The tap zones are lopsided on purpose: forward is the action you take hundreds of times.
InstapaperMarco Arment, 2008
Built around scroll for articles, and over the years experimented with alternatives such as pagination and tilt-to-scroll. Even a scroll-first reader benefits from offering the page rhythm to those who want it.
For the solo creator
Real pagination is expensive to build well: widows, orphans, images, stable positions, performance on long books. CSS multi-column layout gets you a working prototype in an afternoon (the lab above uses it), but the details take weeks. If your content is articles or docs, ship scroll first, add "page by screen" with the space bar and a bottom tap, and stop there until readers ask.
Common mistakes
Losing the place on rotation or font change
Position is stored as a page number or scroll offset, both of which change when layout changes.
Store position as a text offset (character index or a stable location ID) and re-find it after every reflow.
Toy page turns
The turn is fun to build and demo.
Time it. If it is over 300 ms or cannot be interrupted by the next tap, it is too slow for the 400th turn.
Check yourself
You are building a reader for long legal documents that people search, jump around in, and cite by section. Which reading model fits best?
Reference documents are read by jumping, not cover to cover, and citations need stable addresses that do not change with text size. Reflowable page numbers (c) change with font size, so they make bad citations; section anchors do not. The curl (b) adds cost to every jump.
Exercise 2.1 40 minutes · on your own product or docs
Choose the model on purpose
List every long text surface in your product (help docs, changelog, articles, onboarding, terms).
For each, write its typical session: read once top to bottom, skim, jump in from search, or reread.
Pick pages or scroll for each using the table above, and write one sentence of reasoning.
For the scroll surfaces, check: can the reader page by screen with the space bar? Does the position survive a refresh?
You're done when: you have a table of surfaces, chosen model, reason, and the two scroll checks marked pass or fail.
Beginner
Competent
Strong
Picks a model for each surface.
Justifies each by session type and fixes failed checks.
Also defines how position is stored so it survives reflow, and tests it.
3
The text block: measure, leading, margins
Taught by Robert Bringhurst, with Matthew Butterick and the iA team
A long text is read line by line, so the line is your unit of design. Its length (measure), the space between lines (leading) and the quiet around the block (margins) decide whether the eye moves without effort for an hour or tires in ten minutes.
You met these in Typography. Here we tune them for long sessions, where small errors add up. The mechanism is the return sweep. At the end of each line your eye jumps back to the start of the next one. If lines are too long, the jump is far and the eye sometimes lands on the wrong line (you reread a line, or skip one). If lines are too short, the eye jumps constantly and phrases get chopped. If lines are too tight vertically, the next line crowds the target and the sweep misses. If they are too loose, the block falls apart into stripes.
The red sweep lands one line low. That is what "tiring to read" feels like from the inside: tiny misses, corrected hundreds of times.
Numbers to start from
Robert Bringhurst's The Elements of Typographic Style gives 45 to 75 characters as the satisfactory range for a single-column page, with 66 widely regarded as ideal. Matthew Butterick's Practical Typography suggests 45 to 90 characters and line spacing of 120 to 145 percent of the point size. On screens, long-form reading tends to want the upper half of that leading range or a little more, because screens are read at varying distances and in varying light. A good starting point for a desktop reading column is 17 to 21 px text, 1.5 to 1.6 line height, and a column of about 34 em (roughly 65 to 70 characters in a typical serif).
Leading and measure are linked: the longer the line, the more leading it needs, because the return sweep has further to travel and needs a wider target. If you let readers widen the column, nudge the leading up with it. Good reader apps do this quietly.
Don't
It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife. However little known the feelings or views of such a man may be on his first entering a neighbourhood, this truth is so well fixed in the minds of the surrounding families, that he is considered the rightful property of some one or other of their daughters.
Tight leading, edge to edge. Lines crowd each other, the block has no margin to rest the eye, and the sweep target is narrow.
Do
It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife. However little known the feelings or views of such a man may be on his first entering a neighbourhood, this truth is so well fixed in the minds of the surrounding families, that he is considered the rightful property of some one or other of their daughters.
Room to breathe. 1.6 line height, real margins, and a measure capped in em so it holds at any window size.
Margins are not wasted space
Book designers spent five centuries on margins. Classical page proportions, like the Van de Graaf canon reconstructed by Jan Tschichold, put the text block high and toward the spine, with the largest margin at the bottom. On screen there is no spine, so symmetric side margins are normal, but two old lessons still apply. First, margins frame the block so the eye knows where the text ends; text that touches the edge of a screen feels like it is spilling off. Second, the bottom margin should be generous, because the last line on a screen is where the eye pauses before turning, and controls placed there compete with it.
On a phone, side margins of 16 to 24 px are typical; reading apps often go wider (24 to 32 px) because the measure is already short and the frame adds calm. On tablets and desktops, the margin is whatever is left after you cap the measure. Do not widen the text to fill a wide window. Centre a column and let the margins grow.
Cap the column, not the window. One line of CSS (max-width in em) fixes most long-form web reading.
/* A calm long-form column for the web */
article {
max-width: 34em; /* ~65-70 characters in most serifs */
margin: 0 auto;
padding: 0 clamp(16px, 5vw, 32px);
font-size: clamp(17px, 1rem + 0.3vw, 21px);
line-height: 1.55;
}
article p + p { margin-top: 0.9em; } /* or indent, not both */
Do
Cap the measure in em, so it scales with the reader's text size.
Raise line height as measure grows; 1.5 to 1.6 is a safe start for long-form.
Give the block real margins, generous at the bottom of the screen.
Separate paragraphs with either space or a first-line indent, not both.
Don't
Let text run the full width of a desktop window.
Use the same tight line height you use for UI labels.
Put a toolbar flush against the last line of text.
Fix the measure in px, so it breaks when the reader enlarges the text.
In the wild
Medium2012 to now
Built its early reputation on a single narrow serif column with generous leading on a white page, at a time when most blogs were cluttered. A well-set column was a brand in itself.
Kindle and Kobo marginse-readers
Both offer a few margin widths and line spacings rather than free sliders on most models, with the defaults set to a moderate value. A handful of good presets beats a continuous control for something readers set once.
Wikipedia (Vector 2022)Wikimedia, 2023
The 2022 Vector skin, rolled out on English Wikipedia in early 2023, introduced a limited content width on wide screens after years of full-width text. Even the biggest reference site on the web moved to a capped measure for readability.
Common mistakes
Measure in pixels
The layout is designed at one text size.
Set max-width in em or ch. When the reader picks a bigger size, the column grows with it and the character count stays right.
Paragraph space and indent together
Two habits from different traditions (web and print) get combined.
Pick one. Space for the web and short paragraphs; indent for book-like continuous prose.
UI line height on reading text
One global line-height: 1.2 is set for the whole app.
Give reading surfaces their own type tokens (see Systems).
Check yourself
A reader sets the largest text size in your web reader on a 27-inch monitor. Your column is max-width: 680px. What happens, and what should you change?
A pixel cap holds the width while characters get bigger, so fewer fit per line. An em cap scales with font size and keeps roughly the same character count. Line height in unitless form (d) already scales correctly.
Exercise 3.1 30 minutes · on your own product
Count the characters
Open the longest text surface in your product at three widths: phone, laptop, wide monitor.
At each, count characters in three full lines (including spaces) and average them.
Measure the line height and side margins in your dev tools.
Fix anything outside 45 to 75 characters on desktop (30 to 45 is fine on phone), and set reading line height to at least 1.45.
You're done when: you have before and after numbers for all three widths and a commit that fixes the outliers.
Beginner
Competent
Strong
Measures one width.
Measures three widths and fixes measure and leading.
Also caps in em, tests at the largest text size, and makes reading type its own token.
4
The book face, justification and hyphenation
Taught by Matthew Carter's screen faces, with Dalton Maag (Bookerly) and TypeTogether (Literata)
A typeface for hours of reading is not chosen for personality. It is chosen for stamina: generous x-height, open shapes, sturdy serifs, moderate contrast, and spacing that survives small sizes, low resolution and e-ink. Justification is only worth it if hyphenation comes with it.
Display typefaces are judged in a glance. Book typefaces are judged after the 300th page, when every small irritation has been seen 100,000 times. The qualities that matter are boring and physical. A large x-height makes lowercase letters bigger at the same point size, so text reads larger without taking more lines. Open apertures (the gaps in c, e, a, s) keep letters distinct when blurred or rendered with few pixels. Sturdy, slightly blunt serifs survive e-ink and low-resolution screens where hairline serifs break up. Moderate stroke contrast avoids thin strokes vanishing in dark mode or at small sizes.
Stamina over style. Lines show the proportions; the letters are set in this page's serif (Source Serif). Compare the specimens below at the same size.
Face
Sample at 18 px
Origin and why it reads well
Georgia
Simplicity, simplicity!
Matthew Carter for Microsoft, 1990s. Designed for coarse screens: large x-height, robust serifs. Installed almost everywhere.
Charter
Simplicity, simplicity!
Matthew Carter for Bitstream, 1987, built for low-resolution printers; ships on Apple devices. Falls back to another serif if missing here.
Literata
Simplicity, simplicity!
TypeTogether for Google Play Books, 2015; later released free on Google Fonts. A book face drawn for screens.
Source Serif
Simplicity, simplicity!
Frank Grießhammer for Adobe; open source. This course's body face.
Bookerly
(Kindle only)
Dalton Maag for Amazon, introduced in 2015 as the new Kindle default, replacing Caecilia. Not licensed for other use.
Five book faces at one size. Note the x-height differences: Georgia looks biggest at the same pixel size. Text from Thoreau's Walden, 1854.
Justification needs hyphenation
Books are usually justified: both edges straight. Justification works by stretching the spaces between words on each line. In a wide print column with good hyphenation, the stretch is small and invisible. In a narrow screen column without hyphenation, a long word that cannot be broken pushes to the next line and leaves huge gaps behind it. Gaps stack vertically into "rivers" of white that the eye follows down the page. That is why early e-readers and many apps looked worse justified than ragged.
Amazon's 2015 Kindle typography update paired the new Bookerly face with a new layout engine that added hyphenation and better spacing. That is the right pairing. The rule for you: justify only when you can hyphenate well and the measure is at least about 45 characters. Otherwise use left-aligned ("ragged right") text, which never makes rivers.
Justified, no hyphens
Our life is frittered away by detail. An honest man has hardly need to count more than his ten fingers, or in extreme cases he may add his ten toes, and lump the rest. Simplicity, simplicity, simplicity!
Rivers. Narrow measure plus justify stretches spaces into holes.
Justified, hyphenated
Our life is frittered away by detail. An honest man has hardly need to count more than his ten fingers, or in extreme cases he may add his ten toes, and lump the rest. Simplicity, simplicity, simplicity!
Even colour. Broken words absorb the slack. Needs a lang attribute.
Ragged right
Our life is frittered away by detail. An honest man has hardly need to count more than his ten fingers, or in extreme cases he may add his ten toes, and lump the rest. Simplicity, simplicity, simplicity!
Always safe. Even word spacing at any width. The default for the web.
These three are live HTML, so your browser does the setting. If the middle one looks like the first, your browser lacks English hyphenation dictionaries, which is itself a lesson: you cannot rely on hyphens: auto everywhere.
/* Long-form web text, book-like when supported */
article { text-align: left; text-wrap: pretty; } /* fewer short last lines */
@supports (hyphens: auto) {
article.justified { text-align: justify; hyphens: auto; }
}
/* never justify below ~45 characters per line */
Widows, orphans and the last line
A widow is a paragraph's last line alone at the top of a page; an orphan is a first line alone at the bottom. In scroll they hardly matter, but on pages they look like errors. A related screen problem is the runt, a single short word on the last line of a paragraph. Browsers now offer text-wrap: pretty, which rebalances the last lines of paragraphs to avoid runts, and text-wrap: balance for headings. They cost nothing to add and degrade gracefully.
Do
Choose a face with a large x-height, open apertures and sturdy serifs for long text.
Test the face at small size, in dark mode and in greyscale.
Justify only with good hyphenation and a measure of 45+ characters.
Set lang on your text, so hyphenation and quotes work.
Don't
Pick a face because it looks elegant in a 48 px heading.
Use hairline serif "fashion" faces (Didone-style) for body text.
Justify narrow phone columns without hyphenation.
Ship a reading app with only your brand font.
In the wild
Kindle 2015 updateAmazon
Introduced Bookerly, drawn for reading on screens, together with a new layout engine with hyphenation and improved spacing. A face and its setting engine are one decision.
Google Play BooksGoogle, 2015
Commissioned Literata from TypeTogether as its reading face, later released openly. If you cannot commission a face, the open result is now free to use.
iA Writer's fontsiA
iA built its own monospace, duospace and quattro faces (based on IBM Plex) specifically for writing at screen sizes, and publishes them free. Writing faces have different needs from reading faces: they must show every character clearly while you edit.
Common mistakes
Brand font in the reading surface
Consistency with the marketing site feels important.
Use the brand face in chrome and headings if you like. The reading text gets a proven book face and the reader's choice.
Assuming hyphens: auto works
It works on your Mac.
Check on Android, Windows and Linux. Without dictionaries, fall back to ragged right.
Judging the face at one size
Specimens are seen at display size.
Read three pages at 16 px in dark mode before deciding.
Check yourself
Your reading app on phones shows big gaps between words in some lines. Readers call it "messy". Text is justified, 15 px, about 38 characters per line. What is the best fix?
At 38 characters, justification without hyphenation produces rivers. Ragged right fixes it immediately; justify plus hyphenation is a fine option for readers who want book-like pages. Tightening letters (a) or shrinking text (d) trades one problem for a worse one; changing the face (c) does not address word spacing.
Exercise 4.1 45 minutes · type test
Three-page stamina test
Pick three candidate faces for your product's reading text (for example Georgia, Literata, Source Serif).
Set the same 1,000-word text in each at your real size, measure and leading, light and dark.
Read each in full on your phone, on separate days if you can. Note where your eye stumbled.
Pick one, and write three sentences on why, naming x-height, apertures or contrast.
You're done when: you have three test pages, stumble notes and a reasoned choice.
Beginner
Competent
Strong
Chooses by looks in a specimen.
Reads full pages and reasons from anatomy.
Also tests dark mode, small size and a low-quality screen, and checks licensing.
5
Reader controls and defaults that are already right
Taught by Kindle, Kobo and Instapaper, with Dieter Rams on "as little design as possible"
Readers differ: eyesight, light, device, habit. So reading apps must let them change the text. But every control is a decision you push onto the reader, so the default must already be right, and the controls should be few, layered and instantly previewed.
There are two failure modes. The first is too few controls: a fixed font size in a reading app excludes anyone whose eyes do not match yours, and that is most people over 45. The second is too many: a panel of fourteen sliders invites fiddling, which is the opposite of reading. People who start adjusting kerning at 11 pm are not reading.
The way through is to rank controls by how many readers need them and how often. Text size and theme (light or dark) are needed by almost everyone and change with the situation, so they sit on the first layer, one tap away. Font, line spacing, margins and alignment are set once and rarely touched, so they sit one level deeper. Expert controls, like Kobo's font weight and sharpness sliders, sit behind an "advanced" door. Each change previews live on the real text behind the panel, never in a sample box.
Each layer down is a smaller audience. The indent is the cost: deeper layers take one more step. Never put a Layer 1 control at Layer 3.
Lab: reader settings, applied live
Chapter 1
It is a truth universally acknowledged, that a single man in possession of a good fortune, must be in want of a wife.
However little known the feelings or views of such a man may be on his first entering a neighbourhood, this truth is so well fixed in the minds of the surrounding families, that he is considered the rightful property of some one or other of their daughters.
“My dear Mr. Bennet,” said his lady to him one day, “have you heard that Netherfield Park is let at last?”
Mr. Bennet replied that he had not.
“But it is,” returned she; “for Mrs. Long has just been here, and she told me all about it.”
Mr. Bennet made no answer.
“Do you not want to know who has taken it?” cried his wife impatiently.
“You want to tell me, and I have no objection to hearing it.”
This was invitation enough.
About 66 characters per lineContrast 16.9:1Comfortable.
Drag each slider to both ends. Watch the characters-per-line counter: it is measured from the real font, not guessed. Try a narrow column with "Justified, no hyphenation" to see rivers form. Then press "Reset" and notice how good defaults feel like nothing at all. Text: Pride and Prejudice, chapter 1.
How many options per control?
For each control, offer steps rather than a continuous range when the reader sets it once: five to eight text sizes, three or four line spacings, three margins. Steps are easier to return to ("I like the fourth size") and easier to sync across devices. Text size is the exception that benefits from many steps, because eyesight varies so widely; Kindle and Apple Books offer many sizes, including very large ones.
For typefaces, four to eight is enough, as long as they differ in a useful way: a sturdy serif, a screen serif, a humanist sans, one high-legibility face (such as Atkinson Hyperlegible), and the publisher's font when there is one. Twelve similar serifs are not choice; they are homework.
Defaults are your design
Most people never open the settings. Whatever you ship as default is what most of your readers will see for their entire time with the app. So spend more time on the default than on the panel. Set it per device class: a phone default (17 to 19 px, 1.5 to 1.6 leading, 20 to 28 px side margins) is not a tablet default. Follow the system text size setting (Dynamic Type on iOS, font scale on Android) as the starting point, and remember the reader's choice per device, not just per account, because the same person wants different sizes on a phone and an e-reader.
Don't
Unlabelled equal sliders. Everything has the same weight; nothing previews on real text; the sheet hides the page.
Do
Layer 1 on top, live preview behind. Size and theme are big, direct targets; the rest is one tap deeper.
Do
Spend more time on defaults than on the panel. Start from the system text size.
Put size and theme on the first layer; font and spacing one step deeper.
Preview every change on the real text behind the panel.
Use steps for set-once controls, and remember choices per device.
Offer a "reset to defaults" that restores your designed defaults.
Don't
Ship a reading surface with a fixed text size.
Offer a dozen near-identical serif fonts.
Show a "sample text" box instead of the actual page.
Sync one text size to every device the reader owns.
In the wild
KoboRakuten Kobo
Offers the usual font, size, spacing and margins, plus "advanced" sliders for font weight and sharpness, which help on e-ink where thin strokes can look grey. Expert controls are fine behind a door; they serve a real e-ink problem.
Kindle ThemesAmazon
Lets you save a full combination of font, size, spacing and layout as a named theme and switch between them. Bundling settings turns ten choices into one, for people who read in two situations (say, day and bed).
Instapaper2008 to now
A compact panel: a handful of fonts, size, line spacing, margins and a few background colours, all previewed on the article. A small, well-chosen set covers almost everyone.
For the solo creator
Build reader settings as CSS custom properties on the reading container (--rw-size, --rw-leading, --rw-measure, --rw-font) and let the panel only change those. The lab above works this way. Each new control is then one variable and one select, and saving settings is a tiny JSON object per device.
Common mistakes
The panel hides the page
A full-screen settings sheet is the default component.
Use a half-height sheet or popover so the text stays visible and every change is seen instantly.
Ignoring system text size
The app has its own size setting, so the system one feels redundant.
Start from the system size. Many readers set it once for every app and expect it to be honoured.
Settings that fight each other
Size, measure and leading are separate sliders.
Link them: when size goes up a lot on a narrow screen, nudge leading up and margins down automatically.
Check yourself
You have room for exactly two controls in the first layer of your reader's settings. Which two?
Size and theme are needed by almost everyone and change with situation (light, tiredness, device). Typeface and spacing are usually set once. Weight and hyphenation are expert controls.
Exercise 5.1 60 minutes · design
Design your settings panel and its defaults
List every reading setting you might offer. Give each a score for audience (how many need it) and frequency (how often they change it).
Place them in three layers using those scores.
Write your defaults for phone, tablet and desktop: size, leading, measure, margins, face, theme.
Sketch the panel on paper at phone size, with the text visible behind it.
You're done when: you have a scored list, a three-layer sketch and a defaults table for three device classes.
Beginner
Competent
Strong
A list of controls.
Layered by score with defaults per device.
Also links settings that interact, plans per-device memory, and builds it as CSS variables.
6
Light, dark, sepia, night and e-ink
Taught by e-reader makers (Kindle, Kobo), with research on polarity and night reading
A reading theme is a lighting decision. Match it to the light the reader is in, keep contrast high but not harsh, and when the screen is e-ink, design for a display that is slow, grey and permanent rather than fast, coloured and glowing.
Screens emit light; paper reflects it. In a bright room, a white screen is about as bright as the paper around it and feels natural. In a dark room the same white screen is the brightest thing in your field of view, your pupils narrow, and the glare tires you. That is the real reason readers want dark themes at night: not taste, but light balance. Research on text polarity (for example, work by Piepenbrock and colleagues in 2013) has found that dark text on a light background tends to give better proofreading and legibility in normal lighting, partly because a narrower pupil sharpens the image. So the right default is light in the day and a dark option for dim rooms, ideally following the system appearance.
Contrast is a range, not a maximum. These are the exact colours used in the lab in chapter 5. Try each one there.
Dark, but not too dark
Two details separate a good dark theme from an inverted one. First, avoid pure white text on pure black for long reading. The extreme contrast makes bright letters bloom into the dark around them (halation), which is worse for the many people with astigmatism. Soften the text to an off-white or light grey and lift the background slightly off black. Second, true black (#000) on OLED phones is a legitimate choice for night reading in a dark room, because black pixels are off and the screen emits almost no light around the text. But true black can smear when you scroll on some OLED panels, and the jump from a bright UI to it is harsh, so offer it as an option, not the dark default.
Night reading and warm light
Light in the evening affects sleep. A 2015 study by Chang and colleagues (PNAS) found that people who read on a light-emitting e-reader before bed took longer to fall asleep and had suppressed evening melatonin compared with reading a printed book. The strongest levers are brightness and timing. Warmer colour (less blue) is a plausible help and is how e-readers like the Kindle Oasis, newer Paperwhites and Kobo models with "ComfortLight PRO" handle bedtime, but the evidence that a warm shift alone fixes the sleep effect is mixed. Design for both: a dark or sepia theme, brightness that can go very low, and on devices with a front light, a warm tint that can follow sunset.
Follow the reader's evening. Tie theme to system appearance or sunset, and let brightness go lower than you think anyone needs.
Designing for e-ink
E-ink (electrophoretic) screens move tiny charged pigment particles to form an image, and the image stays without power. That makes them wonderful for reading (reflective like paper, readable in sunlight, weeks of battery) and awkward for interfaces. A full refresh takes a few hundred milliseconds and often flashes black to clear the previous image. Faster partial updates leave faint traces of the previous image, called ghosting, which builds up until the next full refresh. Most screens show 16 levels of grey. Colour e-ink exists (for example the Kindle Colorsoft from 2024 and several Kobo models), but colours are muted and colour resolution is lower than black-and-white.
So the e-ink design rules are almost the opposite of phone UI fashion: no animation (each frame costs a refresh and leaves ghosts), no subtle greys (they become mush), no thin lines, no transparency, no spinners. Use solid black on white, thick enough strokes, clear boxes, and state changes that are big and instant. Design screens so that partial refreshes only touch the area that changed (for example, a menu drawn over a fixed region), and give the reader control over how often a full refresh flash happens. Kindle exposes this as a "page refresh" option.
Don't
Phone UI on e-ink. Pale greys turn to mush, hairlines vanish, the spinner forces constant refreshes, and the old page ghosts through.
Do
Designed for the medium. Solid black, 2 px borders, big targets, a static status line instead of a spinner. One partial refresh draws it.
A trade-off the reader should own. Some readers hate the flash, others hate ghosting. Default to every few pages and make it a setting.
Do
Default to the system appearance; offer light, sepia and dark at minimum.
Soften dark themes: off-white text on near-black, around 10 to 12:1.
Let brightness go very low, and offer warmth on devices with front lights.
On e-ink: black, white, thick strokes, no motion, static status text.
Don't
Invert colours and call it dark mode (images and highlights break).
Use pure white on pure black for hours of text.
Use spinners, fades, transparency or light grey on e-ink.
Claim a warm filter "fixes" sleep; the evidence does not say that.
In the wild
Apple Books themesApple, 2022 redesign
Replaced a few page colours with named themes that combine background, font and weight (for example Original, Quiet, Paper, Bold, Calm, Focus), each customisable. A theme can bundle colour with type choices, so one tap changes the whole mood.
Kindle Paperwhite and OasisAmazon
Adjustable warm front light that can follow a schedule, plus a dark mode on newer models. On e-ink, "theme" includes the physical light.
reMarkablereMarkable, 2017 and later
An e-ink tablet whose UI is drawn in solid black and white with simple line icons and almost no animation. A whole product designed for the medium's limits feels calm rather than slow.
For the solo creator
Define each theme as a small set of tokens (background, text, muted text, highlight, link) and test every screen in all of them, including your highlight colour on dark and sepia, which is where most bugs hide. If you support Kindle or Kobo export, or a web reader that might be opened on an e-ink tablet (Boox devices run Android browsers), add a @media (monochrome) or a manual "e-ink" theme that removes motion and greys.
Common mistakes
Highlight colours that only work on white
The highlight yellow is picked on the light theme.
Pick highlight colours per theme. On dark, use a darker, less saturated tint with the text still readable on it.
Images blasting light in dark mode
Photos and white-background diagrams are left as they are.
Dim images slightly in dark mode (for example 85 percent brightness) and give diagrams transparent or theme-aware backgrounds.
Sepia with low contrast
Sepia text is chosen to look "vintage".
Keep sepia text dark enough for at least 7:1. Warm does not have to mean faded.
Check yourself
You are porting your reader's menu to an e-ink tablet. The menu slides in over 300 ms with a 40 percent grey backdrop. What should change?
Every animation frame on e-ink is a refresh that leaves ghosting; a grey backdrop dithers into noise. An instant, bordered menu in a fixed region needs one partial refresh. Consistency across devices (c) is less important than fitting each medium.
Exercise 6.1 45 minutes · on your own product
The four-light test
Use your product's main text screen in four situations: daylight by a window, an office, a dim room, and in bed in the dark.
In each, note glare, contrast, and how bright the screen feels relative to the room.
Check your theme tokens' contrast with a calculator; aim for 7:1 for body text and below about 15:1 for dark themes.
Grayscale your screen (OS accessibility setting) and look for anything that disappears: that is your e-ink risk list.
You're done when: you have notes from four lights, a contrast table for each theme, and a list of greyscale failures with fixes.
Beginner
Competent
Strong
Has a dark mode.
Tests in real light and fixes contrast extremes.
Also handles highlights, images and e-ink, and follows system appearance.
Part one recap: connect the ideas
A reader complains your app "feels tiring after 20 minutes". Which combination is the most likely cause, using what you learned in Part one and in The Human Mind?
Fatigue builds from repeated small costs: long return sweeps (measure), crowded lines (leading), glare (polarity and contrast), and attention breaks (chrome). Each of a, b and c is a matter of taste, not fatigue.
Part two
Finding your way in long text
A long text is a place, and readers need to know where they are in it, how far is left, how to jump, how to come back, and how to leave marks. Three chapters: progress and navigation, annotation, and the help that lives inside the text (footnotes, definitions, context).
7
Where am I, how far is left, where was I
Taught by Kindle (locations, time left, Whispersync), with Apple Books and the web
Progress in a long text answers three different questions: where am I, how much is left, and how do I get back? Each indicator answers some of them well and others badly, so pick the one that matches what your reader is deciding.
A printed book answers all three questions without any design: you feel the thickness of the pages in each hand, you see the page number, and you can put a finger or a ribbon in it. A screen removes every physical cue. The reader has no idea if the chapter has three pages left or thirty, which matters because people decide whether to keep reading based on what is left ("I'll finish this chapter, then sleep"). That decision is the real job of the progress indicator.
Reflowable text makes this harder. When the reader changes text size, page 112 becomes page 140, so pages are not stable addresses. Kindle's answer, from the start, was the "location": a number tied to a position in the text itself, independent of size. Locations are stable but meaningless as a sense of distance ("Loc 2,341 of 6,020" requires arithmetic). So Kindle also offers percent, real page numbers for books that have them mapped to a print edition, and time left in the chapter or book, estimated from your own reading speed.
No single indicator does everything. The best readers show one quiet, chapter-scoped indicator by default ("time left" or "pages left in chapter") and let the reader cycle to others with one tap on the footer.
Chapter-scoped beats book-scoped
The decision readers make most often is "do I have time to finish this bit?", and the natural bit is the chapter. So chapter-scoped progress (pages or minutes left in the chapter) is usually the most useful default. Book-wide percent is better for the rarer question "how far through am I?", and belongs in the menu or as an alternative. Time estimates must be personal and humble: compute them from this reader's pace on this book, show them only after a few pages of data, and round generously ("about 10 minutes").
One subtle rule: progress must never move backward when nothing changed. If changing text size makes "page 112" jump to "page 140", say why, or better, use an indicator that does not jump. Readers who see numbers jump stop trusting all the numbers.
Tables of contents and scrubbers
The table of contents is the map. It should show the current chapter highlighted, allow jumping with one tap, and in long books, show progress within each chapter or at least which ones are finished. A scrubber (a slider across the whole book) is good for big jumps and terrible for precision, so it needs two things: a preview of where you will land (chapter title and page or location) shown while dragging, and a way back to where you were. Readers who scrub to check something and then cannot find their place again are a classic support complaint. Kindle's "Page Flip" (2016) solved this with a separate peek mode: you browse other pages in a panel while your reading position stays pinned.
Three additions make scrubbing safe: chapter ticks, a live landing preview, and a persistent "back to" chip that stays until the reader starts reading in the new place.
Coming back: sync and "where was I"
Readers switch devices: phone on the train, e-reader in bed, laptop at lunch. Position sync (Kindle calls it Whispersync) means the book opens where they stopped, on any device. The design decisions are in the edge cases. When two devices disagree, which wins? Kindle's approach is to ask, offering to jump to the furthest or most recent page read on another device, rather than silently moving the reader. Silent jumps forward can spoil a novel; silent jumps back lose a place. Ask once, clearly, with both positions.
The second part of coming back is memory. If someone returns after two weeks, they may remember the page but not the story. A light "where was I" cue helps: the last sentence they read highlighted for a moment, the chapter title and a line on how long ago they were here. Some apps go further and offer a recap of previous chapters; if you do this (with or without AI), make it opt-in, clearly marked, and spoiler-safe by only using text before the reader's position.
Don't
Synced
…and so the regiment marched out at dawn, and Lydia watched from the window until the last red coat had gone…
Moved you to page 301 (from another device).
Silent jump. The reader lands 80 pages ahead, past a scene they had not read. A tiny toast after the fact does not undo the spoiler.
Do
You read further on your Kindle
Page 301 · Chapter 15, last night at 23:10
Go to page 301Stay on 221
Ask once, with context. Device, place, time. The reader decides; the app remembers the answer for this book.
Do
Default to chapter-scoped progress; let a tap on the footer cycle formats.
Use stable text positions (locations or offsets) for sync, bookmarks and citations.
Show a landing preview while scrubbing and a "back to" chip after a jump.
Ask when synced positions disagree; never jump silently.
On return after a long gap, briefly mark the last sentence read.
Don't
Show a progress number that jumps around when settings change.
Estimate "time left" from a global average on page one.
Make the TOC the only way to jump, or the scrubber the only way back.
Generate recaps that use text beyond the reader's position.
In the wild
Kindle reading progressAmazon
A tap on the bottom-left footer cycles between location, page (when available), time left in chapter, time left in book, and nothing. One quiet slot, many answers, chosen by the reader.
Kindle Page Flip2016
Lets you browse other pages and a whole-book overview while your reading position stays pinned and one tap returns you. Separate "looking around" from "moving", and jumping becomes safe.
Long-form web articlesvarious publishers
Many show "12 min read" under the headline and a thin progress bar at the top while scrolling. Fine for articles; for books, the minute estimate must be personal and chapter-scoped to be useful.
Common mistakes
Storing position as scroll pixels
It is the easiest value to read.
Store the nearest paragraph or character offset plus a small text fingerprint. Restore by finding that text, then scroll to it.
Progress bars that hide the next line
The bar is pinned over the content area.
Put it in the margin above or below the text block, at 2 to 3 px, in a muted colour.
The scrubber with no way back
Built as a plain slider.
Remember the pre-scrub position and show a "Back to" control until the reader turns a page or scrolls in the new place.
Check yourself
A reader opens your app at 23:00 and wants to know if they can finish the chapter before sleeping. Which footer helps most?
The decision is chapter-scoped and time-based. Locations and book-wide percent require arithmetic and answer a different question. A personal time estimate answers it directly.
Exercise 7.1 45 minutes · on your own product
Leave and come back
In your product (or a reading app you use), read or work to the middle of a long item.
Close it. Change something: rotate, resize the window, change text size, open on another device.
Reopen. Record: did you land on the same sentence? How long did it take to find your place?
Design the fix: what you store as position, what you show on return, and what you do when two devices disagree.
You're done when: you have a test log of four changes and a one-page design of position storage and return.
Beginner
Competent
Strong
Notices the place is lost.
Designs stable position storage and a return cue.
Also covers device conflicts, long gaps and scrub-and-return.
8
Highlights, notes and getting them out
Taught by Readwise, Kindle and Hypothesis, with the margin notes of every serious reader
Annotation turns reading into thinking. Make the mark fast and precise, keep the note next to its text, and treat export as a core feature, because highlights are only worth something when they can leave your app.
People highlight for three reasons: to remember, to come back, and to use later (quote, cite, write). The first two happen inside your app; the third happens somewhere else, in a notes app, a document, an essay. If your highlights cannot leave, the reader eventually learns that highlighting in your app is a dead end, and stops. That is why a whole company, Readwise (founded in 2017), exists to pull highlights out of Kindle, Apple Books, Instapaper and other apps and send them into tools like Obsidian, Notion and Logseq, with a daily review email that resurfaces old highlights. Readers paid for an export layer the reading apps did not build.
Most apps stop at "highlight". The value is at the right of this diagram: export with context and a link that reopens the source at that sentence.
Selection on touch is the hard part
On a desktop, selecting text with a mouse is precise. On a phone, your fingertip covers several words, so selection needs help. The established pattern: long-press selects a word, handles appear at both ends, dragging a handle shows a magnified view (a loupe on iOS) of what is under your finger, and the selection snaps to word boundaries. Good reading apps add one more step: a single tap on the highlight action creates it immediately in the last-used colour, with colour and note as secondary options. Every extra tap between "I want to keep this" and "kept" costs highlights.
Highlight first, everything else second. The default action is the leftmost and widest; the colour dot uses the last colour chosen.
Lab: highlight and note
I went to the woods because I wished to live deliberately, to front only the essential facts of life, and see if I could not learn what it had to teach, and not, when I came to die, discover that I had not lived.
Our life is frittered away by detail. An honest man has hardly need to count more than his ten fingers, or in extreme cases he may add his ten toes, and lump the rest. Simplicity, simplicity, simplicity!
Time is but the stream I go a-fishing in. I drink at it; but while I drink I see the sandy bottom and detect how shallow it is. Its thin current slides away, but eternity remains.
Select any words in the passage, type a note if you like, then press "Highlight selection" (or use the keyboard button). Notice that the note is attached to its quote, and that the export includes the source and position, so the highlight can find its way home. Text: Thoreau, Walden, 1854.
Margin notes versus popovers
Where does a note live after it is written? On a wide screen, the margin is best: the note sits beside its text, visible at a glance, the way a pencil note does. On a phone there is no margin, so notes become an icon or underline that opens a popover. Both are fine if the mark in the text shows that a note exists (a small icon, a different underline) and the popover never covers the highlighted text itself.
Wide screen: margin
Note visible at a glance, never covering text.
Phone: marker and popover
Dot marks the note; popover opens below, not over.
Do
Make highlight a one-tap action from a selection, in the last-used colour.
Snap selections to word boundaries; allow extending across pages.
Show notes in the margin when there is room, as markers plus popovers when not.
Export highlights with the quote, note, source title, author, position and a deep link.
Offer export in open formats (Markdown, plain text, CSV) and sync to common tools.
Don't
Bury highlight behind a menu of eight equal options.
Offer ten colours with no meaning attached; three to five is plenty.
Cap exports or make them a paid upsell without saying so up front.
Show other people's highlights by default inside the text.
In the wild
Readwise and ReaderReadwise, 2017 and 2022
Readwise imports highlights from many readers and resurfaces them in a daily review; Reader (its own reading app) puts highlighting and tagging at the centre and exports to note tools. The value of a highlight grows when it leaves the app and comes back later.
KindleAmazon
Highlights and notes sync to your account and appear on Amazon's notebook page; on e-readers they are also appended to a plain text file, "My Clippings.txt". Kindle also shows "Popular Highlights" where many readers marked the same passage. A plain text file is the most durable export there is. Social highlights should be an option, not a default.
HypothesisHypothesis, open source
Web annotation in a sidebar beside any page, with notes anchored to text even if the page changes slightly. Robust anchoring (quote plus surrounding text) survives edits better than offsets alone.
For the solo creator
Store each highlight as: quote text, a few characters of text before and after (a prefix and suffix), a position offset, the note, colour, and timestamps. That is the shape the W3C Web Annotation model uses for text quote selectors, and it lets you re-find highlights even when the text is edited. Your Markdown export is then a ten-line function, and it is the feature heavy readers will mention when they recommend you.
Common mistakes
Highlights stored by offset only
Offsets are easy to compute.
Also store quote, prefix and suffix. If the text changes, search for the quote near the old offset.
The menu covers the selection
Menus default to appearing at the touch point.
Place it above the selection (or below if there is no room) and never over the selected words.
Export as an afterthought
It does not show in demos.
Treat it as a first release feature. Heavy readers check for it before they commit to a reader.
Check yourself
A heavy reader is choosing between your reading app and a competitor. Both look and read the same. What is most likely to tip the decision?
For heavy readers, highlights are raw material for later work. Getting them out with context is a reason to choose and to stay. More colours, social counts and animation are minor.
Exercise 8.1 40 minutes · on a reader you use
Follow one highlight home
Highlight a sentence and add a note in your main reading app, on your phone.
Count taps from "I want to keep this" to "kept, with note".
Now try to get it into your notes tool with the source and a link back. Count steps and note what context is lost.
Design the shortest path for your own product: selection menu, default action, export format (write a sample Markdown export).
You're done when: you have tap counts, a list of lost context, and a sample export file for your product.
Beginner
Competent
Strong
Notes friction.
Designs a short path and a complete export.
Also designs robust anchoring and a deep link that reopens the source.
9
Footnotes, definitions and help inside the text
Taught by Edward Tufte (sidenotes), with Gwern Branwen, Wikipedia and Kindle X-Ray
Any help a reader needs mid-sentence (a footnote, a definition, a translation, who a character is) should appear next to the text, be readable in a glance, and disappear without moving the reader. Never send them to another page to get it.
The printed footnote was a clever answer to a physical problem: you cannot put the note next to the word, so you put it at the bottom of the same page, and the eye drops and returns. Endnotes, at the back of the book, were a cheaper answer that made notes much harder to read. On the web, the default became the endnote: a superscript link jumps to the bottom of the article, and a little arrow jumps back. That breaks the reading flow twice and, on long pages, lands you in a pile of notes with no sense of which is yours.
Screens can do better, in two ways. Popover notes open in place, right where you tapped, and close without moving the page. Sidenotes, which Edward Tufte uses in his books and which Tufte CSS and Gwern.net brought to the web, sit in a wide margin beside the line they belong to, so you can read them without any action at all. Sidenotes need a wide screen; on narrow screens they must collapse into popovers or inline toggles.
Three footnote models
Thoreau lived at Walden Pond for two years and two months, though the book compresses it into a single year, from summer to spring.
From July 1845 to September 1847.
He explains the choice of a single year for the sake of convenience.
Thoreau lived at Walden Pond for two years and two months, though the book compresses it into a single year, from summer to spring.
The paragraph continues here, and the reader never moved. Tap the number again, or anywhere else, to close.
Thoreau lived at Walden Pond for two years and two months1, though the book compresses it into a single year, from summer to spring2.
With sidenotes there is nothing to tap. The eye drifts right when curious and returns on its own.
Jump: press a number. The pane scrolls to the note list, then "back" returns. Feel the two context switches.
Popover: the note opens in place below the line. Nothing moves. Good for phones.
Sidenote: notes live in the margin beside their line. Zero interaction on wide screens; below 560 px wide this collapses beneath the text.
Responsive notes. The same note markup can render as a sidenote on wide screens and a popover on phones; that is how Tufte CSS and Gwern.net work.
Definitions, translation and "who is this?"
The same rule applies to every in-text help. Kindle's built-in dictionary opens a card at the bottom of the screen when you long-press a word, with a link to the full entry. Its Word Wise feature (2014) goes further for learners, printing short definitions in small type above harder words, with a slider for how many words get hints. X-Ray (2011) lets you see characters, places and terms in a book, with every mention, which is a memory aid for long novels with large casts. Wikipedia's Page Previews show a summary card when you hover a link, so you can decide whether to leave the article at all.
The design principles they share: the card shows the answer in its first line; it appears near the word without covering it; one tap or Escape dismisses it; and nothing about the page moves. If the reader wants more, there is a link to go deeper, which is now a deliberate choice rather than a forced trip.
Answer first, depth on request. The card covers the bottom of the page, never the word, and goes away with any tap on the text.
Do
Show notes and definitions in place: sidenotes when there is a margin, popovers when not.
Put the answer in the first line of any help card.
Dismiss with one tap, a tap elsewhere, or Escape.
Keep a back link on jump-style notes and mark where the reader came from.
Don't
Use tiny superscripts as the only tap target on a phone (pad them to at least 24 px).
Open definitions in a new screen or a browser tab.
Cover the word being explained.
Auto-show help that the reader did not ask for (except opt-in aids like Word Wise).
In the wild
Tufte CSSDave Liepmann, open source
A stylesheet that brings Tufte's sidenotes and margin notes to the web, collapsing them to tap-to-reveal on narrow screens. The responsive note is a solved problem; you can study the source.
Gwern.netGwern Branwen
Long essays with sidenotes on wide screens, and recursive popups for links and footnotes on hover. Deep reading sites can make every reference inspectable without leaving the page.
Kindle Word Wise and X-RayAmazon, 2014 and 2011
Optional hints above hard words, and an index of characters and terms per book. Context aids can be on by choice, with a dial for how much help you want.
Common mistakes
Superscripts as tap targets
The footnote marker is styled for print.
Give it padding so the tap area is at least 24 by 24 px, while the visible number stays small.
Popovers that scroll the page
Focus moves into the popover and the browser scrolls to it.
Position the popover in view without moving the text; use preventScroll when focusing.
Check yourself
Your essay site has 40 footnotes per article, many of them a sentence long. Readers mostly use laptops, some phones. What should you build?
Short, frequent notes on wide screens are ideal sidenotes; on phones, popovers keep the place. Hover-only (c) fails on touch and for keyboard users. Inline parentheses (d) bloat the main text with 40 asides.
Exercise 9.1 60 minutes · build
Build a responsive note
Take one of your own long pages (docs, blog, help) with at least three asides.
Mark them up once as notes. Render them as sidenotes above a breakpoint and as popovers below it.
Make every marker keyboard-focusable and every popover dismissible with Escape.
Test on a phone: can you open and close a note without the page moving?
You're done when: one page works with sidenotes on desktop and popovers on phone, keyboard included.
Beginner
Competent
Strong
Popovers on one device.
Responsive sidenote to popover, keyboard accessible.
Also adds definitions or link previews with the same rules.
Part two recap: connect the ideas
Which single data decision helps progress sync, bookmarks, highlights and footnote back-links all at once?
Every navigation feature in Part two needs an address that survives reflow, device changes and small text edits. Pages, pixels and percentages all change with layout. A text anchor does not. This is the same "model before view" idea from Structure & Interaction.
Part three
Reading the web, calmly
Most reading now happens on the web and in feeds, where the text arrives wrapped in navigation, ads, and an endless supply of more. Two chapters: how reader modes and read-later apps rescued the article, and how to design a feed that ends.
10
Reader mode and read-later
Taught by Arc90's Readability, Safari Reader, and Marco Arment (Instapaper)
Reader modes exist because publishers' pages failed readers. They work by finding the article in a noisy page and re-setting it with good defaults. Read-later apps add time: save now, read when you have attention. If you publish text, your page should not need either.
In 2009, the Arc90 lab released Readability, a bookmarklet that took a cluttered web page and showed just the article in a clean column. It spread quickly because it solved a pain everyone had. Apple built Safari Reader on top of it in 2010; Mozilla later wrote its own Readability.js for Firefox's Reader View, and now every major browser has some form of reader mode. That history is a verdict: given the choice, readers removed nearly everything publishers put around the text.
How does a reader mode know what the article is? It scores blocks of the page. Paragraph-heavy blocks with lots of text, commas and few links score high; blocks with many links, short text, or class names like "sidebar", "comment", "ad" or "footer" score low. The highest-scoring container is taken as the article, cleaned, and re-set with the reader's preferred type. The same heuristics tell you how to write pages that reader modes, read-later apps, and assistive technology handle well: put the article in an <article> element, use real paragraphs and headings, mark the byline and date, and keep navigation out of the main content.
Semantic HTML is reader-mode friendly HTML. The heuristics reward exactly what accessibility and SEO also reward: real articles, paragraphs and headings.
The same article, two ways
THE DAILYNewsOpinionTechSportVideoSubscribeSign in
Advertisement · 728 × 90
Why we went to the woods
By A. Writer · 4 min read · 128 comments · Share · Save · Listen
I went to the woods because I wished to live deliberately, to front only the essential facts of life…
Recommended for you ›
Our life is frittered away by detail. An honest man has hardly need to count more than his ten fingers…
Ad
Newsletter: sign up!
Cookie preferences · Accept all · Manage
Why we went to the woods
A. Writer · 4 min read
I went to the woods because I wished to live deliberately, to front only the essential facts of life, and see if I could not learn what it had to teach.
Our life is frittered away by detail. An honest man has hardly need to count more than his ten fingers, or in extreme cases he may add his ten toes, and lump the rest.
Publisher page: count the things that are not the article. In this mock it is ten, and the article starts a third of the way down.
Reader mode: headline, byline, reading time, text. The publisher's own page could look like this, and keep its brand in the headline type and a footer.
Read-later: separating finding from reading
Marco Arment built Instapaper in 2008 for a problem he had himself: he found long articles during the day, when he had no time to read them, and wanted to read them later on his phone during idle time like a commute. The insight is that finding and reading happen in different states of attention. Finding is fast and fragmented (a link in a chat, a tab during work). Reading needs a quiet block of time. A read-later app is a bridge between the two: one tap to save, then a calm, offline, consistently set reading surface later.
The design of the save action matters as much as the reader. It must be instant and work everywhere: browser extension, share sheet, email forwarding, an API. Saving should confirm quietly and never ask questions (tags and folders can come later). Then the queue must not become a guilt pile. A list of 900 unread articles is a to-do list nobody can finish. Good read-later apps help you let go: archive with one swipe, sort by length so you can match an article to the time you have, and make it fine to never read something.
The queue is the product's middle. Design it to be emptied and forgiven, not to grow.
Do
Publish articles in semantic HTML so reader modes and read-later apps parse them perfectly.
Make save one tap from everywhere, with a quiet confirmation and no questions.
Show length (minutes) in the queue and allow sorting by it.
Make archiving guilt-free: one swipe, no "are you sure".
Offer full export (titles, URLs, highlights) in open formats.
Don't
Block reader modes or truncate articles in the page source.
Ask for tags or folders at save time.
Display "847 unread" in red on the queue.
Lock saved articles in a format only your service can read.
In the wild
Readability to Safari ReaderArc90, 2009; Apple, 2010
A lab experiment that extracted articles became a feature in a major browser within a year. When users build or install tools to remove your design, read it as research.
InstapaperMarco Arment, 2008
One-tap saving from the browser, then a clean, offline reader with a few typography settings. Separating capture from consumption is a pattern that applies to many products, not just reading.
Pocket and Omnivoreshut down 2025 and 2024
Two well-used read-later services closed (Omnivore in late 2024, Mozilla's Pocket in 2025), giving users a limited window to export. A reader's saved library is years of their life. Export is not optional; it is your promise that you are not a trap.
For the solo creator
You can add reader-mode friendliness to your own site in an hour: one <article>, a <h1>, a byline with rel="author" or schema markup, a <time> element, real <p> tags, and navigation outside the article. Then test it in Safari Reader and Firefox Reader View. If your own reading surface already looks like reader mode, you have done the work.
Common mistakes
Div soup articles
Content comes from a CMS that wraps everything in generic containers.
Output semantic elements. Reader modes, screen readers and search engines all depend on them.
The infinite queue
Saving is easy and the app rewards it.
Show a calm total in time ("about 3 hours saved"), suggest archiving items older than a few months, and never shame.
Check yourself
Your blog's analytics show many visitors use Safari Reader on your posts. What is the best response?
Readers are telling you what they want from your page. Make it the default, and make sure the reader view still works for those who prefer it.
Exercise 10.1 40 minutes · on your own site
The reader-mode diff
Open your longest page in normal view and in Safari Reader or Firefox Reader View. Screenshot both.
List everything the reader mode removed. Mark each item: needed, nice, or noise.
Remove or move the noise in your real page. Keep needed items but make them quieter.
Check the reader view still extracts the title, byline and all paragraphs correctly.
You're done when: you have before and after screenshots and a page that reader mode parses perfectly.
Beginner
Competent
Strong
Lists differences.
Removes noise and fixes markup.
Your normal page is now nearly as calm as reader view and keeps its identity.
11
Designing a calm feed
Taught by Silvio Rizzi (Reeder), Brent Simmons (NetNewsWire), with Feedbin and Instagram's "all caught up"
A feed can be a tool you use or a slot machine that uses you. Calm feeds are chronological, finite, under the reader's control, and free of counters that create guilt. They end, and say so.
RSS readers are the old, honest version of the feed: you choose sources, items arrive in time order, and you read until there are no more. Social feeds took the same shape and changed three things: an algorithm chooses what you see, the list never ends, and counters and badges invite you back. Those three changes are the mechanism of compulsive use, covered in depth in Honest & Calm and The Human Mind. Here we look at the practical design of a feed for reading that respects attention.
A loop with an exit. The finite feed has a defined set ("since last visit"), a clear end state, and nothing pulling you past it.
The unread count problem
Unread counts look like neutral information. In practice, a big red number is a to-do list you did not write. If someone subscribes to 80 feeds and is away for a week, they return to "1,284 unread", and the reading app becomes a source of guilt. Many people end up declaring "RSS bankruptcy": marking everything read and starting over, or quitting. Silvio Rizzi's 2024 redesign of Reeder took a strong position: no unread counts at all, a single timeline that remembers where you stopped, and the freedom to skip. Other readers keep counts but let you hide them, or show them in muted grey without a badge on the app icon.
The same feed, anxious and calm
All articles
1,284
Daring Fireball
212 unread
212
The Verge
604 unread
604
Kottke
88 unread
88
Hacker News
380 unread
380
Mark all as read? You will lose your place.
Since yesterday evening
The calm web, revisited
An essay site · 8 min
09:12
Notes on paper notebooks
A personal blog · 4 min
08:40
Weekly newsletter #112
A newsletter · 6 min
07:05
You're all caught upOlder items are still in the timeline if you want them. High-volume sources are grouped in a daily digest.
Anxious: five red badges, a total in four digits, and a destructive "mark all read" as the only relief.
Calm: a defined window ("since yesterday evening"), reading time per item, an explicit end, and noisy sources moved into a digest so they do not drown the rest.
Tools for a calm feed
Beyond counts, a handful of design moves change how a feed feels. Group high-volume sources (a news site posting 80 items a day) separately from low-volume personal blogs, or the blogs disappear. Offer a "since last visit" or "today" scope as the default view, rather than all time. Let the reader mute keywords and sources for a while without unsubscribing. Show reading time per item. Make "skip" and "mark older as read" gentle and undoable. And give newsletters a home: many readers now forward newsletters into their feed reader (Feedbin offers a dedicated email address for this; Readwise Reader and others do too), taking reading out of the inbox, where every newsletter competes with work email.
Quiet voices first. Without routing, one high-volume source buries the friends whose posts you most want to read.
Do
Default to chronological order and a bounded scope (since last visit, today).
End the feed with a clear "all caught up" state.
Let readers hide counts and remove badges from the app icon.
Separate high-volume sources from personal ones.
Make skip, mute and "mark older read" gentle and undoable.
Don't
Show red unread totals by default.
Append "suggested" items after the reader's own sources end.
Send push notifications for new articles by default.
Punish skipping (no streaks, no "you missed 40 stories").
In the wild
Reeder (2024)Silvio Rizzi
A redesign around a single timeline without unread counts, which remembers your position and lets you scroll back in time; the earlier app continued as Reeder Classic. Removing a convention everyone else keeps can be the product's main idea.
NetNewsWireBrent Simmons, since 2002; open source
A free, native Mac and iOS RSS reader with a classic three-pane layout and a "Today" smart feed. The classic model, done carefully and without growth tricks, is still excellent.
Instagram "You're all caught up"Instagram, 2018
A marker shown when you have seen all new posts from accounts you follow since your last visit. Even an engagement-driven product found value in telling people they were done. (It then offered suggested posts below, which shows the tension.)
For the solo creator
Any product with a list of new things (notifications, inbox, activity log, changelog) is a feed. Apply the same rules: bounded scope, chronological, a clear end, counts that inform without nagging. A one-person product cannot compete on engagement tricks anyway, and calm is a real reason people switch.
Common mistakes
Counts as decoration
Counts are free to show and look informative.
Ask what decision the count supports. If none, hide it or make it opt-in.
The empty end
The end of the list is just whitespace.
Design the end state: say they are caught up, show when new items usually arrive, offer one calm next step (or none).
Check yourself
Users of your feed reader say they "dread opening it after a holiday". What change helps most?
The dread comes from a big, undifferentiated pile. Bounding it and routing noisy sources makes the return manageable without discarding the quiet sources. Mark-all-read (a) throws out what they wanted; reminders (c) add guilt; ranking (d) removes control and predictability.
Exercise 11.1 45 minutes · on your own product
Find your feeds and give them an end
List every list of "new things" in your product: notifications, activity, inbox, updates.
For each, write: its scope, its order, whether it has a count or badge, and what its end looks like.
Redesign one: bounded scope, chronological, a designed "caught up" state, and counts that are opt-in.
Sketch the end state at phone size.
You're done when: you have an inventory table and one redesigned feed with its end state sketched.
Beginner
Competent
Strong
Lists feeds.
Redesigns one with scope and an end.
Also routes high-volume items and removes guilt counters across the product.
Part three recap: connect the ideas
What do reader mode, read-later and a calm feed have in common, in terms of chapter 1's three jobs?
Reader mode removes visual competition, read-later moves reading to a time with attention, and a calm feed removes the endless supply. All three protect the reader's sustained attention.
Part four
Writing tools
Writing software is reading software with a cursor, plus one terrifying responsibility: the words do not exist anywhere else yet. Four chapters: the blank page and focus, the editor model (Markdown, WYSIWYG, blocks), storage and safety, and writing across contexts and with other people.
12
The blank page, focus and typewriter scrolling
Taught by Oliver Reichenstein and iA (iA Writer), with Hemingway Editor and every writer who has stared at a cursor
A writing tool should make starting easy, keep the writer's eyes where the words are being made, and keep judgement (editing, styling, counting) out of the way until the writer asks for it. Drafting and editing are different modes; design them as different modes.
The blank page is hard because writing is two activities at once: generating and judging. Generating needs momentum; judging kills it. Many writers' advice ("write drunk, edit sober" is a popular misattribution; the idea is older and widely shared) comes down to separating the two. Software can help or hurt. A toolbar full of fonts, styles and a live word count is an invitation to judge while generating. A calm window with one well-set typeface and nothing else is an invitation to keep going.
iA Writer, released for iPad in 2010, made this its whole product. It opened to a blank document in one carefully tuned typeface, with no font choice at all. Its Focus Mode dimmed everything except the current sentence (later also the current paragraph), so the writer's attention stayed on the line being made. Its typewriter mode kept that line at a fixed height on screen, so the eyes never drifted to the bottom edge while typing. Those ideas have since been copied widely, which is the best evidence they work.
Lab: focus mode and typewriter scrolling
0 of 250 words
Type, click around, and move the cursor with the arrow keys. In sentence focus only the sentence with the cursor stays dark. Turn typewriter scrolling off and type a few more lines: the cursor creeps toward the bottom of the window, and so do your eyes. The goal bar is deliberately small and below the page, not inside it.
Fixed eye height. The dashed line is where your gaze rests. Typewriter scrolling moves the page, not your eyes, like a real typewriter's carriage.
Judgement on demand: syntax highlighting for prose
Once there is a draft, the writer switches to editing, and now the software can help judge. iA Writer's Syntax Highlight (introduced with iA Writer Pro) colours parts of speech: adjectives, nouns, adverbs, verbs, conjunctions. You can switch on just adverbs, for example, and see at a glance where you leaned on "very" and "really". The Hemingway Editor highlights long sentences, passive voice and adverbs. Both share a design principle: they are off by default, or easy to switch off, because their colours are judgement, and judgement belongs to the editing pass.
Our lifeis fritteredaway by detail. An honestmanhashardlyneed to count more than his ten fingers, or in extremecases he may add his ten toes, and lump the rest.
nounsverbsadjectivesadverbs
A drawn example of parts-of-speech colouring (hand-tagged here, in this course's colours, not iA's). Switch it on only to edit; for drafting, it is noise.
Don't
Editing tools during drafting. Every control, count and red squiggle is a small invitation to stop generating and start judging.
Do
Drafting mode. One column, focus on the current sentence, everything else available but invisible until asked.
Do
Open to a ready cursor in a new or last document, never to a dialog or a template picker.
Offer focus (sentence or paragraph) and typewriter scrolling as toggles with keyboard shortcuts.
Keep editing aids (style checks, highlighting, counts) off or quiet while drafting.
Pick one excellent default writing face at the right size; make font choice optional.
Don't
Underline every possible grammar issue while the writer is mid-sentence.
Show a big live word count beside the text.
Ask for a title or a file name before the first word.
Make distraction-free mode hide the save status; writers need to know their words are safe.
In the wild
iA WriteriA, 2010 to now
Focus Mode, typewriter scrolling, Syntax Highlight and Style Check, all switchable, around a single tuned typeface. Each feature serves either drafting or editing, and the two never fight.
Hemingway Editor2013 to now
Paste or write text and it colours hard-to-read sentences, adverbs and passive voice, with a readability grade. An editing tool, explicitly: it is most useful after the draft exists.
Ulysses and ScrivenerThe Soulmen; Literature & Latte
Both offer distraction-free and typewriter modes inside larger writing environments. Even complex tools need a "just the text" state.
For the solo creator
Your product probably has small writing surfaces: a notes field, a comment box, a description editor. Apply the same ideas at small scale: an autofocused field, generous height, a calm font size of at least 16 px, no toolbar until text is selected, and visible save state. And when you write your own docs and changelog, draft in a focus mode and edit separately. You are the writer too.
Common mistakes
Focus mode that hides the save state
"Distraction-free" is interpreted as "remove everything".
Keep one tiny, quiet sign that work is saved, or show it on any mouse movement.
Typewriter scrolling that jumps
Scroll is snapped instantly on every keystroke.
Move the page only when the line changes, with a short ease (under 150 ms) or none for reduced motion.
Spell-check as a siren
Platform spell-check is enabled with default red squiggles.
Keep spell-check but let writers hide marks while drafting, and use a muted underline colour.
Check yourself
A writer says your editor "makes them second-guess every sentence". What is the most likely cause?
Second-guessing is judgement intruding on generation. Move judgement tools to an explicit editing mode or make them quiet until asked.
Exercise 12.1 45 minutes · writing practice + design
Draft, then edit, in two modes
Write a 300-word changelog or help article for your product in a focus mode (iA Writer, or any editor with focus and typewriter modes) with all checks off. Do not delete anything while drafting.
Then switch on a style aid (Syntax Highlight for adverbs, or Hemingway) and edit.
Note what each mode made easier.
Apply one lesson to a text field in your own product (autofocus, height, no toolbar until selection, quiet save state).
You're done when: you have a draft, an edited version, notes on the two modes, and one improved text field shipped.
Beginner
Competent
Strong
Writes in a focus mode.
Separates drafting and editing and notes the difference.
Also improves a writing surface in their product with clear reasoning.
13
Markdown, WYSIWYG and blocks
Taught by John Gruber (Markdown), with Bear, Typora, Notion and Google Docs
Every editor makes a trade between seeing structure and seeing the result. Markdown shows structure as plain characters, WYSIWYG shows the result and hides structure, and block editors make structure into objects. Choose by who writes, what they produce, and where the text must go next.
John Gruber, with Aaron Swartz, released Markdown in 2004 as a way to write for the web in plain text that was readable as-is: *emphasis*, # heading, - list. Its genius is that the source is the document. Any text editor can open it in 50 years. Its cost is that you see the markup while writing, and newcomers do not know the syntax.
WYSIWYG ("what you see is what you get") editors, from word processors to Google Docs, hide the structure and show formatted text. They are easy to learn, but the structure is hidden in a format you cannot see, and it goes wrong in invisible ways: a heading that is really bold body text, a list that is really indented paragraphs, formatting that will not paste cleanly elsewhere.
Between them, hybrid editors (Bear, iA Writer's preview styles, Typora, Obsidian's live preview) keep Markdown as the source but style it as you type, often fading the markup characters. Block editors (Notion, and many tools since) turn each paragraph, heading, image or to-do into a separate object you can drag, convert and embed. Blocks are powerful for structured pages and databases; they make long flowing prose feel chopped, because selection, cursor movement and copy-paste work across block boundaries less naturally than across one continuous text.
One paragraph, four editor models
## Simplicity
Our life is frittered away by *detail*. Thoreau's advice:
- let your affairs be as two or three
- keep your accounts on your **thumb-nail**
## Simplicity
Our life is frittered away by *detail*. Thoreau's advice:
• let your affairs be as two or three
• keep your accounts on your **thumb-nail**
BIH1H2•1.Link
Simplicity
Our life is frittered away by detail. Thoreau's advice:
let your affairs be as two or three
keep your accounts on your thumb-nail
⋮⋮
Simplicity
⋮⋮
Our life is frittered away by detail. Thoreau's advice:
⋮⋮
• let your affairs be as two or three
⋮⋮
• keep your accounts on your thumb-nail
Type "/" for commands
Markdown: the source is the document. Portable forever, readable as-is, but you see every mark.
Hybrid: still Markdown underneath, but styled live with the marks faded. Bear, Typora and Obsidian's live preview work roughly like this.
WYSIWYG: no syntax to learn; structure is hidden in a format you cannot see, and toolbar buttons are the way in.
Blocks: every paragraph is an object with a handle. Superb for rearranging and embedding; continuous prose feels like a stack of cards.
The middle is popular for a reason. Hybrids keep the durable source and give most of the visual feedback. Product placement is approximate; many apps offer more than one mode.
If your writers…
Lean toward
Watch out for
Write long prose, care about files
Markdown or hybrid
Teach syntax gently: auto-format shortcuts, a cheat sheet one key away.
Are non-technical, write short docs
WYSIWYG
Paste from other apps; hidden formatting debris; real headings vs bold text.
Every target (HTML, DOCX, PDF, ePub) needs testing.
Do
Support Markdown shortcuts even in a visual editor (typing "# " makes a heading).
Make structure visible on demand (show markup, outline view).
Paste as clean text by default, with an option to keep formatting.
Keep selection and cursor movement continuous across paragraphs, even in block editors.
Don't
Invent your own markup dialect unless you must; every extension reduces portability.
Let bold text masquerade as headings (export and accessibility break).
Hide all structure with no way to inspect it.
Force block handles and slash menus on writers who only want prose.
In the wild
BearShiny Frog, 2016; Bear 2 in 2023
A hybrid Markdown editor with tags written inline as #tag, and markup styled as you type. Hybrid editing lets beginners and Markdown users share one surface.
NotionNotion Labs
Popularised the block editor with "/" commands, where any block can become another type or a database. Blocks shine for structured, mixed-media pages; prose writers often draft elsewhere.
Google DocsGoogle, 2006 to now
WYSIWYG with real-time collaboration, which later added Markdown auto-formatting shortcuts as an option. Even mainstream visual editors borrow Markdown's speed.
Common mistakes
Choosing the editor model by what is trendy
Block editors feel modern.
Choose by user, output and portability. A journaling app with blocks feels like filling a form.
Lossy round-trips
The editor stores rich JSON but exports Markdown imperfectly.
Write round-trip tests: import, export, re-import, compare. Fix every loss you can; document the rest.
Check yourself
You are building a journaling app for people who want their entries to outlast your company. Which editor model fits best?
Longevity means a format anyone can open without you: plain Markdown files. A hybrid editor gives a pleasant surface on top. Plain text (d) is durable but gives up headings and emphasis without need.
Exercise 13.1 45 minutes · comparison
Write the same page four ways
Write the same 200-word note with a heading, a list, a link and bold text in: a plain text editor (Markdown), a hybrid (Bear, Obsidian or Typora), Google Docs, and Notion.
Then copy each into an email and into a plain text file.
Record: speed of writing, what was confusing, what survived the copy.
Decide which model your product's main text field should use and why.
You're done when: you have a four-column comparison and a one-paragraph decision for your product.
Beginner
Competent
Strong
Tries the editors.
Compares speed, clarity and portability.
Also defines import, export and paste rules for their own editor.
14
Files, libraries, autosave, versions and export
Taught by iA Writer and Obsidian (files), Ulysses and Bear (libraries), with Ink & Switch's local-first essay
The first feature of a writing tool is that the words are safe. Decide where text lives (files the writer owns, or a library you manage), save continuously without asking, keep a history the writer can browse, and make leaving easy. Trust is the product.
Writers remember lost work for years. One lost paragraph changes how a person uses a tool forever: they start copying text to a second app "just in case", which is the opposite of calm. So safety is not a technical detail under the design; it is the design.
Where does the text live?
There are three broad models. In the file model (iA Writer, Obsidian, most code editors), each document is a plain file in a folder the writer chooses: they can open it in any other app, back it up with any tool, sync it with any service. The app is a lens on their files. In the library model (Ulysses, Bear, Apple Notes), the app manages storage itself, often a database or package, and offers organisation, search and sync that feel seamless; the cost is that text is less directly accessible, so export becomes essential. In the cloud model (Google Docs, Notion), documents live on a server, which makes collaboration and access from anywhere easy, but the writer depends on the service and the network.
No model is free. The question is which risks your writers accept, and what you do to reduce the others (export for libraries, offline for cloud, conflict handling for files).
The "local-first software" essay published by the research lab Ink & Switch in 2019 argued for a fourth path that combines them: data lives on the user's device first (fast, offline, owned), and syncs and collaborates through the cloud, often using data structures called CRDTs that merge concurrent edits without conflicts. For a solo creator, open-source libraries such as Automerge and Yjs make this far more practical than it used to be.
Autosave: never ask
"Do you want to save changes?" is a question the software should answer itself. Since Mac OS X Lion (2011), Apple's document model saves automatically and keeps versions; Google Docs saved continuously from the start. The design pattern: save after every pause (a second or two after typing stops) and on every blur or quit; show a quiet, truthful status ("Saved", "Saving…", "Offline, saved on this device"); and never show "Saved" when it is not true. If saving fails, that is the one time to be loud.
Don't
Save changes to "Draft 3"?
Your changes will be lost if you don't save them.
Don't SaveCancelSave
A trap with three doors. The writer must remember a decision the software could make, and one wrong click destroys work.
Do
Draft 3Saved · just now
Our life is frittered away by detail. An honest man has hardly need to count more than his ten fingers…
Version history · 14 versions today
Quiet, truthful status. Saving is continuous; closing is always safe; going back is a browsable history, not a dialog.
Versions the writer can understand
Autosave creates a new problem: the writer may want yesterday's paragraph back. A good version history is a timeline, browsable by time, with the ability to see a past version side by side, copy a paragraph out of it, or restore it as a new version (never destroying the current one). Automatic snapshots should be thinned over time (every few minutes today, hourly this week, daily after that), and writers should be able to name a version ("Sent to editor"), so the important moments stand out from the noise.
Dense near now, sparse in the past, named where it matters. This is the shape that makes history browsable instead of a wall of identical timestamps.
Export is a promise
For a library or cloud tool, export is how you prove you are not a trap. Offer full export of everything (not just one document at a time) in open formats: Markdown or plain text for content, with folders or tags preserved somehow, plus attachments. Offer publication formats (PDF, DOCX, HTML, ePub) for finished work. Ulysses, for example, is a library app whose export to many formats is a central feature. The read-later shutdowns in chapter 10 are the reminder: when a service ends, export is the difference between a nuisance and a loss.
Do
Save continuously after each pause and on blur, quit and backgrounding.
Show a truthful status, and be loud only when saving fails.
Keep browsable, thinned versions with optional names; restore as a new version.
Offer full export in open formats, including attachments and structure.
Work offline and sync later, with clear conflict handling.
Don't
Ask "Save changes?" on close.
Show "Saved" before the write is confirmed.
Silently resolve sync conflicts by discarding one side.
Make export per-document only, or paywall it.
In the wild
Obsidian2020 to now
Notes are plain Markdown files in a local folder (a "vault"); the app adds links, search and plugins on top, and paid sync is optional. Files-first can still feel like a rich app; ownership becomes a selling point.
UlyssesThe Soulmen
Keeps texts in its own library with iCloud sync, and can also add external folders of Markdown files; export to PDF, DOCX, ePub and HTML is central. A library model with strong export and an escape hatch earns trust.
Google Docs version historyGoogle
Continuous saving, a version timeline grouped by time, named versions, and restore. Collaboration made history essential; even solo writers benefit.
For the solo creator
Save to local storage first (IndexedDB in a web app, the file system or a local database on native), then sync. That gives instant saving, offline work and a backup when your server is down. Write an automated test that types, kills the app mid-save, and reopens. Build "export everything" in your first month, as a zip of Markdown files plus a JSON file of metadata. It is a weekend of work that answers the question every careful user asks before committing.
Common mistakes
Last-write-wins sync
It is the simplest server logic.
Detect conflicts. Keep both versions and let the writer merge, or use a CRDT library that merges automatically.
Saving only on a timer
"Every 30 seconds" sounds safe.
Also save on pause, blur, backgrounding and quit. Mobile operating systems kill apps without warning.
History you cannot read
Versions are stored but shown as a list of identical timestamps.
Group by time, show a preview or diff, allow names, thin old snapshots.
Check yourself
A writer edits the same note on a laptop (offline on a plane) and a phone. Both sync when the plane lands. What should your app do?
Any rule that discards one side (a, b) will eventually destroy real work. Blocking (c) leaves the writer stuck. Merging non-overlapping edits and preserving both sides of real conflicts keeps every word.
Exercise 14.1 60 minutes · on your own product
Try to lose your own words
In any text field in your product, type a paragraph and then: close the tab, kill the app, go offline, edit on two devices, and pull the network mid-save.
Record whether anything was lost, and what the status showed at each moment.
Write down where each piece of user text lives, and how a user could export all of it today.
Fix the worst loss first; add "export everything" to your roadmap with a date.
You're done when: you have a loss-test log, a storage map, and either a fix or a dated plan for each failure.
Beginner
Competent
Strong
Tests close and reopen.
Tests offline, kill and two devices; fixes losses.
Also ships truthful status, versions and full export.
15
Capture, desk and other people
Taught by Drafts (Greg Pierce), Scrivener, Ulysses, with Google Docs for collaboration
Writing happens in different places with different needs: a phone in a queue (capture), a desk with an hour (compose), and sometimes a shared document (collaborate). Design for the context: fast and forgiving for capture, deep and structured for composing, clear about who changed what for collaboration.
A thought that arrives in a queue has a life of about ten seconds. If your app needs five taps (open, pick a folder, new note, name it, type), the thought is gone. Drafts, by Agile Tortoise, is built on this observation: it opens to a blank text field with the keyboard up, every time, and decides where the text goes later through "actions" (send to email, append to a file, post somewhere). Apple Notes added quick notes from the lock screen and corner gestures for the same reason. Capture tools optimise for one metric: time from intent to typing.
The desk is the opposite. A novelist with a 90,000-word manuscript needs structure: chapters and scenes as separate pieces that can be reordered, research beside the draft, targets and progress. Scrivener's binder and corkboard are built for that; Ulysses' sheets and groups and its writing goals are a lighter version. Here the metric is how well the tool holds a big, changing structure.
Different contexts, different tools, or different modes of one tool. The joins (capture to inbox, inbox to desk, desk to out) are where most writing apps lose people.
Counts, goals and the danger of the number
Word counts help writers who work to length (articles, essays, books) and to habit (500 words a day). They hurt when they become the point. The design answer is to make counts available, scoped and quiet: a count for the selection, the document and the session; a goal the writer sets themselves; progress shown as a small ring or bar that fills, not a number that flickers with every keystroke. Ulysses shows goals as a small circle that fills as you write; Scrivener has project and session targets. Neither puts a giant counter in the text area.
Peripheral, not central. A ring can be read from the corner of the eye; a number demands to be read.
Writing with other people: the basics
Collaboration adds three needs to a writing tool. Presence: who else is here, and where (named cursors and selections). Attribution: who changed what, and when (history per author). And negotiation: proposing a change without imposing it. Google Docs set the expectations: live cursors, comments anchored to text, and "suggesting" mode, where edits appear as proposals the owner accepts or rejects. Comments and suggestions are different tools. A comment discusses; a suggestion changes. Making that difference visible saves a lot of confusion.
Comment
Our life is frittered away by detail.
Asha · Is "frittered" too old-fashioned for our readers?
Discusses, changes nothing. Anchored to a range; resolved when the question is answered.
Suggestion
Our life is fritteredwasted away by detail.
Ashasuggested a changeAcceptReject
Proposes a change. Visible as deletion and insertion, owned by its author, decided by the writer.
Do
Make capture open to a ready cursor in under two seconds, with no required choices.
Provide an inbox and batch sorting for captured text.
Scope counts (selection, document, session) and show goals as quiet progress.
Keep comments and suggestions visually distinct; attribute every change.
Don't
Ask for a folder, title or tag before the first word on mobile.
Put a large live word count in the writing area.
Let collaborators' cursors and avatars cover the text being written.
Notify every collaborator on every keystroke-level change.
In the wild
DraftsAgile Tortoise
Opens to a new blank draft with the keyboard ready; text is sent onward with configurable actions. "Where does it go?" is answered after writing, not before.
ScrivenerLiterature & Latte, 2007
A binder of documents and folders, a corkboard of index cards, research inside the project, and "compile" to produce the final format. Long works need structure tools that prose-only editors do not have.
Google Docs suggesting modeGoogle
Edits become proposals with author names, accepted or rejected individually. Separating "propose" from "change" lets people edit each other without fear.
For the solo creator
Do not build real-time collaboration until people beg for it; it is one of the hardest features in software. Start with what one person needs across contexts: fast capture on mobile, a calm desk mode, and sharing a read-only link or exporting for others to comment on elsewhere. If you do build it later, use a proven CRDT library rather than inventing your own merge logic.
Common mistakes
One interface for every context
The desktop editor is shrunk onto the phone.
Design the mobile surface for capture and light editing first; keep deep structure tools for larger screens.
Goals that punish
Streaks and red "missed" days seem motivating.
Let writers set and pause goals, celebrate quietly, and never shame a missed day.
Check yourself
Your notes app's mobile version opens to a list of folders. Users say they "never manage to capture ideas" with it. What is the single best change?
Capture fails when there are decisions before typing. Opening straight to a cursor and deferring organisation fixes it. Templates (c) and tutorials (d) add decisions.
Exercise 15.1 30 minutes · stopwatch test
Time to first word
With a stopwatch, measure from phone in pocket to first typed character in three apps: your product (if it has text input), Apple Notes or Google Keep, and Drafts or a similar capture app.
Count taps and decisions on the way.
Redesign your product's path to under two seconds or under two taps, whichever is achievable.
Write how captured text gets sorted later, and when.
You're done when: you have three timings, tap counts, and a redesigned capture path with an inbox plan.
Beginner
Competent
Strong
Measures one app.
Compares three and redesigns capture.
Also designs the inbox-to-desk step and tests the new path on a real device.
Checklist: writing tool audit
Start and focus
Safety
Leaving
Part four recap: connect the ideas
Which principle from the reading chapters reappears most strongly in writing tools?
Focus modes, quiet counts, capture without decisions and autosave without dialogs are all the "stay in" job from chapter 1, applied to producing text instead of consuming it.
Part five
Every reader, every device
Reading is not only looking. Some people listen, some need different spacing, some read on a six-inch e-ink screen in the sun, others at a 27-inch monitor with three sources open. Two chapters: accessible reading (including the claims you will hear that do not hold up), and designing across devices.
16
Listening, dyslexia and claims versus evidence
Taught by Microsoft Immersive Reader, Kindle Immersion Reading, and reading research (Zorzi, Rello, Wery & Diliberto)
Reading tools should let people take in text the way that works for them: by eye, by ear, or both together, with spacing and type they can adjust. Base these features on evidence, not on marketing claims, because some popular "reading hacks" do not work.
Accessibility for reading starts with the basics you already have from Part one: real text (never text in images), adjustable size, good contrast, themes, and support for the platform's screen reader and text size. Accessible & Inclusive covers the general principles. Here we go into what is specific to long reading.
Listening and read-along
Text-to-speech used to sound robotic; modern system voices are good enough for hours of listening, and many people now "read" articles while walking or cooking. Two design patterns matter. First, listening needs its own controls: play and pause, speed (people often listen at 1.2 to 2 times normal), skip by sentence or paragraph, and a sleep timer. Second, read-along, where the spoken word or sentence is highlighted as it is read, helps learners, people with dyslexia, and anyone following a hard text. Microsoft's Immersive Reader (launched in OneNote's Learning Tools in 2016 and now in Edge, Word and other apps) combines read-aloud with highlighting, line focus, text spacing and syllable splitting. Kindle's Immersion Reading pairs an e-book with its Audible narration and highlights the text as it plays. The EPUB 3 standard supports this through "media overlays".
Lab: read-along highlighting (visual only, no audio)
Time is but the stream I go a-fishing in. I drink at it; but while I drink I see the sandy bottom and detect how shallow it is. Its thin current slides away, but eternity remains.
Play it at 180, then at 320 words per minute. Word highlighting at high speed becomes a flicker that pulls the eye; sentence highlighting stays calm. That is why many read-along tools highlight the sentence and underline the word, and why speed must be the listener's choice. "Step" moves one word at a time (and is the only mode if you prefer reduced motion).
Dyslexia: what helps and what is claimed
Dyslexia is a difference in how people process written language, and it is common: estimates vary with definitions, but a figure of around one person in ten is often cited. Several typefaces have been marketed as "dyslexia fonts", such as Dyslexie and OpenDyslexic, with weighted bottoms and distinct letter shapes. Controlled studies have not found that they help. Rello and Baeza-Yates (2013) found that font type affected reading for people with dyslexia, with sans-serif, monospaced and roman (upright) styles doing better than italic ones, but OpenDyslexic gave no advantage. Wery and Diliberto (2017) found no improvement in reading rate or accuracy with OpenDyslexic for students with dyslexia, and Kuster and colleagues (2018) found the same for Dyslexie compared with Arial.
What has stronger evidence is spacing. Zorzi and colleagues (PNAS, 2012) found that extra-large letter spacing improved reading speed and accuracy for children with dyslexia, likely by reducing crowding (letters interfering with recognition of their neighbours). Larger text, more line spacing, shorter lines, left-aligned text (no justified rivers), and avoiding italics and underlining for emphasis are all consistent with guidance such as the British Dyslexia Association's style guide. Many readers with dyslexia do say they prefer a specific font, and preference matters for comfort, so it is fine to offer one as an option. Just do not claim it treats anything.
Default spacing
Our life is frittered away by detail. An honest man has hardly need to count more than his ten fingers, or in extreme cases he may add his ten toes, and lump the rest.
Normal letter and word spacing, line height 1.25. Letters crowd each other.
Extra spacing option
Our life is frittered away by detail. An honest man has hardly need to count more than his ten fingers, or in extreme cases he may add his ten toes, and lump the rest.
Letter spacing +0.12 em, word spacing +0.16 em, line height 1.9. Less crowding: the change with the strongest evidence behind it.
"Bionic" reading and other speed claims
In 2022, "Bionic Reading" spread widely: bold the first few letters of each word, the claim goes, and the eye reads faster because the brain completes the rest. It is an appealing idea and a striking visual. But informal tests at the time, including one widely shared by Readwise, found no speed benefit, and the small number of studies since have not found reliable gains in speed or comprehension either. Speed-reading techniques like rapid serial visual presentation (one word flashed at a time) can push speed up, but research reviews have found that comprehension drops as speed rises; you cannot skip the work of understanding. Offer such modes if users ask, label them honestly, and never make them the default.
Feature or claim
Evidence (summary)
Design decision
Adjustable text size
Essential for low vision and age-related changes.
Always. Follow system size; allow very large.
Extra letter/word/line spacing
Helped children with dyslexia in controlled studies (Zorzi et al. 2012).
Offer a spacing option or slider.
Dyslexia-specific fonts
No reading benefit found in controlled studies; some readers prefer them.
Optional font, no claims.
Read-aloud with highlighting
Widely used in education and accessibility tools; helps many readers follow text.
Offer, with speed control and sentence highlighting.
Bionic-style bolding
No reliable gain in speed or comprehension found.
Do not promote; optional at most.
RSVP speed reading
Speed rises, comprehension falls.
Not a default; label honestly.
Narrowing the window. Immersive Reader's line focus shows one, three or five lines. It is the reading cousin of the writing focus mode in chapter 12.
Do
Support system screen readers, text size and contrast settings fully.
Offer read-aloud with speed, skip and sentence-level highlighting.
Offer a spacing option (letter, word, line) and a line focus mode.
Offer an alternative font if readers ask, labelled as a preference.
Don't
Claim a font "treats" or "fixes" dyslexia.
Market bolding or flashing words as a proven speed boost.
Put text in images or canvases that screen readers cannot read.
Use italics or underline as the main emphasis in long text.
In the wild
Microsoft Immersive ReaderMicrosoft, 2016 to now
Read aloud with highlighting, text spacing, line focus, syllables and parts of speech, across Edge, Word, OneNote and Teams. A bundle of evidence-friendly aids, all optional, all on the same text.
Kindle Immersion ReadingAmazon and Audible
Plays the Audible narration while highlighting the e-book text, and keeps your place in both. Listening and reading can share one position.
Kindle font optionsAmazon
Kindle offers OpenDyslexic among its reading fonts, alongside its standard book faces. Offering it as a choice, without health claims, respects preference and evidence together.
For the solo creator
The Web Speech API (speechSynthesis) and the platform speech APIs on iOS and Android give you read-aloud with word boundary events for free. A basic "Listen" button with speed control and sentence highlighting is a few days of work. Test it with VoiceOver and TalkBack on, too, so the two do not fight.
Common mistakes
Accessibility as a special mode
Accessibility features are grouped in a hidden screen.
Put spacing, size and listen in the normal reader settings. Many people without a diagnosis benefit.
Copying a claim from a press release
A feature sounds scientific.
Search for a controlled study before writing any benefit into your marketing.
Check yourself
A user asks you to add a "dyslexia font" to your reading app. What is the best response?
Preference matters for comfort, so offering it is reasonable, but spacing is the change with evidence. Refusing (a) ignores preference; defaulting (c) or marketing (d) overclaims.
Exercise 16.1 45 minutes · on your own product
Read your product with your ears
Turn on VoiceOver or TalkBack and have your product's main text read to you. Note anything skipped, repeated or read in the wrong order.
Use your OS's speak-screen feature on a long text at 1.5 times speed. Is the text structured so listening makes sense (headings, lists, alt text)?
Add a spacing option to your reading CSS (letter, word, line) and test it at the extremes.
Write one honest sentence describing each accessibility aid for your help page.
You're done when: you have a list of screen reader issues fixed or planned, a spacing option, and honest descriptions.
Beginner
Competent
Strong
Tries a screen reader.
Fixes structure issues and adds spacing.
Also adds read-aloud with sentence highlighting and documents aids without overclaiming.
17
Phone, tablet, e-ink and desktop
Taught by the devices themselves, with Craig Mod's writing on books and screens
The same text is a different reading experience on each device, because distance, size, input, light and session length all change. Design one model of the text and a different reading surface for each device class.
A phone is read at around 30 cm, in one hand, in short sessions, often at night, with a thumb. A tablet is held further, often in landscape, in longer sessions, sometimes with a stylus. An e-ink reader is a single-purpose object read for hours, in sunlight and in bed, with page buttons or taps and no motion. A desktop is read at 50 to 70 cm, with a keyboard and mouse, often alongside other windows, for research and writing more than for novels. Each changes the right measure, the right controls and the right defaults.
Not to exact scale. Distances and measures are typical ranges, not rules. The tablet earns a two-page spread in landscape; the desktop earns a margin for notes and sidenotes.
Device
Typical session
Input
Design priorities
Phone
Minutes, in gaps; also long sessions in bed
Thumb taps and swipes, one hand
Reachable controls at the bottom, chrome hidden, dark theme, larger text default, popovers over sidenotes.
E-ink reader
Hours
Taps, page buttons
No motion, high contrast, big targets, page-turn reliability, refresh control, warm light.
Tablet
Long, relaxed; study with a stylus
Touch, stylus, sometimes keyboard
Two-page spread in landscape, margin notes, handwriting annotation, split view with notes.
Desktop
Research and writing, many windows
Keyboard, mouse, trackpad
Capped measure, sidenotes, keyboard shortcuts (space to page, J/K), side-by-side reading and writing.
Same text, different surfaces
Keep one model of the text (content, positions, highlights, notes) and render a different surface per device. On the phone, the margin collapses, so notes become markers and popovers; on the desktop the same notes become sidenotes. On the tablet in landscape, two pages side by side give a book-like spread and a better measure than one stretched column. On e-ink, the same reader drops every transition. Readers who move between devices should find their place, highlights and preferences waiting, but with text size and theme remembered per device (chapter 5).
Don't
Phone layout stretched. Over 100 characters per line in landscape.
Do
A spread. Two comfortable columns, like an open book.
Do
Define device classes and give each its own reading defaults.
Use a two-page spread for paginated text on landscape tablets and wide windows.
Put phone reading controls within thumb reach, at the bottom.
Add keyboard shortcuts on desktop: space and shift-space to page, arrows, a key for highlight.
Don't
Stretch a phone layout onto a tablet or a desktop.
Sync text size blindly across devices.
Ship the phone's animations to an e-ink build.
Rely on hover for anything a touch reader also needs.
In the wild
Apple Books on iPadApple
Shows two pages side by side in landscape for reflowable books, one page in portrait. Orientation changes the right layout, not just the size.
Kindle Scribe and reMarkableAmazon, 2022; reMarkable
E-ink devices with a stylus, built for reading and handwritten notes. On large e-ink, annotation becomes handwriting, and the margin becomes a real place again.
Readwise ReaderReadwise
The same library across web, desktop and mobile, with keyboard-driven reading and highlighting on desktop. Desktop reading is a power-user surface; keyboard shortcuts are the calm path there.
For the solo creator
You probably cannot build native apps for every device. A well-made responsive web reader covers phones, tablets and desktops; add a manual "e-ink" theme (no motion, high contrast) for Boox and similar Android e-ink devices that run browsers. Test on one real device per class, not just resized browser windows; distance and hands change everything.
Common mistakes
Testing only in a resized browser
It is fast.
Read a full chapter on a real phone in bed and a real tablet on a sofa. Note what tires you.
Hover-only affordances
Designed on a laptop.
Every hover reveal needs a tap or focus equivalent.
Check yourself
Your web reader looks great on phones. On a landscape iPad, reviewers call it "hard to read". The likely fix?
The phone layout stretched to landscape gives very long lines. Capping measure or using two columns fixes the cause. Forcing orientation (c) removes reader choice; bigger text (b) may fix measure but wastes the screen.
Exercise 17.1 60 minutes · four devices
One chapter, four devices
Read the same 2,000-word text in your product (or in a reader you use) on a phone, a tablet, a computer, and an e-ink device if you have one.
For each, note measure, controls you used, and when you felt tired.
Write a defaults table per device class for your product.
Fix the worst device first.
You're done when: you have notes from at least three devices, a defaults table, and one fix shipped.
Beginner
Competent
Strong
Tries two devices.
Writes per-device defaults and fixes one.
Also adapts annotation, notes and controls per device while sharing one model.
Checklist: reading surface audit
The surface
Controls and light
Navigation and marks
Everyone
Part five recap: connect the ideas
Which design decision best supports both accessibility (chapter 16) and multiple devices (chapter 17)?
Structured text works with screen readers, reader modes and every layout; variable-driven settings let you set per-device defaults and per-reader needs from one system. Compare Systems & Platforms on tokens.
Wrap-up
You have now seen reading and writing software from the line up: the length of a line, the light behind it, the way through a long text, the marks you leave, the feeds that bring text to you, and the tools that make new text safely. One idea ran through all of it: these products succeed when the person forgets about them and stays with the words.
Ten things to remember
In reading and writing tools, attention is the product. Measure success by what the person did not have to notice.
Sort every feature into get in, stay in, get back. "Stay in" is where doing less is the work.
Pages for long linear reading, scroll for articles and reference. If you offer both, finish both, and store position as a text anchor.
Measure 45 to 75 characters (capped in em), line height around 1.5 for long text, real margins, ragged right unless you can hyphenate.
Choose book faces for stamina: large x-height, open apertures, sturdy serifs, moderate contrast.
Defaults are your design. Layer controls: size and theme first, typography second, expert settings behind a door, all previewed live.
Themes are about light: light by day, softened dark at night, low brightness before sleep, and no motion or greys on e-ink.
Progress answers a decision ("can I finish this chapter?"), so make it chapter-scoped, personal and stable, with safe jumps and asked-for syncs.
Highlights are worth what they are worth outside your app: one-tap marking, notes beside text, export with a link home. Notes and definitions open in place.
For writing: start in under two seconds, separate drafting from editing, save continuously and truthfully, keep readable versions, and make leaving easy.
Self-assessment: I can…
Practice assignment for the next two weeks
About 30 minutes a day. The goal is one reading surface and one writing surface in your own product (or a small side project) that you would be proud to use for an hour.
Days 1 to 2: audit. Run the reading surface audit and the writing tool audit checklists on your product. Do the interruption log (Exercise 1.1) on your own app.
Days 3 to 4: the text block. Fix measure, leading, margins and alignment (Exercise 3.1). Run the three-page stamina test for your reading face (Exercise 4.1).
Days 5 to 6: settings and themes. Build reader settings as CSS variables with layered controls and per-device defaults; add sepia and a softened dark theme; test in four lights.
Days 7 to 8: place. Store position as a text anchor; add a "where was I" cue and a safe "back to" after jumps. Run the leave-and-come-back test.
Days 9 to 10: marks and notes. Add one-tap highlights (or improve yours), a Markdown export, and responsive footnotes on one long page.
Days 11 to 12: writing. Make one text field calm: autofocus, focus-friendly, continuous save with truthful status. Run the "try to lose your words" test.
Days 13 to 14: everyone. Add a spacing option and test with a screen reader. Then read a full chapter on three devices and write down what you changed and what you learned.
Reading list
The Elements of Typographic Style
Robert Bringhurst, 1992 and later editions · the classic on measure, leading, page proportion and the text block. Read the chapters on rhythm and proportion and on shaping the page.
Practical Typography
Matthew Butterick, free online · the most usable modern rules for body text, line length and spacing, with clear reasoning.
"Web Design is 95% Typography"
Oliver Reichenstein, iA, 2006 · the short essay behind the idea that the reading surface is the design. Then browse iA's blog on focus mode and syntax highlighting.
Proust and the Squid, and Reader, Come Home
Maryanne Wolf, 2007 and 2018 · how the reading brain works, and what screens do to deep reading. The mechanism behind chapter 1.
Words Onscreen: The Fate of Reading in a Digital World
Naomi S. Baron, 2015 · research on how people read on screens versus paper, and why long-form reading needs care.
"Books in the Age of the iPad"
Craig Mod, 2010 · an essay on which books belong on screens and what digital books should do differently. Still sharp.
"Sidenotes in Web Design"
Gwern Branwen, gwern.net · a survey of sidenote and footnote implementations on the web, with trade-offs. Pair it with the Tufte CSS source.
"Local-first software: you own your data, in spite of the cloud"
Ink & Switch (Kleppmann, Wiggins, van Hardenberg, McGranaghan), 2019 · the case for storage that is fast, offline, owned and collaborative. Essential before chapter 14 decisions.
Calm Technology
Amber Case, 2015 · principles for technology that informs without demanding attention. The foundation for chapter 11's calm feed.
"Does Bionic Reading actually work?"
Readwise blog, 2022 · a public test of a popular reading claim, timing more than 2,000 readers. A model of checking a claim before shipping it.
Next: Motion & Feel, which explains why the page turn and the typewriter scroll in this guide are timed the way they are. For product teardowns of Kindle, Kobo, Apple Books, Instapaper and Readwise Reader, see Breakdowns: Reading.