← Guides

Clipboard on Google Chrome: The Complete Guide

Google Chrome is the most common place people copy and paste, but it does not ship a built-in clipboard history UI. Instead, Chrome exposes the OS clipboard through its paste events and the async navigator.clipboard API, and leaves history to the operating system (or to extensions). This guide explains how the clipboard works in Chrome, where to look if you want to see past entries, and how to inspect exactly what is on your clipboard right now.

→ Inspect your clipboard on Chrome right now: open Clipboard Inspector and press Ctrl+V. Every MIME type currently on your clipboard is shown.

How the clipboard works inside Chrome

Chrome does not have its own clipboard buffer. When you press Ctrl+C on a selection, Chrome calls into the OS clipboard API and writes several MIME types at once — typically text/plain and text/html. When you press Ctrl+V anywhere, the browser generates a paste event carrying a ClipboardData object populated from the OS clipboard. Nothing is stored in the profile.

Extensions, PWAs, and web pages can also use the async navigator.clipboard.read() and navigator.clipboard.write() APIs, but each call requires either a user gesture, explicit permission, or both. Chrome prompts with a clipboard permission dialog the first time a page attempts a programmatic read.

Does Chrome have clipboard history?

No — Chrome itself does not. You have three options:

  • OS-level history. On Windows, press Win + V to open the system clipboard history (works for anything copied from any app, not just Chrome). On macOS there is no OS clipboard history.
  • A clipboard-manager extension. Chrome Web Store has several; each sits in the toolbar and records each copy. Be aware: the extension reads every copy you make, so only install one you trust.
  • This tool. Clipboard Inspector keeps a local history of every paste you make here — stored in your browser's localStorage, not on a server. Useful while debugging.

Chrome clipboard permissions

The async Clipboard API (navigator.clipboard.read(), navigator.clipboard.write()) requires clipboard permission on Chrome. States:

  • Write: allowed inside a user gesture (click, key press) without a prompt. Outside a gesture, denied.
  • Read: prompts on first call per origin. Once granted, stays granted for the origin until the user revokes it.
  • Sanitised read: Chrome strips unrecognised application/* MIME types on read for security. To receive a custom type, the writer must register it via ClipboardItem with { unsanitized: true } (Chrome 121+).

For a full permissions walkthrough see The Clipboard Permissions API.

How to see what is on your clipboard in Chrome

Option 1: use this inspector

Open clipboardinspector.com in Chrome, press Ctrl+V, and every MIME type and raw value is displayed. Works on Linux, Windows, macOS, and ChromeOS.

Option 2: Chrome DevTools console

Open DevTools (F12), paste into any input, and log e.clipboardData.types:

document.body.addEventListener('paste', (e) => {
  for (const type of e.clipboardData.types) {
    console.log(type, '=>', e.clipboardData.getData(type))
  }
})

Option 3: async read in the DevTools console

const items = await navigator.clipboard.read()
for (const item of items) {
  for (const type of item.types) {
    const blob = await item.getType(type)
    console.log(type, await blob.text())
  }
}

The first call will prompt for clipboard permission. Click Allow.

Common Chrome clipboard issues

  • "Copy button works locally but not on production." The Clipboard API is disabled on insecure origins. Serve the site over HTTPS.
  • "Paste event returns no text." The copy source is an image-only app (some screenshot tools). Check clipboardData.items for an image/* entry.
  • "navigator.clipboard is undefined." You are on HTTP or inside an iframe without allow="clipboard-read; clipboard-write".
  • "Copy from a background tab throws." Chrome requires the document to be focused. Call window.focus() before writing.

Chrome on mobile (Android)

Clipboard behaviour on mobile Chrome mirrors desktop, with one major limitation: the async navigator.clipboard.read() API is partially supported and often requires the page to be the topmost app. For a full breakdown see Clipboard API Support on Mobile.

Related