DigitableCourses
Portal settings
Show me around

Local and account-free. No account, no sign-up: whatever you type into the tools stays in this browser's localStorage and never reaches a server.

Our own counter records page opens and finishes: the address leaves, plus one tenth-of-the-text figure. No cookies, no outside trackers, your IP is not stored, Do Not Track is honoured. How to check that

The portal's own repository is not published, so we do not call it open source. What is open:

The portal lives on donations, paid consultations and requested write-ups, and on Workbench sales.

There are no plans to make the courses paid.

Reading summary

Readability of materials

Here is one question: does the reader reach the end of the text? The portal counts it in such a way that it does not distinguish or mark readers – neither cookies, nor fingerprint, nor session identifier, nor address storage. A direct consequence should be stated explicitly, not bypassed: unique readers and MAU are not counted at all in this way, and everything that is mentioned below as “average reading” is the average by visits, not by people. One person who opens a chapter on a phone and on a laptop is two observations, and there is no way to distinguish them.

“Read through” here means “scrolled to the end of the article’s text” – to the very bottom of the text, not the page: the footer, links to adjacent chapters, and the support block are not included. This does not measure and cannot measure comprehension: quickly scrolling to the end looks the same as attentive reading.

Your browser calculates all of this from a single API response – the server does not print any results and should not. A complete “47%” looks equally convincing with three observations and with three thousand, so the summands are moved to the outside, and next to each partial result, the number of observations for it is printed. Where there are too few of them, the page remains silent and indicates how many are missing.

Portal layers and their probes are on the portal status page. The numbers themselves come from /api/analytics/read-stats.json, and page views from /api/analytics/content-stats.json.

What the numbers below are worth

A read is a visit whose exit beacon arrived. It does not always arrive: the browser may kill the tab before sending it, and a reader without JavaScript or with DNT: 1 is invisible to the portal entirely. The share of arrived beacons is the only available measure of whether the count works at all: should it fall silent tomorrow, mean read-through would stay pretty while this share collapsed.

Observations (reads)
Views over the same days
Share of exit beacons that arrived
Materials with observations
Threshold for a verdict
/ observations per material: the first number is for the mean and the share, the second for the drop-off picture. Below the threshold the page prints the count and how many observations are missing — not a number with nothing to stand on.

Data not loaded.

Trend

By UTC day, over the whole retention window. This is a series, not a verdict: a day on this portal is tens of observations across the entire corpus, and a jump between two days more often means «one link brought people in» than «they started reading deeper». Days with views and no reads are marked separately — that is what a silent beacon looks like.

Reads and mean read-through by day
DayViewsReadsMean read-throughFinished

Data not loaded.

Materials with observations, most read first. «Mean read-through» is the mean over visits in tenths of the text; the interval beside it is the precision the observation count buys, not decoration. A material below the threshold sits in the list with a dash: it is not «read badly», there is simply nothing to say about it.

Read-through by material
MaterialObservationsMean read-throughReached the end of the text

Data not loaded.

Where they stop

The most useful thing here and the most unpleasant: the bars show what share of those who started was still reading at each tenth of the text. The cliff is the point after which the chapter gets closed. Materials below the drop-off threshold do not appear here at all: a histogram over eight observations draws a confident line out of noise.

Data not loaded.

A course out of its chapters

A track's mean read-through is not counted separately — it is derived from its chapters, weighted by observation count. A separate per-track counter would diverge from the sum of its chapters the first day a chapter is added, and diverge silently. Beside it stands the number of chapters with no data at all: a track with one read chapter is not a read track.

Track read-through derived from chapters
TrackChapters with dataObservationsMean read-throughWhere it breaks off

Data not loaded.

What this method cannot tell you

Exact MAU and number of people
Unknown. There is only a visitor estimate from browser and network signals: it is computed in memory, while the signals and their hashes are not written to public data.
Whether a person read or scrolled
Unknown. What is measured is the scroll position reached: someone who scrolled quickly to the end looks exactly like someone who read it.
How long they read
Deliberately not counted: depth answers «do they read it through», while time is ruined by a single tab left open overnight.
Readers without JavaScript
Invisible in reads and in views alike: the beacon runs as a script. The same holds for DNT: 1 — the refusal to be tracked is honoured on the server.
Those who looked away and came back to finish
Counted with a downward bias: the beacon leaves on the first time the page is hidden, and a second one would count the read twice. The summary errs towards «they read worse».