Migrate SharePoint List to Another Site Without Losing Data or Formatting

  author
Written By Mohit Kumar Jha
Anuraag Singh
Approved By Anuraag Singh
Modified On August 1st, 2025
Reading Time 9 Minutes Reading

Migrating a SharePoint list to another site isn’t supported directly by SharePoint, but there are several effective solutions which will help. Today, I’ll explain how to migrate SharePoint list to another site using the most appropriate ways step by step.

Let’s understand:

Why I Had to Move SharePoint List to Another Site

As a SharePoint admin, I’ve worked on multiple SharePoint Online tenant to tenant migration projects. I’ve found, there are different reasons why I’ve needed to move SharePoint lists across sites:

  • Reorganising sites after a departmental restructure
  • Archiving old project data to a dedicated archive site
  • Moving from a classic site to a modern communication site
  • Consolidating multiple lists into a central repository

Regardless of the reasons to copy SharePoint list to another site, our priority is to complete the migration with zero data loss. That’s why, first, take a look at the prerequisites to ensure a smooth transition.

Prerequisites to Migrate SharePoint List to Another Site

Every transition needs clear planning to get the expected results. So, follow the pre-migration steps:

  • Make sure you have permissions for both sites, including creating one. For the same, you can use a PowerShell script to get SharePoint site permissions.
  • Verify you have full control access on both source and target sites
  • Check if the list uses custom columns or lookup fields
  • Confirm the destination site is active and accessible to move SharePoint list to another site smoothly
  • Find duplicate or irrelevant files and remove them to minimise migration time.
  • Enable the list template feature if using classic experience
  • Identify if attachments or version history need to be preserved
  • Backup SharePoint Online to local storage
  • Test the process on a sample list to avoid data loss

How to Copy SharePoint List to Another Site – Top 5 Methods

Microsoft 365 doesn’t offer any native tool to migrate SharePoint list to another site. But, don’t worry, I researched and found the five best solutions for this transition:

#1. Template Method to Move SharePoint List to Another Site

This is one of the simplest native methods, and can be used by any skill level of user by following these steps:

  1. Open the SharePoint account, then move to the List settings.
  2. Under Permissions and Management, click Save list as template
  3. Check Include Content if needed
  4. Save the .stp file
  5. Open the destination site, and click on the Site Settings > List templates
  6. Upload the .stp file
  7. Create a new list using this template

This is quite easy but only for content migration, as it is unable to move web parts, permissions, and metadata.

#2. Export & Import List in Excel

This is most easiest and quickest solution to migrate SharePoint list to another site, so maybe you already know about this. Users can export the list into an Excel file format and then upload it to the destination site.

Here are the detailed steps to move SharePoint list to another site:

  • Open Source SharePoint Site > My Lists and open the SharePoint list to copy.
  • Click on Export > Export to Excel and save it locally.

move sharepoint list to another site

  • Afterwards, open the destination Site. Click on New > List.
  • Now upload the data from the downloaded Excel file.
  • Finally, Save the changes.

#3. Use Power Automate to Copy SharePoint List to Another Site

Microsoft Power Automate offers the option to move one SharePoint list item to another site.

  • Set up a trigger on the Source SharePoint list. Select the “When an existing item is modified” option.

migrate sharepoint list to another site

  • Search for the item in the destination list to get its ID and update it.
  • Apply the condition to determine whether the item exists or not.

#4. Migrate SharePoint List to Another Site Via Cutting-edge Solution

Honestly speaking, the native methods like Power Automate, export/import and templates work for basic cases. Additionally, they can become time-consuming or risky when dealing with large lists and attachments.

To overcome this situation, I highly recommend to Download SharePoint Migration Tool.

Download Now Purchase Now

Although many software programs are available online, I suggest this one due to these reasons:

  • It supports migrating lists, libraries, attachments, metadata, and permissions
  • Handles bulk migrations across different sites or even tenants
  • Preserves version history and user mapping
  • No need for manual scripting or advanced technical skills
  • Easy-to-use UI that reduces the chances of error

If you still find any type of problem related to this solution, you can contact 24/7 technical support for quick assistance.

Follow the Steps to Move SharePoint List to Another Site

After taking its full version, open it and follow the steps to migrate SharePoint list to another site:

  • Step 1. Choose Microsoft 365 as the Source & Destination.

hyper v recovery

  • Step 2. Mark the list option, and add a Date filter if required.

