# Creating a Merkle DAG node in Kubo

**URL:** <https://discuss.ipfs.tech/t/creating-a-merkle-dag-node-in-kubo/18298>\
**Category:** Help\
**Tags:** files, kubo\
**Created:** [July 21, 2024, 6:27pm UTC](https://discuss.ipfs.tech/t/creating-a-merkle-dag-node-in-kubo/18298 "2024-07-21T18:27:38Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Snowfield0699](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/snowfield0699/32/8732_2.png) [@Snowfield0699](https://discuss.ipfs.tech/u/Snowfield0699)\
**Post date:** [July 21, 2024, 6:27pm UTC](https://discuss.ipfs.tech/t/creating-a-merkle-dag-node-in-kubo/18298/1 "2024-07-21T18:27:38Z")

</div>

Based on the return value of the `dag get` operation in Kubo, a Merkle DAG node seems like it’s just an IPLD map with keys “Data” consisting of an application-specific payload and “Links” consisting of an array of links, following [this](https://github.com/ipfs/boxo/blob/2816b715439a3472ccf7d78e04d5db3b22952728/ipld/merkledag/pb/merkledag.proto) protobuf.

Given this, I thought using Kubo’s `dag put` operation would allow me to create a Merkle DAG node with my own payload instead of one with a [Unixfs payload](https://github.com/ipfs/boxo/blob/2816b715439a3472ccf7d78e04d5db3b22952728/ipld/unixfs/pb/unixfs.proto).

However, the node I create with `dag put` behaves differently from the one that is created with `files mkdir` and another operations that operate with unixfs. Below is the dag-json representation of one of the Unixfs nodes I have, which I got through `dag get <cid>` after getting the CID from `files stat /`.

```json
{
    "Data": {
        "/": {
            "bytes": "CAE"
        }
    },
    "Links": [
        {
            "Hash": {
                "/": "QmRQo6kz5QvqiBgXRMCasDzjDYqWfspnUoTZRRwW3ByHGj"
            },
            "Name": "test3.txt",
            "Tsize": 22
        },
        {
            "Hash": {
                "/": "QmcJanXS6E7EXdFfwKcnHizRCzdutcf5oBVqQh57tvSXwv"
            },
            "Name": "test6.txt",
            "Tsize": 22
        }
    ]
}

```

Let CID1 be a CID for this node. When I run `ipfs dag get CID1/Links`, I get an error stating that there is no such link named “Links”. However if I copy this dag-json and run it through `dag put` to get CID2, and then run `ipfs dag get CID2/Links`, I get the list of links returned. So it appears to me that there is a difference between the DAG nodes that Unixfs operations create over the ones that the `dag` operations create.

Is someone able to explain this difference? How can I manually create my own Merkle DAG node with a custom “Data” payload that behaves more similarly to the ones that Unixfs creates?
