Skip to content

Service limits

SharePoint enforces the limits below. The library declares them in office365.sharepoint.thresholds.Limits and binds them to the model with the @limit decorator — warnings by default, never a silent truncation. The list view threshold is the one most callers meet; see Large lists and folders for the paging and indexing recipes.

Sources:

from office365.sharepoint.thresholds import Limits, limit, warn_if_exceeds

warn_if_exceeds(Limits.LIST_VIEW, item_count, context="list 'Orders'")

@limit(Limits.LIST_VIEW, arg="page_size")   # declare + enforce on the model
def get_items(page_size=None): ...
Limit Value Kind Scope Bound at Notes
list view threshold 5,000 items threshold list Folder.get_files, List.get_items page through the data or index the filtered/sorted column to exceed it
list view threshold (auditors/admins) 20,000 items threshold list —
index add/remove threshold 20,000 items threshold list — applies while adding or removing a column index
delete list/folder threshold 100,000 items threshold list —
rename folder threshold 100,000 items threshold folder — renaming a folder within the same library
list view lookup threshold 8 joins threshold query — queries with more joins are blocked
max items per list/library 30,000,000 items supported list —
max indexed columns 20 columns supported list — SharePoint Online allows roughly 20 indexed columns
single line of text column length 255 chars threshold column — indexed text columns are limited to 255 characters
list row size 8,000 bytes boundary list item — 300 bytes are reserved; ~7,700 are usable
file upload 250 GB boundary file FileCollection.upload_content SharePoint Server 2016/2019 caps at 10 GB (15 GB in Subscription Edition)
file attached to a list item 250 MB boundary list item —
ZIP download 20 GB boundary download — the autogenerated ZIP when downloading multiple files
simple upload (Files/add) 4 MB threshold file — larger files use a resumable upload session
upload session chunk 4 MB supported file — default chunk size for resumable uploads
decoded file path length 400 chars boundary file — the folder path plus file name after decoding
long OneDrive URL 400 chars boundary url — the decoded full file URL; OneDrive/SharePoint sync fails beyond it
file name length 128 chars threshold file — the FileLeafRef name; the migration path scanner flags longer names
Excel workbook opened in the browser 10 MB threshold file — larger Excel files prompt to open in the Excel client instead of the browser
items per bulk/batch operation 100 items boundary batch ClientContext.execute_batch, Entity.execute_batch the OData batch size the client uses
batch request size 1 MB supported batch — conservative client cap for a SharePoint OData batch
managed metadata terms 1,000,000 terms supported tenant — global and site-level terms combined
managed metadata term labels 2,000,000 labels supported tenant —
managed metadata term properties 1,000,000 properties supported tenant —
global term sets 1,000 term sets supported tenant —
global term groups 1,000 term groups supported tenant —
terms per managed metadata column (default) 50 terms supported column — more than this is allowed but downstream experiences aren't guaranteed
permission inheritance break/reinherit 100,000 items threshold list — above this many items you can't break or reinherit permissions on the list/folder
unique security scopes 50,000 scopes threshold list — the recommended general limit is 5,000
recommended unique security scopes 5,000 scopes supported list —
ACL propagation child objects 500 objects threshold list — propagation fails beyond this many uniquely scoped children
SharePoint groups per site 10,000 groups supported site —
users per SharePoint group 5,000 users supported group —
compliance policies per tenant 10,000 policies supported tenant — eDiscovery/retention holds count toward this, shared with DLP and sensitivity labels
major versions 50,000 versions supported file — SharePoint Server 2019 allows 400,000
minor versions 511 versions boundary file —
lists and libraries per site collection 2,000 lists supported site —
subsites per site 2,000 sites threshold site —
max storage per site collection 25 TB boundary site —
overall site metadata 1000 GB supported site — metadata rarely reaches this size
move/copy total file size 100 GB threshold transfer — across sites and containers
move/copy file count 30,000 files threshold transfer —
cross-geo copy/move file size 15 GB threshold file —
OneNote file in move/copy 2 GB threshold file —
large file for migration (SMAT) 15 GB supported file — SMAT flags files over this as slow/hard to migrate; SPO upload allows 250 GB (SP2019 10-15 GB)
files in a synced library 300,000 files supported library — OneDrive sync performance limit

Migration assessment

The pre-migration assessment (MigrationAssessor / MigrationTenantAssessor) reports several of these limits as SPMT scan-assessment risk codes:

SPMT risk code Limit Scanner
LIST_VIEW_EXCEED_LIMIT list view threshold LargeListScanner
ITEM_COUNT_EXCEED_INDEX_LIMIT index add/remove threshold LargeListScanner
ITEM_COUNT_EXCEED_LIMIT max items per list/library LargeListScanner
LIST_VIEW_LOOKUP_EXCEED_LIMIT list view lookup threshold LookupColumnScanner
UNIQUE_PERMISSION_EXCEED_LIMIT unique security scopes PermissionScanner

Each AssessmentIssue carries the risk_code, and report.by_risk_code groups the issues by code. The LongOneDriveUrls detail report (LongOneDriveUrlsScanner) additionally flags files whose full URL crosses LONG_ONEDRIVE_URL; ThicketFolder (THICKET_FOLDER_UNSUPPORTED) and UnsupportedSiteTemplates cover the remaining blockers.