# How to deep copy JavaScript objects using structuredClone

> Learn how to deep copy a JavaScript object with structuredClone(), the modern DOM API in Node.js 17+ that replaces hacks like JSON.parse(JSON.stringify()).

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2022-05-22 | Topics: [Node.js](https://flaviocopes.com/tags/node/) | Canonical: https://flaviocopes.com/how-to-deep-copy-structuredclone/

For years and years we've had to use weird workarounds to do a **deep clone** of a [JavaScript](https://flaviocopes.com/javascript/) object.

Many of those were bug prone.

Like doing `JSON.parse(JSON.stringify(obj))` where some types are be ignored.

Or worse, copying object properties by reference, introducing bugs down the road.

Today we have `structuredClone()` and it's part of the DOM API.

It's not part of JavaScript, it's a DOM API. 

It's available in recent versions of all modern browsers:

![Browser compatibility table showing structuredClone API support across modern browsers with 75.88% global usage](https://flaviocopes.com/images/how-to-deep-copy-structuredclone/Screen_Shot_2022-05-20_at_07.37.32.jpg)

It's also available in [Node.js](https://flaviocopes.com/nodejs/) 17+.
