Step 1 of 5
Name the thing
An i tag holds a global id with a prefix that says what it is: isbn:…, geo:…, podcast:guid:…, a plain URL, bitcoin:tx:…
NIP-73
DraftEvents
i and k tags point Nostr events at things outside Nostr (books, web pages, podcasts, places, blockchain transactions) so you can find every comment about them.
Edit the form or the JSON: both stay in sync, the badge says whether the result is valid, and tapping any field explains it.
Not signed yet · Demo keys only. These personas' secret keys are public on purpose.
Select any field in the form or the JSON to see what it does.
Step 1 of 5
An i tag holds a global id with a prefix that says what it is: isbn:…, geo:…, podcast:guid:…, a plain URL, bitcoin:tx:…
No course chapter covers this NIP yet. The editor above is the quickest way in.
NIP-22 comments use I/K (root) and i/k (parent) to comment on external content.
Geohash ids work like NIP-52 location tags.
Hashtag ids (#topic) relate to the t tags in NIP-24.
Specification text is quoted in English from the nostr-protocol/nips repository. Our explanations and the interface are translated. Source on GitHub at commit 0046368
There are certain established global content identifiers such as Book ISBNs, Podcast GUIDs, and Movie ISANs that are useful to reference in nostr events so that clients can query all the events associated with these ids.
i tags are used for referencing these external content ids, with k tags representing the external content id kind so that clients can query all the events for a specific kind.
| Type | i tag |
k tag |
|---|---|---|
| URLs | "<URL, normalized, no fragment>" |
"web" |
| Books | "isbn:<id, without hyphens>" |
"isbn" |
| Geohashes | "geo:<geohash, lowercase>" |
"geo" |
| Countries | "iso3166:<code, uppercase>" |
"iso3166" |
| Movies | "isan:<id, without version part>" |
"isan" |
| Papers | "doi:<id, lowercase>" |
"doi" |
| Hashtags | "#<topic, lowercase>" |
"#" |
| Podcast Feeds | "podcast:guid:<guid>" |
"podcast:guid" |
| Podcast Episodes | "podcast:item:guid:<guid>" |
"podcast:item:guid" |
| Podcast Publishers | "podcast:publisher:guid:<guid>" |
"podcast:publisher:guid" |
| Blockchain Transaction | "<blockchain>:[<chainId>:]tx:<txid, hex, lowercase>" |
"<blockchain>:tx" |
| Blockchain Address | "<blockchain>:[<chainId>:]address:<address>" |
"<blockchain>:address" |
For the webpage "https://myblog.example.com/post/2012-03-27/hello-world" the "i" and "k" tags are:
[
["i", "https://myblog.example.com/post/2012-03-27/hello-world"],
["k", "web"]
]
["i", "geo:ezs42e44yx96"] - https://www.movable-type.co.uk/scripts/geohash.htmlGeohashes are a geocoding system that encodes geographic locations into short strings of letters and digits. They MUST be lowercase.
ISO 3166 codes can reference countries (ISO 3166-1 alpha-2) or subdivisions like states/provinces (ISO 3166-2).
["i", "iso3166:VE"]["i", "iso3166:US-CA"]ISO 3166 codes MUST be uppercase. More info: https://en.wikipedia.org/wiki/ISO_3166
["i", "isbn:9780765382030"] - https://isbnsearch.org/isbn/9780765382030Book ISBNs MUST be referenced without hyphens as many book search APIs return the ISBNs without hyphens. Removing hyphens from ISBNs is trivial, whereas adding the hyphens back in is non-trivial requiring a library.
["i", "podcast:guid:c90e609a-df1e-596a-bd5e-57bcc8aad6cc"] - https://podcastindex.org/podcast/c90e609a-df1e-596a-bd5e-57bcc8aad6cc["i", "podcast:item:guid:d98d189b-dc7b-45b1-8720-d4b98690f31f"]["i", "podcast:publisher:guid:18bcbf10-6701-4ffb-b255-bc057390d738"]["i", "isan:0000-0000-401A-0000-7"] - https://web.isan.org/public/en/isan/0000-0000-401A-0000-7Movie ISANs SHOULD be referenced without the version part as the versions / edits of movies are not relevant. More info on ISAN parts here - https://support.isan.org/hc/en-us/articles/360002783131-Records-relations-and-hierarchies-in-the-ISAN-Registry
<blockchain> can be any layer 1 chain (bitcoin, ethereum, solana, ...). If necessary (e.g. for ethereum), you can specify a <chainId>.
bitcoin:address:<bech32, lowercase | base58, case sensitive>
bitcoin:tx:<txid, hex, lowercase>
E.g. https://blockstream.info/tx/a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d
[
["i", "bitcoin:tx:a1075db55d416d3ca199f55b6084e2115b9345e16c5cf302fc80e9d5fbf5d48d"],
["k", "bitcoin:tx"]
]
E.g. https://blockstream.info/address/1HQ3Go3ggs8pFnXuHVHRytPCq5fGG8Hbhx
[
["i", "bitcoin:address:1HQ3Go3ggs8pFnXuHVHRytPCq5fGG8Hbhx"],
["k", "bitcoin:address"]
]
ethereum:<chainId, integer>:tx:<txHash, hex, lowercase>
ethereum:<chainId, integer>:address:<hex, lowercase>
E.g. https://etherscan.io/address/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
[
["i", "ethereum:1:address:0xd8da6bf26964af9d7eed9e03e53415d37aa96045"],
["k", "ethereum:address"]
]
E.g. https://gnosisscan.io/tx/0x98f7812be496f97f80e2e98d66358d1fc733cf34176a8356d171ea7fbbe97ccd
[
["i", "ethereum:100:tx:0x98f7812be496f97f80e2e98d66358d1fc733cf34176a8356d171ea7fbbe97ccd"],
["k", "ethereum:tx"]
]
Each i tag MAY have a url hint as the second argument to redirect people to a website if the client isn't opinionated about how to interpret the id:
["i", "podcast:item:guid:d98d189b-dc7b-45b1-8720-d4b98690f31f", https://fountain.fm/episode/z1y9TMQRuqXl2awyrQxg]
["i", "isan:0000-0000-401A-0000-7", https://www.imdb.com/title/tt0120737]