How To Copy Text To The Clipboard In ReactJS?
Last Updated :
23 Jul, 2025
In ReactJS, you can copy text to the clipboard using two methods. One way is to use the copy-to-clipboard package, which provides a simple copy() function to handle the task. Alternatively, you can use the browser's built-in window.navigator.clipboard.writeText() method, which copies text to the clipboard directly by calling navigator.clipboard.writeText('your text'). Both methods make it easy to copy text efficiently in your React applications.
Prerequisites
Below are 2 approaches mentioned to copy text to the clipboard using React:
Steps To Copy Text to the Clipboard
Step 1: Create React Project using the following command.
npm create-react-app react-copy-text
cd react-copy-text
Step 2: Install there required dependencies.
npm i --save styled-components copy-to-clipboard
Project Structure
Folder structureDependencies
dependencies": {
"@testing-library/jest-dom": "^5.17.0",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
"copy-to-clipboard": "^3.3.3",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"react-scripts": "5.0.1",
"styled-components": "^6.0.9",
"web-vitals": "^2.1.4"
}Approach 1: Using copy-to-clipboard
To copy text to the clipboard in React we will use the NPM package copy-to-clipboard which enables the copying of any text from the input box or value stored in any component.
Example: Created to input box and link the first input box value to a useState hook instance. Pass this value in teh copy method that trrigers when the given button is clicked.
JavaScript
// Filename - App.js
import Clipboard from "./components/Clipboard.js";
function App() {
return <Clipboard />;
}
export default App;
JavaScript
//Filename - components/Clipboard.js
import React, { useState } from "react";
import copy from "copy-to-clipboard";
import {
Heading,
Input1,
Input2,
Container,
Button,
} from "./Styles";
const Clipboard = () => {
const [copyText, setCopyText] = useState("");
const handleCopyText = (e) => {
setCopyText(e.target.value);
};
const copyToClipboard = () => {
copy(copyText);
alert(`You have copied "${copyText}"`);
};
return (
<div>
<Heading>GeeksforGeeks </Heading>
<Container>
<h2> Copy To Clipboard in React JS</h2>
<Input1
type="text"
value={copyText}
onChange={handleCopyText}
placeholder="Enter the text you want to copy"
/>
<Button onClick={copyToClipboard}>
Copy to Clipboard
</Button>
<Input2
type="text"
placeholder="Enter the text you have copied"
/>
</Container>
</div>
);
};
export default Clipboard;
JavaScript
// Filename - Styles.js
import styled from "styled-components";
export const Container = styled.div`
padding: 2%;
max-width: 600px;
margin: 40px auto;
position: relative;
text-align: center;
`;
export const Heading = styled.h1`
text-align: center;
color: green;
font-size: 40px;
`;
export const Input1 = styled.input`
height: 50px;
width: 80%;
padding: 0;
font-size: 25px;
border-radius: 5px;
`;
export const Input2 = styled.input`
height: 50px;
width: 80%;
padding: 0;
font-size: 25px;
margin-top: 50px;
border-radius: 5px;
`;
export const Button = styled.button`
padding: 10px;
font-size: 20px;
position: relative;
// left: 30%;
margin-top: 10px;
cursor: pointer;
color: white;
background-color: green;
border-radius: 10px;
`;
To start the application run the following command.
npm start
Output: Now open your browser and go to http://localhost:3000/, you will see the following output:
Copy Text using Using copy-to-clipboardApproach 2: Using window.navigator.clipbord method
We will be using the navigator property from window global object to make the text copy to clipboard.
Example: This approach includes the use of window.navigator.clipboard.writeText method to write the data. The value in the textbox will be copied to clipboard when the button is clicked.
CSS
/* Filename - App.css */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
.App {
width: 100%;
max-width: 90%;
margin: auto;
text-align: center;
}
.geeks {
text-align: center;
color: green;
font-size: 40px;
}
textarea {
height: 50px;
width: 80%;
padding: 0;
font-size: 25px;
border-radius: 5px;
margin: auto;
margin-top: 2%;
}
button {
margin: 2%;
padding: 10px;
font-size: 20px;
position: relative;
/* // left: 30%; */
margin-top: 50px;
cursor: pointer;
color: white;
background-color: green;
border-radius: 10px;
}
JavaScript
// Filename - App.js
import Clipboard from "./components/Clipboard.js";
import "./App.css";
function App() {
return <Clipboard />;
}
export default App;
JavaScript
//Filename - components/Clipboard.js
import React, { useState } from "react";
const Clipboard = () => {
const [text, setText] = useState(
"Add text you want to copy"
);
const handleCopyClick = async () => {
try {
await window.navigator.clipboard.writeText(text);
alert("Copied to clipboard!");
} catch (err) {
console.error(
"Unable to copy to clipboard.",
err
);
alert("Copy to clipboard failed.");
}
};
return (
<div className="App">
<h1 className="geeks">GeeksforGeeks</h1>
<textarea
value={text}
onChange={(e) => setText(e.target.value)}
/>
<br />
<button onClick={handleCopyClick}>
Copy to Clipboard
</button>
<textarea />
</div>
);
};
export default Clipboard;
Output: Now open your browser and go to http://localhost:3000/, you will see the following output:
Copy Text To The Clipboard In ReactJS
Explore
React Fundamentals
Components in React
React Hooks
Routing in React
Advanced React Concepts
React Projects