Stable identifier: the handle a correction does not move
A stable identifier is the name a row keeps when its value is corrected. Without one, a vendor rewriting a statement looks like a new row appearing and an old row vanishing for no reason. As of 2026-09-22.
| The term | Stable identifier |
|---|---|
| What it names | A handle a row keeps across corrections to its value |
| What it is not | A description of the value, or a position in a table |
| Where the register uses it | Every published row, and every deep link to one |
Inclusion rule. Words this site uses in a narrow sense, where the ordinary sense would lead a reader to misread a cell. No vendor statement appears on this page. Order. Fixed order: what the word names, what it excludes, then where it is used here.
1Why identity has to be separate from content
If a row were identified by its value, every correction would destroy the row and create another. There would be no way to ask what this statement used to say, which is the question anybody tracking a vendor's behaviour over time actually has.
Keeping the handle fixed means a change is a change to a thing rather than a replacement of it. That is what allows a revision to be filed against a row and a deep link to keep pointing at the same statement after it has been updated.
2What it enables in practice
A stable anchor on every value, so a page elsewhere can cite one field rather than a table. A column in the exported file that a reader can join against their own records. And a revision log that says which row moved, rather than describing a change in prose.
None of that works if identifiers are reused or reassigned. So an identifier is never recycled, even when a row is retired, because a link somewhere else may still be pointing at it.
3Why it is not descriptive
A handle that described its value would have to change when the value did, which defeats the purpose. Handles here name the vendor and the field rather than the content, so they stay meaningful after the statement they point at has been rewritten.
That makes them slightly opaque to read, which is the intended trade. An identifier is for machines, links and joins; the human-readable description of what a row holds is the value itself and the column it sits in.
Nothing on this page is a vendor statement; the values it helps read are on the support table, with the page and the date each one was read from. See also the protocol page, what earns a row. Nearby terms: not documented, stated position, applies-to note.