Reference
Bulk Import is available in early access for Capacities Believers.
This page documents how bulk import works in Capacities, what content it supports, which limits apply, and which error states users may see.
Bulk import is the import flow for bringing larger sets of content into Capacities.
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.
Bulk import is not a one-click migration tool.
If you are moving from a specific note-taking app, follow the dedicated migration guide where available. That usually leads to more predictable results.
Use bulk import when you want to:
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.
Bulk import works best when you treat preparation as a separate step.
Before importing, clean up what you plan to bring in:
This helps keep your space focused and improves mapping quality during import.
Capacities is structured around object types (for example, books, projects, meetings), so define those first before starting the importer.
A practical approach is:
If object types are ready in advance, type detection is much more reliable.
For larger migrations, run a small test batch first, confirm mapping and output quality, then continue in larger batches.
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.
Click on the three dots for the object type you'd like to import into and click Import or click Migrate from another tool in the settings. Note there is still a 100 item limit for either option.
You can upload:
Capacities analyzes all supported files it finds in the selected content.
Depending on the uploaded content, you may see only a subset of the following options.
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.
To keep imported content easy to find, you can apply a marker to everything created in the import job.
Available options:
If you prefer, you can also assign imported objects to a collection in the review step.
If you are importing from another note-taking tool, you can choose a preset that applies mapping defaults suited to that source.
If you import notes from a folder structure, you can decide how Capacities should handle that structure:
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.
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:
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.
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 matches heading and namedescription: maps to the description property, if presenttags: adds comma-separated object tagscreatedAt: can be used to suggest a creation date. Also matches created. 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 md files with a collection property, book objects will be created, with a collection of the same name. Collections are not supported across multiple types.In the mapping step, the following source-to-target mappings are currently supported:
text -> texttext -> blockstext -> numbertext -> booleantext -> urltext -> entitytext -> labeltext -> icontext -> object selecttext -> datesType matching can use:
type property in contentIf 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.
In Markdown notes, you can link to:
The importer will try to find an object using title search.
Supported linking methods include:
[[Page Name]][Louvre museum](./museums/louvre.md)[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.
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.
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.
Bulk import includes safeguards to keep imports reliable and performant. Limits apply at multiple stages, including selection, extraction, analysis, and import.
If analysis predicts more than 100 objects, the import cannot continue in one run.
| Limit | Value |
|---|---|
| Total size per import | 10 GB |
| Single file size | 100 MB |
| Total file count per import | 100 files |
Notes:
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.
When imported content is resolved as daily notes:
Although the import pipeline is designed to be as robust and stable as possible, occasional errors can still occur:
This error occurs if you do not have permission to use the bulk import feature.
Possible reasons include:
Ensure that you are logged in and that bulk import is available on your plan.
This error occurs if no importable files were detected.
Possible reasons include:
Ensure that your import contains supported files and that ZIP archives are not empty.
This error occurs if the number of remaining importable files exceeds the allowed limit after filtering and extraction.
The current bulk import limit is 200 files per run.
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.
This error occurs if your device does not have enough available local storage for temporary import processing.
Possible reasons include:
Free up storage space on your device and then try the import again.
This error occurs if imported files could not be written to local temporary storage before processing.
Possible reasons include:
Try again after freeing local storage and reloading the app if necessary.
This error occurs if a ZIP archive could not be extracted.
Possible reasons include:
If possible, open the ZIP file locally to verify that it extracts correctly, then try the import again.
This error occurs if local import processing could not be completed successfully.
Possible reasons include:
If this happens, verify that the files are valid and try the import again.
This error occurs if the import would create more than 100 objects in a single run.
Split the import into smaller batches and try again.
This error occurs if the import would exceed the cumulative per-user bulk import limit of 20,000 objects.
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.
This error occurs if the fallback object type selected for the import is no longer available when processing starts.
Possible reasons include:
Open the import again, choose an available object type, and review the mapping before continuing.
This error occurs in import flows that require uploading files to complete processing.
Possible reasons include:
If your connection blocks required services, some media-related import flows may fail even when non-media content can still be processed locally.
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.
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.
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.
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.
text -> text, blocks, number, boolean, url, entity, label, icon, object select, and dates.text source values mapped to supported Capacities property types.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.