Reference
Bulk Import Reference
Reference
Bulk Import Reference
This page documents how bulk import works in Capacities, what content it supports, which limits apply, and which error states users may see.
Overview
Bulk import is the import flow for bringing larger sets of content into Capacities. You need to use the desktop app for bulk import.
Capacities analyzes your content and attempts to map imported content to existing object types. In general, cleaner source files and clearer structure lead to better results.
A few steps are needed first. Set up your object types and clean up your source content before you start. If you are moving from a specific note-taking app, follow the dedicated migration guide where available.
When to Use Bulk Import
Use bulk import when you want to:
- import many Markdown, CSV, or media files at once
- import folders or ZIP archives
- apply the same marker to a whole import job
- review object mapping before anything is created
Supported Input
Bulk import accepts the following file categories:
| Category | Supported content |
|---|---|
| Documents | Markdown (.md, .markdown, .mkd), CSV (.csv) |
| Archives | ZIP (.zip) |
| Media | Images (.png, .jpg, .jpeg, .gif, .svg, .webp), audio (.mp3, .ogg, .wav, .m4a, .oga), PDF (.pdf) |
Unsupported files are skipped. If no supported files remain after filtering, the import fails.
Non-standard formatting is not supported, such as converting content created or modified by Obsidian plugins.
Before You Import: Sanitize Your Content and Prepare Types
Bulk import works best when you treat preparation as a separate step.
1. Review and sanitize your source content
Before importing, clean up what you plan to bring in:
- remove content you do not actually need right now
- split very mixed folders into clearer groups, e.g., Books, Projects, People
- reduce unnecessary formatting from source tools
- verify frontmatter and property names for consistency
This helps keep your space focused and improves mapping quality during import.
2. Decide your target object types first
Capacities is structured around object types (for example, books, projects, meetings), so define those first before starting the importer.
A practical approach is:
- review your source notes and identify the main "noun" groups
- create or confirm matching object types in the destination space
- organize files/folders so they map cleanly to those types
If object types are ready in advance, type detection is much more reliable.
3. Import in smaller batches first
For larger migrations, run a small test batch first, confirm mapping and output quality, then continue in larger batches.
Workflow
Open Settings > Import Content. In Migration guides, open the guide for your source app if you need help preparing your files. When your content is ready, click Start importing in the Bulk import section.
You can also start from an object type: open the three-dot menu (...), click Import, and upload files from there.
1. Select what you want to import
Start by choosing the kind of content you want to bring into Capacities. This helps Capacities show the most relevant options in later steps.
We highly recommend a pre-processing step. The cleaner the data is, the better the result in Capacities.
2. Upload your files or folders
Click the three-dot menu (...) for the object type you'd like to import into and click Import, or go to Settings > Import Content and click Start importing.
You can upload:
- individual files
- a folder
- ZIP archives
Capacities analyzes all supported files it finds in the selected content.
3. Configure import preferences
Depending on the uploaded content, you may see only a subset of the following options.
Fallback object type
Choose the object type your notes should be imported into by default.
If a Markdown file contains a type property in the frontmatter properties that matches one of your existing object types, Capacities may use that type instead of the default one. You can also force the default object type, in which case type detection from content and folders is ignored.
In this step, you cannot select media object types (image, audio, pdf, or file) as the fallback object type. The tweet object type is also not selectable.
Marker
To keep imported content easy to find, you can apply a marker to everything created in the import job.
Available options:
- Block: adds a text block to imported notes
- Tag: adds the selected tag to every imported object
If you prefer, you can also assign imported objects to a collection in the review step.
Tool-based preset
If you are importing from another note-taking tool, you can choose a preset that applies mapping defaults suited to that source.
Folder handling
If you import notes from a folder structure, you can decide how Capacities should handle that structure:
- Ignore: imports the files without keeping folder information
- Block: adds the folder path as text to the imported note
- Tag: turns the folder path into a tag
If your parent folders match your object type names, you can also enable Extract types from folder names. Capacities checks both singular and plural matches when attempting to infer object types from folders.
4. Review and adjust
Before import starts, Capacities shows you what it plans to create.
This is the most important step to review carefully. If the overview looks wrong, do not continue. It is much easier to correct issues here than after import.
At this stage, you can:
- assign imported objects of a type to a collection
- review and adjust property mappings
Once you confirm the import, Capacities processes the content locally and then syncs created objects and uploaded media as needed.
Do not close the app until the import has completed.
Data Rules
Markdown and CSV mapping
Markdown files and CSV files can be turned into Capacities objects.
CSV columns and Markdown frontmatter properties are matched to Capacities properties. For best results, name them the same as the target properties in Capacities.
Special fields include:
type: maps to an object type and can override the selected default object typetitle: maps to the object title. Also matchesheadingandnamedescription: maps to the description property, if presenttags: adds comma-separated object tagscreatedAt: can be used to suggest a creation date. Also matchescreated. Without this, the modification date of the uploaded file is used.collection: if all objects of the same type mention the same collection, each object will be added to a collection of that name in Capacities. For example, if you have several book Markdown files with acollectionproperty, book objects will be created, with a collection of the same name. Collections are not supported across multiple types.
Supported property mappings
In the mapping step, the following source-to-target mappings are currently supported:
text->texttext->blockstext->numbertext->booleantext->urltext->entitytext->labeltext->icontext->object selecttext->dates
Type matching can use:
- the
typeproperty in content - folder names, if folder-based type extraction is enabled
- the selected default object type as a fallback
If you force the default object type, type detection from properties and folders is ignored.
For dates, Capacities tries to preserve date information when it is available in content or file metadata.
In the case of daily notes, if Daily Notes > Identify by filename is enabled, the importer will try to parse the filename as a date and if it succeeds, it will create a daily note.
Linking behavior
In Markdown notes, you can link to:
- notes included in the same import
- existing notes already in your Capacities space
The importer will try to find an object using title search.
Supported linking methods include:
- wikilinks such as
[[Page Name]] - relative file links such as
[Louvre museum](./museums/louvre.md) - absolute import-root links such as
[Louvre museum](/history/museums/louvre.md)
If a matching note is found in the current import, Capacities links to that note. Otherwise, it tries to resolve the reference against existing content in your space.
During property mapping, two-way linked properties on both sides of a link are kept in sync when the importer creates or resolves object links.
Unsupported link syntaxes may not resolve during import. The next best link option will be chosen. For example, links like ./document.pdf#Page=3 are ignored and resolved to ./document.pdf.
Embedded media in Markdown
If you embed an image in Markdown, for example , Capacities creates an image object and embeds it in the imported note.
Image paths follow the same relative and absolute path rules as Markdown links.
This works for other media types too.
Limits
Bulk import includes safeguards to keep imports reliable and performant. Limits apply at multiple stages, including selection, extraction, analysis, and import.
Object limits
- Imports with more than 20 objects show additional review guidance
- Imports with more than 50 objects require explicit confirmation before proceeding
Cumulative user limit
- Each user has a cumulative cap of 20,000 bulk-imported objects
File limits
| Limit | Value |
|---|---|
| Total size per import | 10 GB |
| Single file size | 100 MB |
| Total file count per import | 100 files |
Notes:
- total size is checked before and after ZIP extraction
- a ZIP under 10 GB can still fail if its extracted contents exceed 10 GB
- individual files over 100 MB are excluded during processing
- unsupported files are skipped during filtering
- the whole import fails if the remaining supported/importable files still exceed the total size or file-count limits
Local storage requirements
Bulk import relies on local processing and temporary local storage. If your device does not have enough available storage, the import can fail before or during processing.
Content length
- Imported property text is capped at 524,288 characters per property
- Longer values are truncated
Daily note constraints
When imported content is resolved as daily notes:
- only one daily note per day is allowed
- if a daily note already exists for a day, additional candidates for that day are skipped
- if multiple files in the same import resolve to the same day, only one is created and duplicates are skipped
Error Reference
Although the import pipeline is designed to be as robust and stable as possible, occasional errors can still occur:
Access Denied
This error occurs if you do not have permission to use the bulk import feature.
Possible reasons include:
- you are not currently logged in
Ensure that you are logged in. Bulk import is available to all users on the desktop app.
No Files to Import
This error occurs if no importable files were detected.
Possible reasons include:
- no files were selected
- all selected files were filtered out because their formats are unsupported
- a ZIP archive contained no supported files after extraction
Ensure that your import contains supported files and that ZIP archives are not empty.
Too Many Files
This error occurs if the number of remaining importable files exceeds the allowed limit after filtering and extraction.
Maximum File Size Exceeded
This error occurs if the total size of selected or remaining importable files exceeds the allowed limit.
The current total size limit is 10 GB per import run.
If needed, split your import into smaller batches.
Not Enough Storage
This error occurs if your device does not have enough available local storage for temporary import processing.
Possible reasons include:
- insufficient free storage on your device
- insufficient browser or app storage quota for temporary processing
Free up storage space on your device and then try the import again.
Writing Failed
This error occurs if imported files could not be written to local temporary storage before processing.
Possible reasons include:
- insufficient local storage
- a temporary failure while writing files locally
Try again after freeing local storage and reloading the app if necessary.
Extraction Failed
This error occurs if a ZIP archive could not be extracted.
Possible reasons include:
- the ZIP file is corrupted
- the ZIP file uses a format that cannot be processed correctly
- extraction was interrupted
If possible, open the ZIP file locally to verify that it extracts correctly, then try the import again.
Processing Failed
This error occurs if local import processing could not be completed successfully.
Possible reasons include:
- uploaded files could not be parsed correctly
- the configured import setup was not valid for the selected content
- an internal processing step failed unexpectedly
If this happens, verify that the files are valid and try the import again.
Too Many Objects (Global)
This error occurs if the import would exceed the cumulative per-user bulk import limit of 20,000 objects.
Space Not Found
This error occurs if the current space could not be resolved during import processing.
Try reloading the app and starting the import again from the correct space.
Import Fallback Type Unavailable
This error occurs if the fallback object type selected for the import is no longer available when processing starts.
Possible reasons include:
- the selected default or fallback object type was deleted
- the object type is not available in the current space
- the import setup refers to an outdated object type configuration
Open the import again, choose an available object type, and review the mapping before continuing.
Uploading Failed
This error occurs in import flows that require uploading files to complete processing.
Possible reasons include:
- an unstable internet connection
- blocked access to required storage or processing services
If your connection blocks required services, some media-related import flows may fail even when non-media content can still be processed locally.
Applying Import Failed
This error occurs if imported content was read successfully but could not be applied to the target object.
If this happens, check whether the source content is malformed or contains unsupported structures.
Daily Note Already Exists
This error occurs when an imported file would create a daily note for a date that already has a daily note in your space.
Only one daily note can exist per day, so the duplicate candidate is skipped. You can copy and paste the content into the existing daily note.
Duplicate Daily Note
This error occurs when multiple files in the same import run resolve to the same daily note date.
Only one daily note for that date is created. The other candidates for that date are skipped.
Miscellaneous Error
This error occurs when an unexpected error does not fall into one of the more specific categories above.
If the issue persists, try again after reloading the app.
Recommendations
- import only the content you really need
- clean up notes, properties, and folder structures before importing
- create the object types you want to use before starting the import
- split large imports into smaller batches
- keep individual files under 100 MB
- review the mapping step carefully before confirming the import
FAQs
- How can I import an Excel file into an object type or collection?
Export the spreadsheet to CSV first. Then import the CSV into the relevant object type or collection. - How can I upload several images into a collection or apply the same tag to all of them?
Use bulk import. In the import flow, add a marker in the preferences step or assign the imported objects to a collection in the review step. - Can I use the import tool to move content between Capacities spaces?
There is no dedicated space-to-space migration flow. In some cases, you can export Markdown and media from one space and import them into another, but the import tool is not designed as a lossless space migration tool. - Why is my imported content not showing in "Created Today"?
Imported content may keep or derive date information from the source content or file metadata. As a result, imported objects may appear under an earlier date instead of today. - Does bulk import always work fully offline?
Not in every case. Everything runs locally, but media will not be uploaded until you have an active internet connection. Without upload, media will not sync across your devices. Import first, then ensure you are online so content can upload and sync. - Can firewall, VPN, or regional network restrictions affect imports?
Yes. If your connection blocks required services, some import flows can fail. Media-related import flows are the most likely to be affected. - Which property mappings are currently supported in bulk import?
In the mapping step, the currently supported mappings are:text->text,blocks,number,boolean,url,entity,label,icon,object select, anddates. - Can I map non-text source values directly to properties?
No, current mapping support is based ontextsource values mapped to supported Capacities property types. - Why can't I select image, audio, PDF, file, or tweet as fallback object type?
These object types are not available as fallback object types in bulk import. Please select a supported non-media object type instead. - How do I improve Weblink detection?
For bookmark/weblink mapping, you can help type detection by either:- setting the
typeproperty in the Markdown file toWeblink, or - placing relevant files in a folder named
Weblink
We recommend testing a small batch first, then adjusting mapping before importing a full archive. - setting the
- What date formats are accepted?
We support ISO strings, Unix epoch time, and natural-language dates. - Why are my images from Obsidian not imported with the size dimensions?
This is not supported in Capacities.
Ask a question! - The Docs Assistant knows everything about the documentation, and the ideas and feature requests from other users.
Create a ticket on our feedback board. - Let us know if you have an idea for a feature, improvement or think there is something missing.
Request additions to the documentation. - If your questions are not getting answered, let us know and we will extend the documentation.