Skip to content

For the complete documentation index, see llms.txt. The full corpus is available at llms-full.txt. This page is also available as Markdown by appending .md to the URL.

Exporting your data

Everything that matters about your identity is a file you can download right now, and the important ones are public, so you do not even need to be signed in to fetch them.

FileWhereWhat it is for
realhandles.jsonrealhandles.com/<you>/realhandles.jsonYour current signed manifest. The proof itself.
realhandles-chain.jsonrealhandles.com/<you>/realhandles-chain.jsonEvery version ever published, oldest first.
realhandles.otsrealhandles.com/<you>/realhandles.otsThe OpenTimestamps proof that the current version existed by a given Bitcoin block.
did.jsonrealhandles.com/<you>/did.jsonA W3C DID document, so the profile resolves as a did:web for standard DID tooling.
realhandles-<you>.jsonThe Export action in your dashboardOur full copy: handle, profile, accounts, anchor, and the signed manifest.
realhandles-key.jsonDownloaded when you make or re-wrap your keyYour encrypted key backup.

realhandles.json is the one that survives us. It is a compact JWS signed by your key. Anyone can check it against your public key with off-the-shelf tooling and no access to RealHandles. If this site disappeared tomorrow, this file still proves what it proves.

realhandles-chain.json is the audit trail. The current manifest tells you what is true now. The chain tells you how it got that way, including any key change and whether it was authorized. See Reading the history.

The dashboard export is the directory copy. It lists what we hold: your handle, your profile, your accounts, your anchor, and the signed manifest. Useful as a single snapshot, and honest about the split: the signed manifest inside it verifies independently, and the rest is our record.

realhandles-key.json is not an export of your identity. It is an encrypted copy of your signing key, and it is the only file on this page that must stay private. See Your signing key.

import { verifySignedManifest } from '@realhandles/verify';
const file = await fetch('https://realhandles.com/david/realhandles.json').then((r) => r.json());
const { valid, keyId, manifest } = await verifySignedManifest(file);

@realhandles/verify is the same verification code this site runs, published on npm and open source. Using it is convenient rather than required: the format is a standard EdDSA JWS, so any JOSE library gets the same answer.

The other direction works too. Point the importer at a page you control, or upload a file, and it pulls out profiles from rel="me" links, schema.org sameAs, or a plain JSON link list, then marks the ones already attached to you. It is a shortcut for entering accounts, not a proof. Each one still has to be verified or claimed. See Verifying an account.

Deleting the identity takes it off our files. Everything you already published stays published: copies people downloaded, the anchor file on your own domain, and the Bitcoin timestamps, none of which we can recall. Export first if you want a copy of the directory record.

Everything held about you in one file

Everything held about you in one file. The signed manifest inside it verifies without RealHandles, which is the point of the export.

Identity > Data > Export everything produces the same file the dashboard export does.

Before it hands anything over the screen shows what is in it: the handle, the number of accounts, how many signed versions exist, the key that signed the current one, and the first few lines of the JSON. If nothing has been published yet it says that outright, because a directory copy with no signature in it is worth knowing about before you file it away.

Two ways out of the app. Save it on this phone writes the file. Share my export hands it to another app, behind a confirmation, because the share sheet puts a cloud drive and a group chat one tap from a file naming every account on your identity. Past 256 KB the share route is withheld and only saving is offered. Android moves an app-to-app payload through a single one megabyte buffer shared by everything the app has in flight, so a payload may safely use only a fraction of it; going over throws in the sending app and the share sheet simply never appears.

The public files stay public and need no app at all. realhandles.json, realhandles-chain.json, realhandles.ots and did.json are URLs, fetchable from anything.

Two things on this page have no app equivalent. The importer that reads rel="me" links off a page is website only. So is realhandles-key.json as an export of your key, which the app treats as a key transfer rather than as data, under Keys > Send key to another device. See Your signing key.