---
title: How to duplicate a page in WordPress
description: Copy a page by hand, see exactly what that loses, and learn what a real duplicate has to copy — content, meta, featured image, template, taxonomy.
pubDate: 2026-08-08
source: https://wpproadmin.com/guides/duplicate-page-wordpress/
---

WordPress has no duplicate button. Twenty years in, there is still no "copy this page" link in the pages list, no Duplicate item in the bulk actions dropdown, nothing in the editor's tools menu. If you build pages that share a layout — service pages, location pages, landing pages, event pages — you have almost certainly rebuilt the same page from scratch more than once.

There are two honest ways to solve this. Copy the page by hand and accept what gets left behind, or install something that copies the whole record. Which one is right depends on how much of your page lives outside the words on it. Start with the manual method, because it costs nothing and it teaches you exactly what a duplicate is made of.

## The copy-and-paste method

The version everyone tries first: open the page you want to copy, select everything in the editor, copy it, create a new page, paste, save as draft.

If you are in the block editor, do not select the text on the front end of your site and copy that — you will paste back rendered HTML and WordPress will guess at how to turn it into blocks. Copy from inside the editor instead. Click into the canvas, press `Ctrl`/`Cmd` + `A` once to select the block you are in and again to select all blocks, then copy. In the Classic editor, switch to the Text tab first, not Visual, and copy the raw HTML.

This works. In about thirty seconds you have a new draft whose body is identical to the original. It is genuinely the right answer when the page is mostly words and you only need it once.

## What copy-and-paste quietly loses

The trouble is that a WordPress page is not just its content. It is one row in the posts table plus a scatter of rows in other tables, and copy-and-paste only ever touches the first field of the first row. Everything below is left behind, silently, with no warning and no error:

- **The featured image.** It is not part of the content. It is a meta value pointing at an attachment ID, and your new draft has none.
- **All post meta.** This is the big one. SEO title and meta description, Open Graph overrides, custom fields, per-page settings your theme added, and — on many sites — the entire page builder layout. Builders that store their canvas in post meta rather than in the content will hand you a completely blank page.
- **The page template.** If the original used a full-width or landing-page template, the copy comes back on the default template and looks wrong immediately.
- **Taxonomy terms.** Categories, tags, and any custom taxonomy your post type registers. For pages this is often empty; for posts and custom post types it usually is not.
- **The parent page and menu order.** A child page copied this way lands at the top level, outside the URL structure and the navigation you built.
- **Comment and ping status, post format, and the author.** Small things, until one of them differs from the original and you spend an afternoon finding out why the two pages behave differently.

None of this is visible in the editor. The copy looks right, publishes fine, and then does something unexpected three weeks later. That is what makes the manual method risky at scale rather than merely slow.

## Copy all blocks: the better manual route

The block editor has a shortcut worth knowing. Open the options menu — the three vertical dots at the top right of the editor — and look for **Copy all blocks** under Tools. One click puts the complete block markup of the page on your clipboard, exactly as WordPress stores it, comment delimiters and all. Paste it into a new page and every block returns with its attributes intact: column widths, alignments, colors, anchor IDs, block-level custom classes.

The other route to the same thing is the code editor. Press `Ctrl` + `Shift` + `Alt` + `M` to switch the editor into code view, select everything, copy, then paste into the code view of the new page and switch back. This is the most faithful manual copy available, because you are moving the stored string rather than a rendering of it.

<!-- screenshot: block editor options menu open, cursor on "Copy all blocks" under Tools -->

Both routes copy the content perfectly and still copy nothing else. The list above applies unchanged. Understand that boundary and the manual method becomes a precise tool: it is a content copier, not a page copier.

## What a real duplicate has to copy

If you are evaluating a plugin, or writing your own copy routine, this is the checklist. A duplicate that deserves the name reproduces:

