Every method for copying SharePoint list items across lists or sites preserves something different. Get it wrong and you lose the column types, the attachments, the lookup relationships, or the original Created By timestamps. This comparison covers what each approach actually delivers.
| Method | Scale | Column types preserved | Attachments | Created By / dates | Effort |
|---|---|---|---|---|---|
| Manual (browser UI) | 1-20 items | Partial | No | No | High |
| Export to Excel / re-import | 100s of items | No (all text) | No | No | Medium |
| PnP PowerShell | Any scale | Yes (with scripting) | Yes (extra steps) | Yes (SystemUpdate) | High (scripting) |
| ShareMaster Copy To / Clone Master | Any scale | Yes | Yes | Yes | Low |
Why Copying List Items Is Harder Than It Looks
A SharePoint list is not a spreadsheet. It carries column types (person pickers, lookup columns, choice fields, managed metadata), item-level version history, attachments stored as child objects, and system metadata fields like Created By and Modified that SharePoint normally prevents third-party writes from touching. Moving that structure between lists within a site is already non-trivial. Across site collections or tenants, the complexity increases further.
Two constraints drive most of the trade-offs below. First, the SharePoint REST API and CSOM write standard list item properties under the authenticated user, overwriting original authorship unless the caller has explicit system update permissions. Second, cross-site-collection lookup columns cannot be preserved as working relationships: they must either be flattened to a text value or re-pointed at a matching column in the destination list.
Method 1: Manual Copy-Paste via the Browser
How it works
Open the source list, switch to grid (Quick Edit) view, select the rows you need, copy them to the clipboard, then paste into a destination list opened in Quick Edit in another tab. For very small lists with simple column types, this is the fastest start for a one-off task.
What it preserves and what it loses
| Data type | Outcome |
|---|---|
| Single-line text and number columns | Preserved (manual re-entry or paste) |
| Choice columns | Preserved only if the destination list has identical choices configured |
| Lookup columns | Lost - must be re-linked to the destination lookup source manually |
| Person or Group columns | Preserved only if the user exists in the destination tenant |
| Attachments | Not copied - must be downloaded and re-attached individually |
| Created By / Modified By / dates | Reset to the copying user and current timestamp |
| Item version history | Not preserved |
Verdict: suitable only for very small lists where metadata fidelity doesn't matter.
Method 2: Export to Excel, Then Import
How it works
From the list view, select "Export to Excel". This downloads a .iqy file that opens in Excel as a data-linked table. The data can be copied, reformatted, and re-imported into a new list using SharePoint's "Import from spreadsheet" option, or pasted into an existing list's grid view.
The Excel export is a snapshot of display values, not the underlying data model. Lookup columns export as the display text of the looked-up item, not the item ID. When re-imported, SharePoint has no way to reconstruct the relationship. The destination list gets a text column containing the display value rather than a working lookup column.
What it preserves and what it loses
| Data type | Outcome |
|---|---|
| Text values | Preserved as text |
| Column types (choice, lookup, person, managed metadata) | All flattened to single-line text on import |
| Multi-value columns | Exported as semicolon-separated text; may not import cleanly |
| Attachments | Not included in the export |
| Created By / Modified By / dates | Reset on import |
| Managed metadata term hierarchy | Term label exports; term GUID and hierarchy are lost |
Verdict: useful for quick data extraction and reporting, but not for migrating a live list with working column types. The round-trip destroys the list schema.
Method 3: PnP PowerShell
How it works
PnP PowerShell exposes Get-PnPListItem and Add-PnPListItem cmdlets that together allow a scripted copy of items between any two lists, including across site collections and across tenants. The script must handle schema differences, attachment downloads and re-uploads, and the system update permission requirement for metadata fidelity.
General script shape
- Connect to the source site with
Connect-PnPOnlineand enumerate items withGet-PnPListItem -List "SourceList" -PageSize 500. - For each item, map source column names to destination column names and build a value hashtable.
- Connect to the destination site and call
Add-PnPListItem -List "DestList" -Values $hashtable. - For attachments: call
Get-PnPListItemAttachmentto download each file, thenAdd-PnPListItemAttachmenton the new item. - To preserve Created By and original modification dates, the calling account needs Site Collection Admin rights and the script must call
Set-PnPListItem -SystemUpdateafter the initial add.
Key limitations
- Cross-site lookup columns won't carry over as working lookups. The destination list needs its own independent lookup source configured.
- Person columns require the user to exist in the destination tenant. In a cross-tenant migration, this means pre-provisioning users or accepting that person fields will be empty post-copy.
- Large lists hit REST throttling. Any script handling tens of thousands of items needs retry logic with exponential back-off and a checkpointing strategy to resume after failures.
Verdict: the most flexible option for admins who are comfortable writing and testing PowerShell. For lists over 5,000 items or for cross-tenant work, the scripting effort is significant.
Method 4: ShareMaster Copy To and Clone Master
ShareMaster's Copy To handles same-tenant moves and copies of lists and libraries between site collections through a point-and-click interface. Clone Master extends this to cross-tenant migrations, including source-to-destination column mapping for schema differences.
| Data type | Outcome |
|---|---|
| Column types (choice, managed metadata, person) | Preserved in the destination list |
| Attachments | Copied with each item automatically |
| Created By / Modified By / dates | Preserved via migration API write-back |
| Cross-tenant person columns | Mapped where the destination user account exists; flagged for review where it does not |
| Lookup columns | Within-site lookups preserved; cross-site lookups mapped to text with the display value |
| Large lists (10,000+ items) | Handled with built-in resume and throttle management |
For a same-tenant move between site collections, Copy To completes this in a few clicks without scripting. For cross-tenant work (a merger, divestiture, or client tenant consolidation), Clone Master is the appropriate path. See the step-by-step guide to copying a SharePoint list to another site for the full walkthrough.
Decision Matrix: Which Method for Your Situation
| Situation | Best method |
|---|---|
| Under 20 items, no lookup columns, metadata fidelity not required | Manual copy via browser |
| Need a flat data extract for reporting or a spreadsheet hand-off | Export to Excel |
| Hundreds or thousands of items, comfortable with PowerShell, same tenant | PnP PowerShell |
| Cross-tenant migration, full metadata fidelity required | Clone Master |
| Same-tenant copy with attachments, no scripting appetite | Copy To (ShareMaster) |
| Large list (5,000+ items), resume support needed | Clone Master, or PnP with custom checkpointing |
| MSP managing many client tenants, repeatable process needed | Clone Master |
Frequently Asked Questions
Can you copy SharePoint list items to another site?
Yes, but the built-in Move To / Copy To feature in SharePoint Online only moves files in document libraries, not list items. For list items across sites or tenants you need PowerShell (PnP), a manual export-and-import process, or a dedicated migration tool such as ShareMaster Clone Master.
Does exporting a SharePoint list to Excel preserve all columns?
Exporting to Excel exports visible column values as plain text, but lookup columns are flattened to their display value (the relationship is lost), multi-valued columns may not round-trip cleanly, and attachments are not included. Re-importing the spreadsheet as a new list loses all column types: every column comes back as single-line text.
Does copying SharePoint list items preserve the Created By and Modified By fields?
By default, no. SharePoint sets Created By and Modified By to the account performing the copy. Preserving them requires Site Collection Admin rights and either SystemUpdate (via PnP PowerShell) or a migration API that supports metadata write-back, such as the SharePoint Migration API used by Clone Master.
Can you move a SharePoint list to another site collection?
The native Move To feature in SharePoint Online does not support moving lists between site collections. Options are PnP PowerShell (scripting the list schema creation and item migration) or a dedicated migration tool such as ShareMaster Clone Master, which handles the full list schema and item content together in one operation.