select partition

  • Step 3. Enter the admin credentials of both Source & Destination accounts, and validate them.

scanned vhd file

  • Step 4. Add Users and then load Sites into the tool via the Fetch option.

no

  • Step 5. Finally, hit the Start Migration button.

migration options

#5. Copy SharePoint List to Another Site Using PowerShell

PowerShell is quite a complex method, and it is recommended only for technical users. Naive users can opt for any options mentioned above. So, let’s start by running these commands as mentioned in official Microsoft PowerShell guide to migrate SharePoint list to another site:

Install-Module -Name PnP.PowerShell
Connect-PnPOnline -Url https://[entertenantname].sharepoint.com/sites/[source site] -Interactive
Get-PnPSiteTemplate -Out C:\Temp\Lists.xml -ListsToExtract “List Y”, “List Z” -Handlers Lists
Add-PnPDataRowsToSiteTemplate -Path C:\Temp\Lists.xml -List “List Y”
Add-PnPDataRowsToSiteTemplate -Path C:\Temp\Lists.xml -List “List Z”
Connect-PnPOnline -Url https://[entertenantname].sharepoint.com/sites/[destination SharePoint site] -Interactive
Invoke-PnPSiteTemplate -Path “C:\Temp\Lists.xml”
If the SharePoint list contains some attachments, then execute the below PowerShell script.
Function Copy-SPListAttachments()
{
param
(
[Parameter(Mandatory=$true)] [Microsoft.SharePoint.Client.ListItem] $SourceItem,
[Parameter(Mandatory=$true)] [Microsoft.SharePoint.Client.ListItem] $DestinationItem
)
Try {
$AllListAttachments = Get-PnPProperty -ClientObject $SourceItem -Property “AttachmentFiles”
$AllListAttachments | ForEach-Object {
$File = Get-PnPFile -Connection $SourceCont -Url $_.ServerRelativeUrl -FileName $_.FileName -Path $Env:TEMP -AsFile -force
$FileStream = New-Object IO.FileStream(($Env:TEMP+”\”+$_.FileName),[System.IO.FileMode]::Open)
$Attachment_Details = New-Object -TypeName Microsoft.SharePoint.Client.AttachmentCreationInformation
$Attachment_Details.FileName = $_.FileName
$Attachment_Details.ContentStream = $FileStream
$AttachedFile = $DestinationItem.AttachmentFiles.Add($Attachment_Details)
Invoke-PnPQuery -Connection $DestinationConn
Remove-Item -Path $Env:TEMP\$($_.FileName) -Force
}}
Catch {
write-host -f Red “Error Copying Attachments:” $_.Exception.Message
}
}
Function Copy-SPAllListItems()
{
param
(
[Parameter(Mandatory=$true)] [Microsoft.SharePoint.Client.List] $SourceList,
[Parameter(Mandatory=$true)] [Microsoft.SharePoint.Client.List] $DestinationList
)
Try {
Write-Progress -Activity “Reading Source…” -Status “Getting Items from Source List. Please wait…”
$SourceSharePointListItems = Get-PnPListItem -List $SourceList -PageSize 500 -Connection $SourceCont
SourceSharePointListItemsCount= SourceSharePointListItems.count
Write-host “Total Number of List Items Found are:”SourceSharePointListItemsCount
$SourceListFields = Get-PnPField -List $SourceList -Connection $SourceCont | Where { (-Not ($_.ReadOnlyField)) -and (-Not ($_.Hidden)) -and ($_.InternalName -ne “ContentType”) -and ($_.InternalName -ne “Attachments”) }
[int]$Count = 1
ForEach($SourceItem in $SourceSharePointListItems)
{
$ItemsValue = @{}
Foreach($SourceField in $SourceListFields)
{
If($SourceItem[$SourceField.InternalName] -ne $Null)
{
$FieldsType = $SourceField.TypeAsString
If($FieldsType -eq “User” -or $FieldsType -eq “UserMulti”)
{
$PeoplePickerValues = $SourceItem[$SourceField.InternalName] | ForEach-Object { $_.Email}
$ItemsValue.add($SourceField.InternalName,$PeoplePickerValues)
}
ElseIf($FieldsType -eq “Lookup” -or $FieldsType -eq “LookupMulti”) # Lookup Field
{
$LookupIDs = $SourceItem[$SourceField.InternalName] | ForEach-Object { $_.LookupID.ToString()}
$ItemsValue.add($SourceField.InternalName,$LookupIDs)
}
ElseIf($FieldsType -eq “URL”) #Hyperlink
{
$URL = $SourceItem[$SourceField.InternalName].URL
$Description = $SourceItem[$SourceField.InternalName].Description
$ItemsValue.add($SourceField.InternalName,”$URL, $Description”)
}
ElseIf($FieldsType -eq “TaxonomyFieldsType” -or $FieldsType -eq “TaxonomyFieldsTypeMulti”)
{
$TermGUIDs = $SourceItem[$SourceField.InternalName] | ForEach-Object { $_.TermGuid.ToString()}
$ItemsValue.add($SourceField.InternalName,$TermGUIDs)
}
Else
{
$ItemsValue.add($SourceField.InternalName,$SourceItem[$SourceField.InternalName])
}}}
#Copy Created by, Modified by, Created, Modified Metadata values
$ItemsValue.add(“Created”, $SourceItem[“Created”]);
$ItemsValue.add(“Modified”, $SourceItem[“Modified”]);
$ItemsValue.add(“Author”, $SourceItem[“Author”].Email);
$ItemsValue.add(“Editor”, $SourceItem[“Editor”].Email);
Write-Progress -Activity “ List Items starts copying:” -Status “Copying Item ID ‘$($SourceItem.Id)’ from Source List ($($Count) of $($SrcListItemsCount))” -PercentComplete (($Count / $SrcListItemsCount) * 100)
$NewItem = Add-PnPListItem -List $DestinationList -Values $ItemsValue
Copy-SPListAttachments -SourceItem $SourceItem -DestinationItem $NewItem
Write-Host “Copied Item ID from Source to Destination List:$($SourceItem.Id) ($($Count) of $($SrcListItemsCount))”
$Count++
}
}
Catch {
Write-host -f Red “Error:” $_.Exception.Message
}
}
$Source_SiteURL = “https://[tenantnamehere].sharepoint.com/sites/[sitenamehere]”
$Source_ListName = “[enter list name here]”
$Destination_SiteURL = “https://[tenantnamehere].sharepoint.com/sites/[sitenamehere]”
$Destination_ListName = “[enter list name here]”
$SourceCont = Connect-PnPOnline -Url $Source_SiteURL -Interactive -ReturnConnection
$SourceList = Get-PnPList -Identity $Source_ListName -Connection $SourceCont
$DestinationConn = Connect-PnPOnline -Url $Destination_SiteURL -Interactive -ReturnConnection
$DestinationList = Get-PnPList -Identity $Destination_ListName -Connection $DestinationConn
Copy-SPAllListItems -SourceList $SourceList -DestinationList $DestinationList

