[{"data":1,"prerenderedAt":1465},["ShallowReactive",2],{"post-\u002Fposts\u002Fhow-to-choose-nostr-relays":3,"post-author-garywoodfine":1073,"post-aside-video-what-is-a-nostr-relay":1082,"\u002Fposts\u002Fhow-to-choose-nostr-relays-surround":1094,"navigation":1105,"content-section-services":1153,"content-section-products":1156,"content-section-company":1159,"legal-link":1161,"authors":1177,"author-garywoodfine":1206,"post-aside-related-candidates":1207},{"id":4,"title":5,"aside":6,"author":7,"body":8,"category":1041,"date":1042,"description":1043,"extension":1044,"featureImage":1045,"meta":1048,"navigation":1050,"path":1051,"seo":1052,"sitemap":1053,"slug":6,"stem":1062,"subtitle":1063,"summary":1064,"tags":1065,"updated":6,"video":1071,"__hash__":1072},"posts\u002Fposts\u002Fhow-to-choose-nostr-relays.md","How to Choose Nostr Relays",null,"garywoodfine",{"type":9,"value":10,"toc":1018},"minimark",[11,15,18,21,40,52,57,60,69,72,76,79,84,87,90,93,104,108,111,119,122,126,134,148,511,514,517,531,535,538,549,552,556,559,562,565,585,589,592,595,609,612,626,632,636,657,660,663,677,680,686,690,693,696,713,716,730,733,737,747,750,753,770,773,776,796,800,803,829,832,835,839,843,846,849,866,870,873,876,880,887,890,904,908,915,918,932,935,938,942,945,962,965,969,1014],[12,13,14],"p",{},"One of the fastest ways to make your Nostr experience worse is to treat relay choice like it does not matter.",[12,16,17],{},"It matters a lot.",[12,19,20],{},"The relays you publish to and read from affect:",[22,23,24,28,31,34,37],"ul",{},[25,26,27],"li",{},"whether your posts are seen",[25,29,30],{},"whether replies and mentions show up consistently",[25,32,33],{},"how much spam you deal with",[25,35,36],{},"how much metadata you leak to operators",[25,38,39],{},"how reliable your daily use feels",[41,42,45],"subtle-warning",{"icon":43,"type":44},"i-lucide-info","info",[46,47,49],"template",{"v-slot:message":48},"",[12,50,51],{},"Be deliberate in your choice of relays, Do not just dump in random URLs and hope for the best.",[53,54,56],"h2",{"id":55},"start-with-what-a-relay-actually-is","Start with what a relay actually is",[12,58,59],{},"A relay is a server that accepts, stores, and forwards Nostr events.",[12,61,62,63,68],{},"If you want the full primer first, read ",[64,65,67],"a",{"href":66},"\u002Fposts\u002Fwhat-is-a-nostr-relay","What is a Nostr Relay?",".",[12,70,71],{},"This article is about selection, not theory.",[53,73,75],{"id":74},"what-makes-a-good-nostr-relay","What makes a good Nostr relay?",[12,77,78],{},"There is no perfect relay, but there are some practical things worth looking for.",[80,81,83],"h3",{"id":82},"_1-reliability","1. Reliability",[12,85,86],{},"A relay that is frequently offline or unstable is a bad default.",[12,88,89],{},"If your client constantly waits on dead or unreliable relays, your Nostr experience gets slower and less predictable.",[12,91,92],{},"Look for relays that:",[22,94,95,98,101],{},[25,96,97],{},"stay online consistently",[25,99,100],{},"respond quickly enough for normal use",[25,102,103],{},"are not obviously abandoned",[80,105,107],{"id":106},"_2-sensible-moderation-or-anti-spam-posture","2. Sensible moderation or anti-spam posture",[12,109,110],{},"Nostr is open protocol, but that does not mean every relay is of a high quality.",[12,112,113,114,118],{},"Some relays are effectively junk feeders. They may be full of spam, garbage indexing, or low-effort relay listings that make client ",[115,116,117],"em",{},"User Experience (UX)"," worse.",[12,120,121],{},"A good relay does not need to be authoritarian, but it should not be useless either.",[80,123,125],{"id":124},"_3-clear-capabilities","3. Clear capabilities",[12,127,128,129,133],{},"Some relays expose metadata through ",[130,131,132],"strong",{},"NIP-11",", the Relay Information Document. That can tell clients and users things like:",[22,135,136,139,142,145],{},[25,137,138],{},"the relay name and description",[25,140,141],{},"supported NIPs",[25,143,144],{},"software and version",[25,146,147],{},"operator contact details",[149,150,154],"pre",{"className":151,"code":152,"language":153,"meta":48,"style":48},"language-json shiki shiki-themes material-theme-lighter monokai monokai monokai","{\n  \"name\": \u003Cstring identifying relay>,\n  \"description\": \u003Cstring with detailed information>,\n  \"banner\": \u003Ca link to an image (e.g. in .jpg, or .png format)>,\n  \"icon\": \u003Ca link to an icon (e.g. in .jpg, or .png format>,\n  \"pubkey\": \u003Cadministrative contact pubkey>,\n  \"self\": \u003Crelay's own pubkey>,\n  \"contact\": \u003Cadministrative alternate contact>,\n  \"supported_nips\": \u003Ca list of NIP numbers supported by the relay>,\n  \"software\": \u003Cstring identifying relay software URL>,\n  \"version\": \u003Cstring version identifier>,\n  \"terms_of_service\": \u003Ca link to a text file describing the relay's term of service>\n}\n","json",[155,156,157,166,196,221,269,307,330,352,374,413,440,462,505],"code",{"__ignoreMap":48},[158,159,162],"span",{"class":160,"line":161},"line",1,[158,163,165],{"class":164},"s8B1f","{\n",[158,167,169,173,177,180,183,187,190,193],{"class":160,"line":168},2,[158,170,172],{"class":171},"siAel","  \"",[158,174,176],{"class":175},"sI02Y","name",[158,178,179],{"class":171},"\"",[158,181,182],{"class":164},":",[158,184,186],{"class":185},"sbgAB"," \u003Cstring",[158,188,189],{"class":185}," identifying",[158,191,192],{"class":185}," relay>",[158,194,195],{"class":164},",\n",[158,197,199,201,204,206,208,210,213,216,219],{"class":160,"line":198},3,[158,200,172],{"class":171},[158,202,203],{"class":175},"description",[158,205,179],{"class":171},[158,207,182],{"class":164},[158,209,186],{"class":185},[158,211,212],{"class":185}," with",[158,214,215],{"class":185}," detailed",[158,217,218],{"class":185}," information>",[158,220,195],{"class":164},[158,222,224,226,229,231,233,236,239,242,245,248,251,254,257,260,263,266],{"class":160,"line":223},4,[158,225,172],{"class":171},[158,227,228],{"class":175},"banner",[158,230,179],{"class":171},[158,232,182],{"class":164},[158,234,235],{"class":185}," \u003Ca",[158,237,238],{"class":185}," link",[158,240,241],{"class":185}," to",[158,243,244],{"class":185}," an",[158,246,247],{"class":185}," image",[158,249,250],{"class":185}," (e.g.",[158,252,253],{"class":185}," in",[158,255,256],{"class":185}," .jpg",[158,258,259],{"class":164},",",[158,261,262],{"class":185}," or",[158,264,265],{"class":185}," .png",[158,267,268],{"class":185}," format)>,\n",[158,270,272,274,277,279,281,283,285,287,289,292,294,296,298,300,302,304],{"class":160,"line":271},5,[158,273,172],{"class":171},[158,275,276],{"class":175},"icon",[158,278,179],{"class":171},[158,280,182],{"class":164},[158,282,235],{"class":185},[158,284,238],{"class":185},[158,286,241],{"class":185},[158,288,244],{"class":185},[158,290,291],{"class":185}," icon",[158,293,250],{"class":185},[158,295,253],{"class":185},[158,297,256],{"class":185},[158,299,259],{"class":164},[158,301,262],{"class":185},[158,303,265],{"class":185},[158,305,306],{"class":185}," format>,\n",[158,308,310,312,315,317,319,322,325,328],{"class":160,"line":309},6,[158,311,172],{"class":171},[158,313,314],{"class":175},"pubkey",[158,316,179],{"class":171},[158,318,182],{"class":164},[158,320,321],{"class":185}," \u003Cadministrative",[158,323,324],{"class":185}," contact",[158,326,327],{"class":185}," pubkey>",[158,329,195],{"class":164},[158,331,333,335,338,340,342,345,348,350],{"class":160,"line":332},7,[158,334,172],{"class":171},[158,336,337],{"class":175},"self",[158,339,179],{"class":171},[158,341,182],{"class":164},[158,343,344],{"class":185}," \u003Crelay's",[158,346,347],{"class":185}," own",[158,349,327],{"class":185},[158,351,195],{"class":164},[158,353,355,357,360,362,364,366,369,372],{"class":160,"line":354},8,[158,356,172],{"class":171},[158,358,359],{"class":175},"contact",[158,361,179],{"class":171},[158,363,182],{"class":164},[158,365,321],{"class":185},[158,367,368],{"class":185}," alternate",[158,370,371],{"class":185}," contact>",[158,373,195],{"class":164},[158,375,377,379,382,384,386,388,391,394,397,400,403,406,409,411],{"class":160,"line":376},9,[158,378,172],{"class":171},[158,380,381],{"class":175},"supported_nips",[158,383,179],{"class":171},[158,385,182],{"class":164},[158,387,235],{"class":185},[158,389,390],{"class":185}," list",[158,392,393],{"class":185}," of",[158,395,396],{"class":185}," NIP",[158,398,399],{"class":185}," numbers",[158,401,402],{"class":185}," supported",[158,404,405],{"class":185}," by",[158,407,408],{"class":185}," the",[158,410,192],{"class":185},[158,412,195],{"class":164},[158,414,416,418,421,423,425,427,429,432,435,438],{"class":160,"line":415},10,[158,417,172],{"class":171},[158,419,420],{"class":175},"software",[158,422,179],{"class":171},[158,424,182],{"class":164},[158,426,186],{"class":185},[158,428,189],{"class":185},[158,430,431],{"class":185}," relay",[158,433,434],{"class":185}," software",[158,436,437],{"class":185}," URL>",[158,439,195],{"class":164},[158,441,443,445,448,450,452,454,457,460],{"class":160,"line":442},11,[158,444,172],{"class":171},[158,446,447],{"class":175},"version",[158,449,179],{"class":171},[158,451,182],{"class":164},[158,453,186],{"class":185},[158,455,456],{"class":185}," version",[158,458,459],{"class":185}," identifier>",[158,461,195],{"class":164},[158,463,465,467,470,472,474,476,478,480,483,486,489,492,494,497,500,502],{"class":160,"line":464},12,[158,466,172],{"class":171},[158,468,469],{"class":175},"terms_of_service",[158,471,179],{"class":171},[158,473,182],{"class":164},[158,475,235],{"class":185},[158,477,238],{"class":185},[158,479,241],{"class":185},[158,481,482],{"class":185}," a",[158,484,485],{"class":185}," text",[158,487,488],{"class":185}," file",[158,490,491],{"class":185}," describing",[158,493,408],{"class":185},[158,495,496],{"class":185}," relay's",[158,498,499],{"class":185}," term",[158,501,393],{"class":185},[158,503,504],{"class":185}," service>\n",[158,506,508],{"class":160,"line":507},13,[158,509,510],{"class":164},"}\n",[12,512,513],{},"That is useful because it gives you at least some information about what the relay claims to support.",[12,515,516],{},"It is especially useful when you care about features like:",[22,518,519,522,525,528],{},[25,520,521],{},"search support",[25,523,524],{},"relay-specific limits",[25,526,527],{},"auth requirements",[25,529,530],{},"software maturity",[80,532,534],{"id":533},"_4-relevant-feature-support","4. Relevant feature support",[12,536,537],{},"Not every relay supports the same optional features.",[12,539,540,541,544,545,548],{},"For example, ",[130,542,543],{},"NIP-50"," defines a search capability using a ",[155,546,547],{},"search"," filter field. If a client wants to support search-driven workflows, it helps to know which relays advertise support for it.",[12,550,551],{},"That does not mean every relay must support every NIP. It means you should avoid assuming they all do.",[80,553,555],{"id":554},"_5-reasonable-fit-for-your-use-case","5. Reasonable fit for your use case",[12,557,558],{},"A relay that works well for public social posting may not be the one you want for everything else.",[12,560,561],{},"Your ideal relay mix depends on what you would like achieve or what your typical activities comprise.",[12,563,564],{},"For example:",[22,566,567,570,573,576,579,582],{},[25,568,569],{},"public posting",[25,571,572],{},"profile discovery",[25,574,575],{},"mentions and replies",[25,577,578],{},"long-term availability",[25,580,581],{},"search-heavy use",[25,583,584],{},"lower-noise reading experience",[53,586,588],{"id":587},"do-not-rely-on-a-single-relay","Do not rely on a single relay",[12,590,591],{},"This is the biggest practical mistake beginners make.",[12,593,594],{},"Using one relay means:",[22,596,597,600,603,606],{},[25,598,599],{},"one outage hurts you more",[25,601,602],{},"one operator sees everything you do on that relay",[25,604,605],{},"one policy change can wreck your experience",[25,607,608],{},"one spam-heavy relay can dominate your view of the network",[12,610,611],{},"Using multiple relays gives you:",[22,613,614,617,620,623],{},[25,615,616],{},"better redundancy",[25,618,619],{},"better reach",[25,621,622],{},"better resilience",[25,624,625],{},"less dependence on one operator",[12,627,628,631],{},[130,629,630],{},"NIP-65"," even recommends keeping relay lists relatively small and intentional, rather than huge and chaotic. That is a useful instinct. Small and good usually beats large and messy.",[53,633,635],{"id":634},"read-relays-and-write-relays-should-be-intentional","Read relays and write relays should be intentional",[12,637,638,640,641,648,649,652,653,656],{},[130,639,630],{}," defines ",[130,642,643,644,647],{},"kind ",[155,645,646],{},"10002"," relay list metadata",", where a user can advertise relays with optional ",[155,650,651],{},"read"," or ",[155,654,655],{},"write"," markers.",[12,658,659],{},"That matters because the relay you publish to and the relay you read from do not always need to be identical.",[12,661,662],{},"A useful mental model is:",[22,664,665,671],{},[25,666,667,670],{},[130,668,669],{},"write relays"," should be dependable enough for publishing your own events",[25,672,673,676],{},[130,674,675],{},"read relays"," should be good at helping you retrieve the content that matters to you",[12,678,679],{},"A client should not blindly treat every discovered relay as equally good for both jobs.",[681,682],"content-image",{"alt":683,"image":684,"title":685},"Diagram: a Nostr client or signer publishes your notes to a small, trusted set of write relays and fetches other people's events from a broader set of read relays.","nostr-read-vs-write-relays_lhxde2","nostr read\u002Fwrite relays",[53,687,689],{"id":688},"privacy-questions-to-ask-before-adding-a-relay","Privacy questions to ask before adding a relay",[12,691,692],{},"Nostr is more decentralised than a typical social platform, but relays still see things.",[12,694,695],{},"A relay operator may be able to observe:",[22,697,698,701,704,707,710],{},[25,699,700],{},"your IP address",[25,702,703],{},"when you connect",[25,705,706],{},"what you publish to that relay",[25,708,709],{},"what queries you make",[25,711,712],{},"what accounts or event patterns you appear interested in",[12,714,715],{},"So before adding a relay, ask:",[22,717,718,721,724,727],{},[25,719,720],{},"do I trust this operator enough for this use?",[25,722,723],{},"do I need this relay, or am I just adding noise?",[25,725,726],{},"am I spreading activity too thinly across random infrastructure?",[25,728,729],{},"am I confusing decentralisation with privacy guarantees?",[12,731,732],{},"That last one matters. Public events are still public. Relay diversity helps, but it does not turn public social activity into private activity.",[53,734,736],{"id":735},"security-questions-to-ask-before-adding-a-relay","Security questions to ask before adding a relay",[12,738,739,740,746],{},"The relay does not hold your private key if you are using a proper signer like ",[64,741,745],{"href":742,"rel":743},"https:\u002F\u002Fthreenine.io\u002Fproducts\u002Fdiogel",[744],"nofollow","Porwr by Diogel",", which is good.",[12,748,749],{},"But security is broader than just key theft.",[12,751,752],{},"A low-quality relay can still harm your experience on Nostr by:",[22,754,755,758,761,764,767],{},[25,756,757],{},"serving incomplete or poor-quality data",[25,759,760],{},"dropping your publishes",[25,762,763],{},"creating noise and confusion",[25,765,766],{},"degrading search and discovery",[25,768,769],{},"adding operational friction to your client setup",[12,771,772],{},"So a practical security mindset includes relay quality, not just key handling.",[12,774,775],{},"If you need the key-management side first, read:",[22,777,778,784,790],{},[25,779,780],{},[64,781,783],{"href":782},"\u002Fposts\u002Fhow-to-manage-keys-for-nostr","How to Manage Keys for Nostr",[25,785,786],{},[64,787,789],{"href":788},"\u002Fposts\u002Fwhat-is-a-nip-07-signer","What is a NIP-07 Signer?",[25,791,792],{},[64,793,795],{"href":794},"\u002Fposts\u002Fhow-to-get-started-with-porwr","Getting Started with Porwr",[53,797,799],{"id":798},"a-practical-relay-selection-checklist","A practical relay selection checklist",[12,801,802],{},"When evaluating a relay, common questions to ask:",[22,804,805,808,811,817,820,823,826],{},[25,806,807],{},"Is it reachable and stable?",[25,809,810],{},"Does it look abandoned or actively operated?",[25,812,813,814,816],{},"Does it expose useful ",[130,815,132],{}," metadata?",[25,818,819],{},"Does it support features I actually care about?",[25,821,822],{},"Is it obviously spam-heavy or junky?",[25,824,825],{},"Is it a sensible choice for read, write, or both?",[25,827,828],{},"Is it improving my setup, or just increasing noise?",[12,830,831],{},"That last question is underrated.",[12,833,834],{},"Many relay lists get worse because they become a pile of random URLs collected without discipline and forethought.",[53,836,838],{"id":837},"avoid-these-common-mistakes","Avoid these common mistakes",[80,840,842],{"id":841},"adding-every-relay-you-can-find","Adding every relay you can find",[12,844,845],{},"More is not automatically better.",[12,847,848],{},"A huge low-quality relay list can create:",[22,850,851,854,857,860,863],{},[25,852,853],{},"more dead connections",[25,855,856],{},"more duplicates",[25,858,859],{},"more junk",[25,861,862],{},"slower UX",[25,864,865],{},"harder troubleshooting",[80,867,869],{"id":868},"treating-relay-metadata-as-perfect-truth","Treating relay metadata as perfect truth",[12,871,872],{},"NIP-11 and relay list metadata are useful, but they are still inputs, not guarantees.",[12,874,875],{},"Clients should use them intelligently, not blindly.",[80,877,879],{"id":878},"assuming-decentralisation-means-no-trust-decisions","Assuming decentralisation means no trust decisions",[12,881,882,883,886],{},"Decentralisation changes ",[115,884,885],{},"where"," trust decisions happen. It does not eliminate them.",[12,888,889],{},"You still have to decide:",[22,891,892,895,898,901],{},[25,893,894],{},"what infrastructure to use",[25,896,897],{},"which operators to trust enough",[25,899,900],{},"how much redundancy you want",[25,902,903],{},"how much visibility you are willing to give a relay",[53,905,907],{"id":906},"why-good-relay-management-matters-in-porwr","Why good relay management matters in Porwr",[12,909,910,911,914],{},"One reason relay management matters in products like ",[130,912,913],{},"Porwr"," is that bad defaults create bad habits.",[12,916,917],{},"If a relay browser or relay picker shows users:",[22,919,920,923,926,929],{},[25,921,922],{},"dead relays",[25,924,925],{},"spammy relays",[25,927,928],{},"random junk",[25,930,931],{},"no quality cues",[12,933,934],{},"then the feature becomes technically functional but practically poor.",[12,936,937],{},"Good relay management should help users make better decisions with less friction.",[53,939,941],{"id":940},"conclusion","Conclusion",[12,943,944],{},"Choosing Nostr relays is not about finding one magical server. It is about building a small, deliberate set of relays that improves:",[22,946,947,950,953,956,959],{},[25,948,949],{},"reach",[25,951,952],{},"reliability",[25,954,955],{},"discoverability",[25,957,958],{},"privacy posture",[25,960,961],{},"overall usability",[12,963,964],{},"The best relay setup is usually not the biggest one. It is the one that is intentional, understandable, and good enough for the way you actually use Nostr.",[53,966,968],{"id":967},"references","References",[22,970,971,978,985,992,996,1002,1006,1010],{},[25,972,973],{},[64,974,977],{"href":975,"rel":976},"https:\u002F\u002Fnips.nostr.com\u002F11",[744],"NIP-11: Relay Information Document",[25,979,980],{},[64,981,984],{"href":982,"rel":983},"https:\u002F\u002Fnips.nostr.com\u002F50",[744],"NIP-50: Search Capability",[25,986,987],{},[64,988,991],{"href":989,"rel":990},"https:\u002F\u002Fnips.nostr.com\u002F65",[744],"NIP-65: Relay List Metadata",[25,993,994],{},[64,995,67],{"href":66},[25,997,998],{},[64,999,1001],{"href":1000},"\u002Fposts\u002Fwhat-is-nostr","What is Nostr?",[25,1003,1004],{},[64,1005,789],{"href":788},[25,1007,1008],{},[64,1009,783],{"href":782},[25,1011,1012],{},[64,1013,795],{"href":794},[1015,1016,1017],"style",{},"html pre.shiki code .s8B1f, html code.shiki .s8B1f{--shiki-light:#39ADB5;--shiki-default:#F8F8F2;--shiki-dark:#F8F8F2;--shiki-sepia:#F8F8F2}html pre.shiki code .siAel, html code.shiki .siAel{--shiki-light:#39ADB5;--shiki-light-font-style:inherit;--shiki-default:#66D9EF;--shiki-default-font-style:italic;--shiki-dark:#66D9EF;--shiki-dark-font-style:italic;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sI02Y, html code.shiki .sI02Y{--shiki-light:#9C3EDA;--shiki-light-font-style:inherit;--shiki-default:#66D9EF;--shiki-default-font-style:italic;--shiki-dark:#66D9EF;--shiki-dark-font-style:italic;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sbgAB, html code.shiki .sbgAB{--shiki-light:#90A4AE;--shiki-default:#F44747;--shiki-dark:#F44747;--shiki-sepia:#F44747}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":48,"searchDepth":168,"depth":168,"links":1019},[1020,1021,1028,1029,1030,1031,1032,1033,1038,1039,1040],{"id":55,"depth":168,"text":56},{"id":74,"depth":168,"text":75,"children":1022},[1023,1024,1025,1026,1027],{"id":82,"depth":198,"text":83},{"id":106,"depth":198,"text":107},{"id":124,"depth":198,"text":125},{"id":533,"depth":198,"text":534},{"id":554,"depth":198,"text":555},{"id":587,"depth":168,"text":588},{"id":634,"depth":168,"text":635},{"id":688,"depth":168,"text":689},{"id":735,"depth":168,"text":736},{"id":798,"depth":168,"text":799},{"id":837,"depth":168,"text":838,"children":1034},[1035,1036,1037],{"id":841,"depth":198,"text":842},{"id":868,"depth":198,"text":869},{"id":878,"depth":198,"text":879},{"id":906,"depth":168,"text":907},{"id":940,"depth":168,"text":941},{"id":967,"depth":168,"text":968},"nostr","2026-04-11","Learn how to choose Nostr relays without guesswork. This guide covers privacy, reliability, search support, relay quality, and what to avoid.","md",{"url":1046,"title":1047},"v1690313893\u002Fnostr-logo_hwrql1","How to choose nostr relays",{"publishDateTime":1049},"2026-04-11:12:15",true,"\u002Fposts\u002Fhow-to-choose-nostr-relays",{"title":5,"description":1043},{"loc":1051,"lastmod":1054,"changefreq":1055,"priority":1056,"images":1057},"2026-10-20","monthly",0.8,[1058,1060],{"loc":1059},"https:\u002F\u002Fres.cloudinary.com\u002Fthreenine-co-uk\u002Fimage\u002Fupload\u002Ff_jpg,w_1200\u002Fv1690313893\u002Fnostr-logo_hwrql1",{"loc":1061},"https:\u002F\u002Fres.cloudinary.com\u002Fthreenine-co-uk\u002Fimage\u002Fupload\u002Ff_jpg,w_1200\u002Fnostr-read-vs-write-relays_lhxde2","posts\u002Fhow-to-choose-nostr-relays","A practical guide to picking better relays for privacy, reliability, and reach","Choosing better Nostr relays improves reliability, discoverability, privacy, and the overall user experience. Here is a practical framework for making better relay choices.",[1041,1066,1067,1068,1069,1070],"relay","privacy","security","nostr-relays","censorship-resistance","what-is-a-nostr-relay","zDTFwvDQRqZ31okxHmigwp9HDq0lw1ULJ1nM7lsU3UU",{"name":1074,"to":1075,"avatar":1076,"sameAs":1077},"Gary Woodfine","https:\u002F\u002Fgarywoodfine.com","garywoodfine_tlccjw",[1078,1079,1080,1081],"https:\u002F\u002Fgithub.com\u002Fgarywoodfine","https:\u002F\u002Fwww.youtube.com\u002F@Threenineio","https:\u002F\u002Fnjump.me\u002Fnpub1a3jz7w9laar2k77dkkh2rhxunr9zpja5emrl5yrxetamt29swqyqmmt32y","nostr:npub1a3jz7w9laar2k77dkkh2rhxunr9zpja5emrl5yrxetamt29swqyqmmt32y",{"id":1083,"title":1084,"date":1085,"duration":1086,"episode":6,"extension":1087,"featured":1088,"meta":1089,"playlist":6,"post":66,"stem":1090,"summary":6,"thumbnail":1091,"youtubeId":1092,"__hash__":1093},"videos\u002Fvideos\u002Fwhat-is-a-nostr-relay.yml","What Is a Nostr Relay? The Servers Behind the Network","2026-08-11","3:41","yml",false,{},"videos\u002Fwhat-is-a-nostr-relay","blog\u002Fvideos\u002Fwhat-is-a-nostr-relay","zZ_5rwMZx4s","z9vVdZirhzErWcFtT0DVgfAeGyuDZPac9SXIpLx_Wog",[1095,1100],{"title":1096,"path":1097,"stem":1098,"description":1099,"children":-1},"Best Nostr Browser Extensions (2026): Complete Comparison","\u002Fposts\u002Fbest-nostr-browser-extensions-2026","posts\u002Fbest-nostr-browser-extensions-2026","Compare the best Nostr browser extensions of 2026. We review Porwr by Diogel, Alby, Nos2x, and Nsec.app to help you choose the right NIP-07 signer for secure key management.",{"title":1101,"path":1102,"stem":1103,"description":1104,"children":-1},"How to get started with Nostr","\u002Fposts\u002Fhow-to-get-started-with-nostr","posts\u002Fhow-to-get-started-with-nostr","New to Nostr? Learn how to create a key, choose a client or signer, back up your identity properly, and avoid the most common beginner mistakes.",{"id":1106,"extension":1107,"items":1108,"meta":1150,"stem":1151,"__hash__":1152},"navigation\u002Fnavigation.yaml","yaml",[1109,1122,1135,1143],{"label":1110,"children":1111},"products",[1112,1117],{"label":1113,"icon":1114,"description":1115,"to":1116},"Diogel","material-symbols:preview","Keep your Nostr identity in your hands, in your browser, on your phone or on your own server.","\u002Fproducts\u002Fdiogel",{"label":1118,"icon":1119,"description":1120,"to":1121},"Nostrfi","i-lucide-radio-tower","Nostr relay, storage and backend-service infrastructure for builders and operators.","\u002Fproducts\u002Fnostrfi",{"label":1123,"children":1124},"services",[1125,1130],{"label":1126,"description":1127,"icon":1128,"to":1129},"Nostr product development","Focused engineering support for teams building Nostr-native products, tools and protocol-aware user experiences.","game-icons:ostrich","\u002Fservices\u002Fnostr-product-development",{"label":1131,"description":1132,"icon":1133,"to":1134},"Bitcoin product development","Engineering for Bitcoin payments, wallet-connected flows and products where users hold their own keys.","bx:bxl-bitcoin","\u002Fservices\u002Fbitcoin-product-development",{"label":1136,"children":1137},"company",[1138],{"label":1139,"icon":1140,"description":1141,"to":1142},"About","i-lucide-file-text","What we believe, what we build and how we work.","\u002Fcompany\u002Fabout",{"label":1144,"children":1145},"resources",[1146],{"label":1147,"icon":1140,"description":1148,"to":1149},"Blog","Practical Bitcoin, Nostr and product engineering guides.","https:\u002F\u002Fthreenine.blog",{},"navigation","n-Xc9COCwoCHJiMCeBNLauHtuhxcGol-wu9S2og3Rqs",[1154,1155],{"label":1126,"description":1127,"icon":1128,"to":1129},{"label":1131,"description":1132,"icon":1133,"to":1134},[1157,1158],{"label":1113,"icon":1114,"description":1115,"to":1116},{"label":1118,"icon":1119,"description":1120,"to":1121},[1160],{"label":1139,"icon":1140,"description":1141,"to":1142},[1162,1165,1168,1171,1174],{"path":1163,"title":1164},"\u002Flegals\u002Fcookie-policy","Cookie Policy",{"path":1166,"title":1167},"\u002Flegals\u002Fcopyright","Copyright",{"path":1169,"title":1170},"\u002Flegals\u002Fcustomer-support","Customer Support",{"path":1172,"title":1173},"\u002Flegals\u002Fprivacy-policy","Privacy Policy",{"path":1175,"title":1176},"\u002Flegals\u002Fterms-of-service","Terms of Service",{"id":1178,"title":1074,"avatar":1076,"body":1179,"description":1183,"extension":1044,"meta":1198,"name":1074,"navigation":1050,"path":1199,"role":1200,"sameAs":1201,"seo":1202,"stem":1203,"summary":1204,"to":1075,"username":7,"__hash__":1205},"authors\u002Fauthors\u002FGary Woodfine.md",{"type":9,"value":1180,"toc":1196},[1181,1184,1187,1190,1193],[12,1182,1183],{},"Polyglot software engineer with extensive experience in software engineering, with a passion to build great scalable software to solve complex business problems. A track record in developing high-performance backend systems, optimizing architecture, and ensuring continuous availability of critical APIs.",[12,1185,1186],{},"I'm an independent software developer, vendor, architect, consultant, blogger, Bitcoin & Nostr Enthusiast. I've provided software development expertise and helped augment software development skills and teams for a number of startups, product companies, corporate IT shops, and consulting firms.",[12,1188,1189],{},"I started out in the software world back in 1995, building websites with HoTMetaL Pro & ASP and moved on to building web apps with .NET when it released in Beta in 2001, since then, I've shipped systems in just about every industry.",[12,1191,1192],{},"Along my journey, I have also shipped various platforms & products in a number of other programming languages or software development frameworks that have had their moments in the sun, but somehow I have always made way back to C# & .Net.",[12,1194,1195],{},"Over the years, I've strived to improve how I and my teams deliver value to the clients, customers, and end-users. That has led me down the path of exploring Agile, Domain-Driven Design, REST, messaging, distributed systems, and anything else I thought could help.",{"title":48,"searchDepth":168,"depth":168,"links":1197},[],{},"\u002Fauthors\u002Fgary-woodfine","Managing Director",[1078,1079,1080,1081],{"title":1074,"description":1183},"authors\u002FGary Woodfine","independent software developer, vendor, architect, consultant, blogger, Bitcoin & Nostr Enthusiast. I've provided software development expertise and helped augment software development skills and teams for a number of startups, product companies, corporate IT shops, and consulting firms.","30ZWJ-6T2g8S0kLLgUhZWA7_QFUOpa5CElif7tAhsLo",{"title":1074,"name":1074,"role":1200,"summary":1204,"avatar":1076,"username":7,"to":1075},[1208,1217,1220,1227,1232,1239,1248,1256,1261,1268,1274,1281,1291,1300,1306,1312,1317,1322,1331,1335,1342,1348,1352,1357,1362,1367,1372,1376,1380,1385,1392,1401,1407,1412,1420,1425,1431,1436,1441,1445,1451,1456,1460],{"path":1209,"title":1210,"date":1211,"tags":1212,"category":1041,"featureImage":1216},"\u002Fposts\u002Fwhat-is-a-nostr-client","What is a Nostr client?","2026-10-26",[1041,1213,1067,1214,1215],"nostr-client","keys","getting-started",{"url":1046,"title":1210},{"path":1051,"title":5,"date":1042,"tags":1218,"category":1041,"featureImage":1219},[1041,1066,1067,1068,1069,1070],{"url":1046,"title":1047},{"path":1221,"title":1222,"date":1042,"tags":1223,"category":1041,"featureImage":1226},"\u002Fposts\u002Fnostr-relays-privacy-and-security","Nostr Relays, Privacy, and Security",[1041,1066,1067,1068,1224,1225],"key-management","nostr-relay",{"url":1046,"title":1222},{"path":66,"title":67,"date":1042,"tags":1228,"category":1041,"featureImage":1230},[1041,1066,1067,1070,1229,1225],"decentralization",{"url":1046,"title":1231}," What is a Nostr Relay?",{"path":1233,"title":1234,"date":1235,"tags":1236,"category":1041,"featureImage":1238},"\u002Fposts\u002Fwhy-nostr-keys-better-privacy","Why Nostr keys and identity are better for privacy","2026-04-06",[1041,1067,1237,1068],"identity",{"url":1046,"title":1234},{"path":1097,"title":1096,"date":1240,"tags":1241,"category":1041,"featureImage":1247},"2026-03-24",[1041,1242,1243,1068,1244,1245,1246],"browser-extension","nip-07","comparison","porwr","diogel",{"url":1046,"title":1096},{"path":794,"title":1249,"date":1240,"tags":1250,"category":1041,"featureImage":1253},"Getting Started with Nostr: Porwr Setup Guide (2026)",[1251,1067,1041,1245,1246,1252,1243,1242],"social","cryptography",{"url":1254,"title":1255},"v1690313893\u002Fblog\u002Fdiogel-product-header_x3az6t","Porwr Browser Extension",{"path":782,"title":1257,"date":1258,"tags":1259,"category":1041,"featureImage":1260},"How to manage keys for Nostr","2025-12-15",[1041,1214,1067,1068],{"url":1046,"title":1257},{"path":1262,"title":1263,"date":1258,"tags":1264,"category":1041,"featureImage":1267},"\u002Fposts\u002Fhow-to-self-host-your-nip-05-identity","How to self-host your NIP-05 identity",[1041,1265,1067,1266],"nip-05","self-hosting",{"url":1046,"title":1263},{"path":1269,"title":1270,"date":1271,"tags":6,"category":1067,"featureImage":1272},"\u002Fposts\u002Fwhy-privacy-is-a-fundamental-human-right","Why privacy is a fundamental human right","2025-12-09",{"url":1273,"title":1270},"v1690313893\u002Fprivacy-header_exiblo",{"path":1275,"title":1276,"date":1277,"tags":6,"category":1278,"featureImage":1279},"\u002Fposts\u002Fhow-government-monetary-policy-erodes-the-value-of-money","How government monetary policy erodes the value of money","2025-12-01","bitcoin",{"url":1280,"title":1276},"v1719908027\u002Fbitcoin_szcm1m",{"path":1282,"title":1283,"date":1284,"tags":1285,"category":1278,"featureImage":1289},"\u002Fposts\u002Fbitaxe-touch-genesis-batch","Bitaxe Touch Genesis Batch","2025-07-23",[1286,1287,1288],"bitaxe","mining","solo",{"url":1290,"title":1283},"v1690313878\u002Fbitaxe-touch_c6qrjd",{"path":1292,"title":1293,"date":1294,"tags":1295,"category":1278,"featureImage":1299},"\u002Fposts\u002Fbitcoin-is-not-a-ponzi-scheme","Bitcoin is not a Ponzi Scheme","2025-07-22",[1296,1297,1298],"ponzi","economics","investment",{"url":1280,"title":1293},{"path":1301,"title":1302,"date":1294,"tags":1303,"category":1278,"featureImage":1305},"\u002Fposts\u002Fgetting-started-with-public-pool-mining","Getting started with Public Pool Mining",[1287,1288,1304],"lottery",{"url":1280,"title":1302},{"path":1307,"title":1308,"date":1309,"tags":1310,"category":1278,"featureImage":1311},"\u002Fposts\u002Fgetting-started-with-solo-mining","Getting started with solo mining","2025-07-19",[1286,1287,1288,1304],{"url":1280,"title":1308},{"path":1313,"title":1314,"date":1309,"tags":1315,"category":1278,"featureImage":1316},"\u002Fposts\u002Fwhat-is-bitcoin-mining","What is Bitcoin mining",[1287,1278],{"url":1280,"title":1314},{"path":1318,"title":1319,"date":1309,"tags":1320,"category":1278,"featureImage":1321},"\u002Fposts\u002Fwhat-is-solo-mining","What is solo mining",[1288],{"url":1280,"title":1319},{"path":1323,"title":1324,"date":1325,"tags":1326,"category":1278,"featureImage":1329},"\u002Fposts\u002Fhow-to-run-a-bitcoin-node","How to run a Bitcoin Node with Umbrel Home","2025-07-14",[1327,1328],"node","umbrel",{"url":1280,"title":1330},"How to run a Bitcoin node",{"path":1102,"title":1101,"date":1332,"tags":1333,"category":1041,"featureImage":1334},"2024-10-09",[1041,1215,1067,1214],{"url":1046,"title":1101},{"path":1336,"title":1337,"date":1338,"tags":6,"category":1339,"featureImage":1340},"\u002Fposts\u002Fhow-to-use-layouts-and-pages-in-nuxt","How to use layouts and pages in Nuxt","2024-10-08","development",{"url":1341,"title":1337},"v1690313878\u002Fnuxt-header_tbc9cp",{"path":1343,"title":1344,"date":1345,"tags":6,"category":1339,"featureImage":1346},"\u002Fposts\u002Fhow-to-add-tailwindcss-to-nuxt","How to add tailwindcss to nuxt","2024-10-07",{"url":1341,"title":1347},"Getting started with Nuxt",{"path":1349,"title":1347,"date":1350,"tags":6,"category":1339,"featureImage":1351},"\u002Fposts\u002Fgetting-started-with-nuxt","2024-10-06",{"url":1341,"title":1347},{"path":1353,"title":1354,"date":1350,"tags":6,"category":1339,"featureImage":1355},"\u002Fposts\u002Fhow-to-store-terraform_state-in-digital-ocean-space","How to store Terraform state in DigitalOcean Spaces",{"url":1356,"title":1354},"v1690313893\u002Fterraform-header_ixmkgg",{"path":1358,"title":1359,"date":1360,"tags":6,"category":1339,"featureImage":1361},"\u002Fposts\u002Fhow-to-use-terraform-with-digitalocean","How to use Terraform with DigitalOcean","2024-10-05",{"url":1356,"title":1359},{"path":1363,"title":1364,"date":1365,"tags":6,"category":1067,"featureImage":1366},"\u002Fposts\u002Fhow-to-add-fathom-analytics-to-nuxt","How to add Fathom Analytics to Nuxt","2024-07-01",{"url":1341,"title":1364},{"path":1368,"title":1369,"date":1365,"tags":6,"category":1067,"featureImage":1370},"\u002Fposts\u002Fimportance-of-privacy-in-web-analytics","The Importance of Privacy in Web Analytics",{"url":1371,"title":1369},"v1690313893\u002Fanalytics_nlew9f",{"path":788,"title":1373,"date":1365,"tags":1374,"category":1041,"featureImage":1375},"What is a NIP-07 signer?",[1041,1243,1242,1068],{"url":1046,"title":1373},{"path":1000,"title":1001,"date":1365,"tags":1377,"category":1041,"featureImage":1379},[1041,1378,1067,1229],"relays",{"url":1046,"title":1001},{"path":1381,"title":1382,"date":1365,"tags":6,"category":1067,"featureImage":1383},"\u002Fposts\u002Fwhy-choose-privacy-focused-analytics","Why choose privacy focused Analytics",{"url":1384,"title":1382},"v1690313893\u002Fblog\u002Ffathom-header_y7s0x2",{"path":1386,"title":1387,"date":1388,"tags":6,"category":1339,"featureImage":1389},"\u002Fposts\u002Fwhat-is-api-integration","What is API Integration?","2024-06-04",{"url":1390,"title":1391},"v1719908247\u002Fapi_f3f1mh","What is API integration?",{"path":1393,"title":1394,"date":1395,"tags":1396,"category":1278,"featureImage":1398},"\u002Fposts\u002Fhow-blockchain-uses-cryptography","How Blockchain uses Cryptography","2024-05-18",[1397,1252],"blockchain",{"url":1399,"title":1400},"v1690313893\u002Fblockchain_tfrcrd","What is blockchain?",{"path":1402,"title":1403,"date":1404,"tags":6,"category":1339,"featureImage":1405},"\u002Fposts\u002Fhow-to-create-a-websocket-server-in-dotnet","How to create a WebSocket server in dotnet","2024-05-15",{"url":1406,"title":1403},"v1719908486\u002Fwebsockets_pjqtld",{"path":1408,"title":1409,"date":1404,"tags":1410,"category":1278,"featureImage":1411},"\u002Fposts\u002Fwhat-is-blockchain","What is Blockchain",[1397,1278],{"url":1399,"title":1400},{"path":1413,"title":1414,"date":1415,"tags":1416,"category":1278,"featureImage":1418},"\u002Fposts\u002Fintroduction-to-public-and-private-key-cryptography","Public Key Cryptography Explained: A Beginner's Guide","2024-05-12",[1417,1278,1041],"encryption",{"url":1399,"title":1419},"Introduction to public and private key cryptography",{"path":1421,"title":1422,"date":1415,"tags":1423,"category":1278,"featureImage":1424},"\u002Fposts\u002Fwhat-is-bitcoin","What is Bitcoin?",[1397,1278],{"url":1280,"title":1422},{"path":1426,"title":1427,"date":1428,"tags":6,"category":1339,"featureImage":1429},"\u002Fposts\u002Fwhat-are-web-sockets","What are Web Sockets","2023-09-06",{"url":1406,"title":1430},"What are Websockets",{"path":1432,"title":1433,"date":1434,"tags":6,"category":1339,"featureImage":1435},"\u002Fposts\u002Fwhat-is-api-first","What is API First?","2023-07-13",{"url":1390,"title":1433},{"path":1437,"title":1438,"date":1439,"tags":6,"category":1339,"featureImage":1440},"\u002Fposts\u002Fapi-gateway-pattern","API Gateway Pattern","2023-06-10",{"url":1390,"title":1438},{"path":1442,"title":1443,"date":1439,"tags":6,"category":1339,"featureImage":1444},"\u002Fposts\u002Fbackend-for-frontend-design-pattern","Backend for Frontend Design Pattern",{"url":1390,"title":1443},{"path":1446,"title":1447,"date":1448,"tags":6,"category":1339,"featureImage":1449},"\u002Fposts\u002Fguide-api-development","An introductory guide to API Development","2023-06-05",{"url":1390,"title":1450},"API Development",{"path":1452,"title":1453,"date":1448,"tags":6,"category":1339,"featureImage":1454},"\u002Fposts\u002Fwhat-is-a-rest-api","What is a REST API?",{"url":1390,"title":1455},"What is an API?",{"path":1457,"title":1455,"date":1458,"tags":6,"category":1339,"featureImage":1459},"\u002Fposts\u002Fwhat-is-an-api","2023-06-01",{"url":1390,"title":1455},{"path":1461,"title":1462,"date":1458,"tags":6,"category":1339,"featureImage":1463},"\u002Fposts\u002Fwhat-is-api-development","What is API Development ?",{"url":1390,"title":1464},"What is API development?",1793132667043]