- **The content** exactly as stored, block markup included.
- **The title**, usually with a marker like "(copy)" so you can tell the two apart in the pages list.
- **The excerpt**, which is a separate field and is frequently forgotten.
- **Every post meta key**, with a few sensible exclusions: editing locks (`_edit_lock`, `_edit_last`) and old-slug records (`_wp_old_slug`) belong to the original and mean nothing on a copy. Any meta a plugin uses to store a unique external ID — a payment reference, a sync key — should be skipped too, or you end up with two records claiming the same identity.
- **The featured image**, which comes along automatically once meta is handled properly, because it is stored as `_thumbnail_id`. The two pages end up sharing that one file rather than owning separate copies — worth knowing if you ever need to [replace it and have the swap reach both pages at once](/guides/replace-image-wordpress-same-url/).
- **The page template**, likewise, stored as `_wp_page_template`.
- **All taxonomy terms**, across every taxonomy registered for that post type — not just categories and tags.
- **Parent and menu order**, so a child page stays a child page.

Get those right and the copy behaves identically to the original everywhere: in the editor, in your theme, in your SEO plugin, in the front-end queries that list it.

## What a duplicate must not copy

Just as important, and easier to get wrong:

- **The slug.** The copy needs its own. Publish a duplicate carrying the original's `post_name` and WordPress appends a suffix, which is not a decision you want made for you — pick the URL yourself before publishing.
- **The publish status.** A duplicate should always arrive as a draft. Anything else means the moment you click copy you have a second live page competing with the first, at a URL you did not choose, indexed before you have looked at it.
- **The publish date.** A copy dated to match the original sorts into your archives and feeds as if it were published last spring. New record, new date.
- **Comments.** They belong to the conversation on the original page, not to the copy.

Those four exclusions are the difference between a duplicate you can trust and one that puts something live behind your back.

## The plugins that already do this

Two duplicate plugins dominate the WordPress directory, one on more than four million sites and the other on more than three million. Both have been around for years. Read their one-star reviews and you find two different problems, which is the useful part.

The larger of the two is the Yoast Duplicate Post family, and it copies pages correctly — it handles the checklist above about as well as anything does. Its one-star reviews are overwhelmingly not about copying. They are about upgrade banners, "rate us" notices, an onboarding screen after updates, and a settings page that keeps reintroducing itself. People are annoyed by the plugin's manners, not its work. The same family also ships a Rewrite & Republish mode, which clones the live page, lets you edit the clone in private, and swaps it back in on save — really a way to [edit a published page without taking it offline](/guides/edit-published-page-without-unpublishing/) rather than to duplicate one for good.

The other big one draws a different kind of complaint. Its one-star reviews are about the copying itself: sites slowing down, permalinks coming back wrong, duplicates that are fine most of the time and occasionally a mess. That is the worse failure, because you find out about it later — usually on a page that is already live.

Annoying-but-correct and quiet-but-broken are opposite problems, and they argue for the same thing. What you want from a duplicate feature is that it does the whole job and brings nothing else with it: no banner, no wizard, no surprise in the permalink.

## The shortcut

Duplicate is one of the content tools in WP Pro Admin, shipping in version 2.2.0. It adds a Duplicate link to the row actions for posts, pages, and every custom post type — one click, and you land in the editor on a complete draft copy.

<!-- screenshot: Pages list row actions expanded, showing the Duplicate link next to Edit/Trash/View -->

It copies what the checklist above says to copy: content, title, excerpt, all meta minus the keys that should not travel, featured image, page template, every taxonomy term, parent and menu order. It leaves the slug, the status, and the date alone, so nothing goes live until you say so. Switch the feature off and there is nothing left behind in your database.

<!-- screenshot: new draft opened in the editor immediately after clicking Duplicate, showing the "(copy)" title and draft status -->

WP Pro Admin is a [free download](/), GPL, and it will never show you an ad, an upgrade nag, or a promotional notice — a promise enforced by a test in the build, not by a paragraph on a website.