As we see, these commands are lengthy, but copying and pasting cmdlets doesn’t take much time, just change the variables.

Author’s Verdict

Above all, the solutions are reliable to migrate SharePoint list to another site; you can opt for any. I use all of them according to the situation and migration complexity.

Mainly, I use a specified professional utility to copy document library to another SharePoint site, as I can’t take data loss risk with manual methods. So, my first preference is that, but you can use any of them, according to your requirements, to move SharePoint list to another site.

People Also Ask

Q. Will permissions transfer automatically?
No, native methods don’t migrate permissions. Use PowerShell or a migration tool to replicate them.

Q. Is there a way to preserve version history during migration?
Only some PowerShell scripts or tools, like SysTools Migrator, can preserve version history.

Q. Can I migrate SharePoint list to another site with attachments?
Yes, but not all methods support this. Power Automate requires extra steps; automated tools handle attachments natively.

Q. Can I migrate a list from one tenant to another?
Yes, but you’ll need tools or scripts that support cross-tenant authentication.

Q. When not to move SharePoint list to another site manually?

There are scenarios in which manual migration can pose issues:

  • You lose metadata
  • It’s error-prone and not scalable
  • You can’t preserve version history or permissions
  author

By Mohit Kumar Jha

Mohit is a Microsoft Certified expert for all things Microsoft. He brings a unique perspective gained from nearly a decade of active participation in various IT forums, blogs, and social media. Known in admin circles as the go-to guru for solving user queries in the domain of cloud migration, data backup, and digital forensics. The secret to his core expertise lies in solving problems practically. Through this hands-on experience, he has acquired knowledge in diverse domains like Microsoft 365 Cloud, On-Premise Exchange Server, AD, and Entra ID. He regularly writes, edits, and shares his insights in plain, simple words for troubleshooting everything from common issues to major outages.