---
title: Library
sidebarTitle: Library
---
Libraries are self-contained directories that store all your data, metadata, and thumbnails in one place. Each library lives in a single folder with a `.sdlibrary` extension. You can move libraries between machines, back them up to external drives, or share them with others by copying the directory. When you open a library, Spacedrive loads its database and configuration into memory and locks it to prevent corruption from concurrent access.
## Structure
Each library contains `library.json` for configuration and metadata, `database.db` for the SQLite database, and a `thumbnails/` directory with two-level sharding for performance. The thumbnails directory includes `metadata.json` for generation settings. A `.sdlibrary.lock` file appears when the library is open to prevent multiple processes from accessing it simultaneously.
Future directories include `previews/` for full-size previews, `indexes/` for search indexes, and `exports/` for temporary exports.
## Core Components
The **LibraryManager** creates, opens, and discovers libraries on your system. Each active **Library** instance holds a database connection and loaded configuration. The **LibraryConfig** stores settings like thumbnail quality and sync preferences in `library.json`.
## Working with Libraries
Create a library with `create_library("My Photos", None)`. Omit the path to use your default libraries directory. Open an existing library with `open_library()` by providing its path. The manager checks for lock files and loads configuration before returning the instance.
Scan your system for libraries with `scan_for_libraries()`. This searches common locations and returns metadata without opening each library.
## Thumbnail Management
Libraries store thumbnails using content-addressed storage with two-level directory sharding. Save thumbnails with `save_thumbnail()`, check existence with `has_thumbnail()`, and retrieve them with `get_thumbnail()`. Thumbnails organize automatically into subdirectories based on their content hash.
## Configuration
The `library.json` file stores all library settings:
Schema version for compatibility
Unique UUID for the library
Display name of the library
User-configurable options including thumbnail quality and sync preferences
Cached counts and sizes for quick display
## Portability
Self-contained libraries work immediately after copying to a new location with zero configuration. Copy the entire folder to create a complete backup. Store libraries on external drives, network shares, or cloud-synced folders for automatic backup.
Future versions will add new directories for features like search indexes and version history without breaking existing libraries.