Use the qdrant subcommand to copy a collection from one Qdrant instance to another or copy data between collections within the same instance.
If the target collection does not exist, the tool automatically creates it using the source collection’s configuration (vector config, HNSW settings, quantization, sharding). To change the target collection’s configuration, create the target collection manually before running the migration.
What You Need
Source Qdrant URL — gRPC endpoint of the source instance
Target Qdrant URL — gRPC endpoint of the target instance
Source collection name
Target collection name (must be different from source if using the same instance)
API keys — for each instance, if authentication is enabled
Concept Mapping
Source Qdrant
Target Qdrant
Notes
Collection
Collection
Recreated with exact schema
Named vectors
Named vectors
All vector types preserved
Sparse vectors
Sparse vectors
Direct mapping
Payload
Payload
Direct mapping
Payload indexes
Payload indexes
Recreated if --target.ensure-payload-indexes is true
Maximum gRPC message size in bytes (default: 33554432 = 32 MB)
All Target Flags
Flag
Required
Description
--target.collection
Yes
Target collection name
--target.url
No
Target gRPC URL (default: http://localhost:6334)
--target.api-key
No
API key for the target instance
--target.ensure-payload-indexes
No
Recreate payload indexes from source (default: true)
Parallel Worker Option
Flag
Default
Description
--migration.num-workers
Number of CPU cores
Number of parallel workers for migration
Gotchas
Source and target must differ: You cannot migrate a collection to itself.
Parallel workers and resume: Migration progress is tracked per worker. If you change --migration.num-workers between runs, the saved offsets are invalidated and the migration restarts from scratch. Use --migration.restart explicitly if you intentionally want to change the worker count.
Large messages: If you encounter gRPC message size errors, increase --source.max-message-size.
Existing target collection: If the target collection already exists, the tool uses it as-is without modifying the schema.