> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/grab/cursor-talk-to-figma-mcp/llms.txt
> Use this file to discover all available pages before exploring further.

# clone_node

> Clone an existing node in Figma

Create a duplicate of a node, optionally positioning it at specific coordinates. The cloned node preserves all properties of the original including styles, fills, strokes, and children.

## Parameters

<ParamField path="nodeId" type="string" required>
  The ID of the node to clone
</ParamField>

<ParamField path="x" type="number">
  New X position for the clone. If omitted, the clone will be offset from the original position.
</ParamField>

<ParamField path="y" type="number">
  New Y position for the clone. If omitted, the clone will be offset from the original position.
</ParamField>

## Response

Returns the name and ID of the cloned node, along with its position if specified.

```json theme={null}
{
  "name": "Button Copy",
  "id": "234:567"
}
```

## Examples

### Clone a button without positioning

```typescript theme={null}
const result = await clone_node({
  nodeId: "123:456"
});
// Clone appears near the original with automatic offset
console.log(result.id); // Use this ID to modify the clone
```

### Clone and position a card

```typescript theme={null}
await clone_node({
  nodeId: "123:456",
  x: 400,
  y: 200
});
```

### Create a grid of cloned elements

```typescript theme={null}
const spacing = 120;
const columns = 4;
const rows = 3;

for (let row = 0; row < rows; row++) {
  for (let col = 0; col < columns; col++) {
    await clone_node({
      nodeId: "123:456",
      x: col * spacing,
      y: row * spacing
    });
  }
}
```

### Clone and offset by a specific amount

```typescript theme={null}
// Get original position
const nodeInfo = await get_node_info({ nodeId: "123:456" });
const originalX = nodeInfo.absoluteBoundingBox.x;
const originalY = nodeInfo.absoluteBoundingBox.y;

// Clone 50px to the right and 50px down
await clone_node({
  nodeId: "123:456",
  x: originalX + 50,
  y: originalY + 50
});
```

### Clone multiple times for variations

```typescript theme={null}
// Clone and modify each for different states
const states = ["default", "hover", "active", "disabled"];
const clones = [];

for (let i = 0; i < states.length; i++) {
  const clone = await clone_node({
    nodeId: "123:456",
    x: i * 200,
    y: 0
  });
  clones.push(clone.id);
  
  // Modify clone for each state
  // ...
}
```

## Notes

* The cloned node is an exact duplicate with all properties preserved
* If `x` and `y` are not provided, Figma automatically offsets the clone
* Clone includes all children if the node is a frame or group
* Component instances remain linked to their main component when cloned
* Use the returned ID to further modify the cloned node
* Cloning complex nodes with many children may take longer
