How to move lot of items into an existing collection?

I imported 2000 plus items from another password manager tool to bitwarden. Although I can move one item at a time to an existing collection, I do not see how I can move them all to an existing collection at the same time.

1 Like

Hi @tony.o , welcome to community! :wave:

The easiest way to do this is in the web vault - from the My vault view you’ll be able to multi-select and move all the items selected to the Collection(s) of your choice!

Just keep in mind that all of the items selected need to be move to the same Collection(s), but you can use the same feature again to move the rest of your items elsewhere.

When I do this I get this message:
“You have selected 2 item(s). 0 item(s) can be moved to an organization, 2 cannot.”
It seems that I can move items from “My Vault” to one of the company’s collections but I cannot move from one collection to another. Am I doing this right?

@tony.o if the item already belongs to an Organization then you should be able to see and edit which Collections that item is in with the use of the vertical ellipses ⋮ Options button.

2023-04-25_15h39_43 2023-04-25_15h39_58

Hey @tony.o you can currently bulk select and move from your individual vault to the organization, but not between existing collections in the organization.

The team is working on upcoming changes to resolve this issue, stay tuned!


Is this already implemented, and maybe just broken? I’m trying to move items from a collection into a subcollection (cleanup an unweildly large collection). I see there’s select tickboxes, and there’s nothing those boxes could possibly apply to other than the overflow menu items to the right of individual items. Am I right to assume that I should be able to select items a, b, c, select overflow from c and move to a collection, that all three of the items should make the move?

If so, that’s not what happens right now :expressionless: If not: what is that select/tickbox for then?

1 Like

We really need the ability to bulk-move items between collections in the organization. Without it, hundreds of items get stuck in the Unassigned collection whenever you try to reorganize your vault. What a pain.


I want to add my ‘vote’ for this to be implemented. I find myself with a few hundred items in “Unassigned” that I want to move to an organization. If I select multiple items, then the only option the group-select menu offers is “Delete selected”.
(When I select a single item, then the menu for that item includes several options, including “Collections”, in addition to “Delete”.)

Maybe there’s an architectural reason why multiple items can’t be moved to a collection in a single operation. But if there’s a way to do it, I think future generations of users would appreciate it.


Here is how I got around this issue using the bitwarden cli and jq. This works on mac/linux.

I want to move all items into a new collection that are in another collection (and are in that collection only) and that match my search criteria.

bw list items --collectionid=d7dbf3f3-c1f7-4945-af6e-b10401451bd4 --search "my search" \
  | jq -r 'map(select(.collectionIds==["d7dbf3f3-c1f7-4945-af6e-b10401451bd4"]) | .id).[]' \
  | xargs -I% bw edit item-collections % $(echo '["2a62d2b5-4814-477f-ab49-b10701515bae"]' | bw encode) \
  | tee /tmp/ | jq '.id'

The last line suppresses the passwords from being printed on screen; just the ids.

This took a pair of minutes to bulk move a few hundred items.

To do a dry-run: change “bw edit” to “echo bw edit”.

Line by Line Explanation

bw list items --collectionid=d7dbf3f3-c1f7-4945-af6e-b10401451bd4 --search "my search"

Grab all the items in the original collection that match my search

jq -r 'map(select(...) | .id).[]'

Take all the json array of items, apply a filter over it and print out only the ids.

  • select(...)
    • applies the filter, ignoring everything else that doesn’t match the criteria
  • map(... | .id)
    • selects only the id of the item
  • .[]
    • moves the items out of an array into a stream
  • -r
    • strips the quotes from the ids

This is the core filter. I only want those items that are in only this filter

echo '["2a62d2b5-4814-477f-ab49-b10701515bae"]' | bw encode

This is the new collection I want the item to be in, base64 encoded as required for bw edit (next)

xargs -I% bw edit item-collections % $(...)

For each id from the above filter, edit its item collection to be that encoded above.

  • xargs -I% ... % ...
  • Each id will be plopped in the command where the % is. I find this the easiest way to work with xargs
  • bw edit item_collections <id> <update>
  • make the change!
  • $(echo ... | bw encode)
  • This is wrapped in shell execution because bw edit needs the result as part of its parameters.
tee /tmp/ | jq '.id'

I don’t like my passwords being printed to the screen.

  • tee
    • dumps the results in a file
  • jq '.id'
    • selects only the id and prints it