# How does IPNS work?

**URL:** <https://discuss.ipfs.tech/t/how-does-ipns-work/1482>\
**Category:** Help\
**Tags:** js-ipfs, ipld, ipns\
**Created:** [November 21, 2017, 12:48am UTC](https://discuss.ipfs.tech/t/how-does-ipns-work/1482 "2017-11-21T00:48:56Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![rklaehn](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/rklaehn/32/244_2.png) [@rklaehn](https://discuss.ipfs.tech/u/rklaehn)\
**Post date:** [November 22, 2017, 5:23pm UTC](https://discuss.ipfs.tech/t/how-does-ipns-work/1482/2 "2017-11-22T17:23:13Z")

</div>

This [discussion](https://discuss.ipfs.tech/t/confusion-about-ipns/1414/4) contains some info regarding how IPNS currently works and what its limitations are.

> [@aeftimia](#):
>
> I could not find any complete spec on how it is actually implemented. I’ve been trying to navigate the implementations and figure out the code structure, and I figured this was probably best left as a community question. I’d greatly appreciate a pointer to name query and resolution is in Go or Node implementations.

I have been looking at the go implementation, since that is what we use. The ipns stuff can be found in [https://github.com/ipfs/go-ipfs/tree/master/namesys](https://github.com/ipfs/go-ipfs/tree/master/namesys)

not sure about the js impl, but the package structure should be similar.

---

_[View the full topic](https://discuss.ipfs.tech/t/how-does-ipns-work/1482)._
