Import & Export
LibrisLog provides multiple ways to get data in and out of the system, ensuring your library is always portable.
Book Import
Search Import
The most common way to add books is by searching external sources:
- Click "Add Book" in the library
- Enter a title, author, or ISBN in the search box
- The app queries:
- Select a result to import with full metadata and cover
- Choose an availability value (owned, borrowed, digital access, or to acquire) before saving
ISBN Barcode Scan
On mobile devices:
- Tap the scan button in the import dialog
- Point the camera at an ISBN barcode
- The app detects the barcode and searches automatically
- Pick the search result and select an availability value before saving
Manual Entry
If no search results are found, enter book details manually. Title, author, page count, and availability are required; all other fields are optional.
Authors can be added as multiple values: type a name and press Enter (or pick a suggestion) to add a chip. A book can have any number of authors. Commas inside an author name (e.g. Asimov, Isaac) are preserved — they are not treated as separators.
Search Import
When a search source returns multiple authors for a book (e.g. Open Library, Google Books, or Hardcover), the app keeps them as a list and creates one author per entry. Sources that return a single combined string are split only on ;, &, or and — never on commas.
Data Export
Export your entire library or subsets of data:
Export Formats
| Format | Description |
|---|---|
| JSON | Complete data with all metadata and relationships |
| CSV | Tabular format, one row per book |
| ZIP | Combined JSON + cover images |
Export Datasets
Choose which data to include:
- Books (full metadata)
- Reading progress entries
- Tags
- Cover images
Export Process
- Go to the Data page
- Select datasets and format
- Click Export
- Download the generated file
Data Import
Import data from external sources:

Supported Formats
- JSON — LibrisLog export format
- CSV — Custom field mapping supported
The JSON export mirrors the API shape: author is the joined string (separated with ; ), authors is the list of names, and tags is a list of tag names. All three round-trip through the adaptive import.
For CSV files, a delimiter field appears once a .csv file is selected (default ,). Enter the character your file uses to separate columns (e.g. ; for German/Excel exports) before clicking Parse file.
Field Mapping
When importing CSV, map source columns to LibrisLog fields:
- Source field dropdown shows all columns from the CSV
- Target field shows available LibrisLog properties
- Optional transform expressions (Python) for data conversion
acquisition_status is required for imports. Map it to one of owned, borrowed, digital_access, or to_acquire; use a transform when the source file uses different names.
date_added is importable too — useful when migrating from another tool so the original "added to library" dates are preserved (the LibrisLog JSON export includes it, so exports round-trip losslessly). If a row has no date_added, the import timestamp is used.
Authors are adaptive
The import target field is authors. Its source value adapts:
- Array value (e.g. a JSON
authorslist) → each array entry becomes a separate author. - String value (e.g. a CSV cell) → normally becomes one author, and commas inside the name are preserved, so
"Asimov, Isaac"stays a single author. To encode several authors in a single cell, separate them with;,&, orand(e.g."Frank Herbert; Brian Herbert"). This is how the CSV export writes the dedicatedauthorscolumn, so exports round-trip losslessly.
The import preview shows how each row's author value will be interpreted before you import.
The tags field is adaptive too: a JSON tags array contributes one tag per entry, while a comma-separated string (CSV) is split on commas.
Transform DSL
Per-field Python expressions allow data transformation:
# Examples:
value.upper() # Convert to uppercase
str(int(value)) # Convert to integer then back to string
"https://example.com/" + value # Prefix a URLAvailable variables:
value— The field valuerow— The entire row as a dictionarycontext— Import context (not commonly used)
Predefined Mappings
Common import formats have predefined mappings:
- Goodreads Export — Maps Goodreads CSV columns automatically
Validation
Before importing:
- Parse and preview the data
- Review transformed rows
- Check for errors
- Validate the full dataset
The import process shows progress with a count of imported and failed rows.
Backup & Restore
Backup and restore are admin-only features. See Administration for details.
API Access
For programmatic import/export, use the REST API. See the API documentation for details.
