Office 365 – Check your site for broken links in SharePoint Online – Part 1

On Tech Community I came across a question about how to  check for broken links on your SharePoint sites in SharePoint Online.

So I’m first starting with the connection to a site collection in Office 365 using PnP PowerShell:

[code lang=text]
$cred = get-Credential -Message “Pass” -UserName “”
Connect-PnPOnline https:/ / -Credentials $cred

Then to check if a url exists I’m running:

invoke-webrequest $url -DisableKeepAlive -UseBasicParsing -Method head

this returns the following for a valid request:

StatusCode : 200
StatusDescription : OK
Content :
RawContent : HTTP/1.1 200 OK
Pragma: no-cache
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-Frame-Options: DENY
x-ms-request-id: afdbecd9-02c3-419c-8677-94ef...
Forms :
Headers : {[Pragma, no-cache], [Strict-Transport-Security, max-age=31536000; includeSubDomains], [X-Content-Type-Options,
nosniff], [X-Frame-Options, DENY]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml :
RawContentLength : 0

So now I just have to go through all sites and all the lists and libraries in my site to collect all the urls from the content. First looping through all the sites.

$web = Get-PnPWeb
Get-WebForBrokenLinks -Web $web
ForEach ($subweb in $subwebs)
   Get-WebForBrokenLinks -Web $subweb

I will go through the content in part 2 of this series where I will implement the Get-WebForBrokenLinks function that will use the invoke-webrequest.


In the meanwhile there is also a uservoice  that needs up voting:

Part 2 of this series can be found here:


11 thoughts on “Office 365 – Check your site for broken links in SharePoint Online – Part 1

  1. Hi

    PS doesn’t seem to recognise Get-WebForBrokenLinks – how do I overcome this?? I have module SharePointPnPPowerShellOnline v 2.28.18 installed

    Can anyone help please.


  2. It seems to me that as long as the site collection part of the URL is valid, the Invoke-WebRequest returns 200. If the rest of the URL is actually not valid, it still returns 200, giving you a false positive.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: