Data Management
Export and import bookmarks in JSON or CSV formats
Data Management
Use data management to back up, move, and restore bookmarks with JSON or CSV files.
Current implementation scope
The plugin currently supports JSON and CSV import/export only. XML export, batch export jobs, custom schema mapping, compression, and per-item import prompts are not available in the current release.
Export
Open Export
- Sidebar: click Export
- Manage Bookmarks window: click Export Bookmarks
Choose Format
Select JSON or CSV.
Save File
Confirm the browser download/save prompt from the export dialog.
JSON export format (actual)
JSON export writes a versioned object with bookmarks and collection data:
{
"version": 2,
"bookmarks": [
{
"id": "m2h5-1a-9k",
"title": "Important scene",
"timestamp": 3420.8,
"filepath": "/Movies/Inception.mp4",
"description": "Multi-layer explanation",
"createdAt": "2024-01-10T14:22:33.456Z",
"updatedAt": "2024-01-10T14:22:33.456Z",
"tags": ["favorite", "study"]
}
],
"collections": [],
"smartCollections": []
}Notes:
- Exports the full bookmark set from storage.
- Includes
collectionsandsmartCollectionsin v2 exports. - Does not include a separate metadata block.
CSV export format (actual)
CSV export uses a fixed schema:
id,title,timestamp,filepath,description,createdAt,updatedAt,tags
"m2h5-1a-9k","Important scene","3420.8","/Movies/Inception.mp4","Multi-layer explanation","2024-01-10T14:22:33.456Z","2024-01-10T14:22:33.456Z","favorite;study"Notes:
- Header row is always included.
- Delimiter is always a comma.
- Tags are serialized as semicolon-separated values.
- Formula-dangerous leading characters (
=,+,-,@, tab, carriage return) are prefixed with'for CSV safety.
About export dialog options
The current backend only applies the selected format (json/csv). Options such as field selection, delimiter overrides, metadata toggle, and export filters are not currently applied to export output.
Import
Open Import
- Sidebar: click Import
- Manage Bookmarks window: click Import Bookmarks
Select File
Choose a .json or .csv file (10 bytes to 50 MB).
Review Options and Import
Configure duplicate handling and ID preservation, then click Import Bookmarks.
Supported JSON input
The importer accepts:
- v1: a plain bookmark array
- v2: an object with
bookmarks(plus optionalcollectionsandsmartCollections)
Imported text fields are sanitized (HTML tags stripped) before storage.
Supported CSV input
CSV import currently expects:
- Comma-delimited rows
- A header row with required columns:
id,title,filepath - Optional columns:
timestamp,description,createdAt,updatedAt,tags
Parsing details:
tagsuses semicolon-separated values (tag1;tag2)timestampis parsed from numeric text (e.g.3420.8)- Values like
3420.8 (00:57:00)are accepted (numeric prefix is used)
Automatic CSV field mapping, alternate delimiters, and encoding selection are not currently implemented.
Option behavior (actual)
- Duplicate Handling is ID-based:
skip: keep existing bookmark, skip imported duplicatereplace: replace existing bookmark data at that IDmerge: keep existing bookmark and merge tags only
- Preserve original bookmark IDs:
- on: keeps imported IDs (unsafe IDs are skipped)
- off: generates new IDs
Validation still runs in the backend even if the UI checkbox is toggled. The checkbox currently does not change backend validation behavior.
Limits and Safeguards
- Import processing is capped at 5,000 bookmarks per operation.
- Invalid rows are skipped during validation.
- Timestamps must be finite and within supported range.
- Unsafe IDs are rejected when ID preservation is enabled.
Troubleshooting
| Issue | What to check |
|---|---|
| Import file rejected | Confirm extension is .json or .csv and file size is between 10 bytes and 50 MB |
| CSV import fails | Ensure required columns id,title,filepath exist and delimiter is comma |
| Duplicates not merged as expected | merge mode only merges tag arrays; it does not merge title/description/timestamp |
| Export options seem ignored | Current backend export only uses format (json or csv) |