vimeo2bunny
v1.0.6
Published
CLI tool to migrate videos from Vimeo to bunny.net Stream
Maintainers
Readme
vimeo2bunny
Migrate videos from Vimeo to bunny.net Stream. Videos transfer directly from Vimeo to bunny.net via URL fetch — nothing is downloaded to your machine.
Quick Start
# Run directly (no install needed)
npx vimeo2bunny config
npx vimeo2bunny migrateInstallation
npx (recommended — zero install)
Just prefix any command with npx:
npx vimeo2bunny <command>npm global install
npm install -g vimeo2bunny
vimeo2bunny <command>From source
git clone https://github.com/BunnyWay/vimeo2bunny.git
cd vimeo2bunny
npm install
npm run build
npm link # makes `vimeo2bunny` available globallySetup
You need API credentials from both Vimeo and bunny.net.
1. Get your Vimeo access token
- Go to the Vimeo Developer Portal and log in
- Click Create an app (or select an existing one)
- Enter any app name — avoid including "Vimeo" in the name as it will be rejected
- Add a brief description (e.g. "Video migration tool")
- Select No for "Will people besides you be able to access your app?"
- Accept the terms and click Create App
- On your new app's page, go to the Authentication section in the left sidebar
- Under Generate an access token, select Authenticated (you) and check these scopes:
- Public (required, pre-selected)
- Private
- Video Files
- Click Generate — your personal access token will appear under Personal Access Tokens
- Copy the token immediately; you won't be able to see it again
Note: The Video Files scope requires a paid Vimeo plan (Standard or above). Without it, the tool cannot access download links.
2. Get your bunny.net Stream credentials
- Log in to bunny.net
- Open your Stream library → API section
- Copy the Library ID and Library API Key
This uses the library-specific API key, not the account-level key.
3. Configure the CLI
vimeo2bunny configYou'll be prompted for your Vimeo token, bunny.net Library ID, and bunny.net API key.
Alternatively, set environment variables (or use a .env file):
export VIMEO_ACCESS_TOKEN=your_token
export BUNNY_LIBRARY_ID=your_library_id
export BUNNY_LIBRARY_API_KEY=your_api_keyUsage
List your Vimeo content
vimeo2bunny list # everything
vimeo2bunny list --folders # folders only
vimeo2bunny list --videos # videos onlyMigrate videos
# Preview what will happen (no changes made)
vimeo2bunny migrate --dry-run
# Run the migration
vimeo2bunny migrate
# Migrate a specific folder
vimeo2bunny migrate --folder <vimeo-folder-id>
# Adjust parallel transfers (default: 3, max: 20)
vimeo2bunny migrate --concurrency 5
# Resume an interrupted migration
vimeo2bunny migrate --resumeCheck migration status
vimeo2bunny statusHow It Works
- Discover — Fetches all videos and folders from your Vimeo account
- Map folders — Creates bunny.net collections matching your Vimeo folder structure
- Transfer — For each video, gets a download URL from Vimeo and sends it to bunny.net's fetch endpoint. bunny.net downloads directly from Vimeo.
- Metadata — Copies title, description, and tags to the bunny.net video
- Track — Saves progress to
~/.vimeo2bunny/migration-state.jsonso migrations can be resumed
What gets migrated
| Vimeo | bunny.net | Notes |
|-------|-------|-------|
| name | title | Direct mapping |
| description | metaTags[description] | Stored as meta tag |
| tags | metaTags[keywords] | Comma-separated |
| Folder | Collection | Folder → Collection |
Troubleshooting
"No download link available" — Your Vimeo plan must be Standard or above to access download links.
"URL expired" — Vimeo download URLs expire after 24 hours. The tool fetches fresh URLs, but very long pauses may require restarting.
"Rate limited" — Handled automatically with exponential backoff. No action needed.
Your Responsibilities
By using this tool, you acknowledge and agree that:
- You are migrating your own content. You must not use this tool to access, download, or transfer content you do not own or have permission to use, or to circumvent Vimeo's terms or technical restrictions.
- You are responsible for compliance with Vimeo's terms. You are using your own Vimeo credentials and acting on your own behalf. To the fullest extent permitted by law, bunny.net shall not be liable for any indirect or consequential damages, loss of data, loss of business, or any actions taken by Vimeo or other third parties as a result of your use of this tool.
- You are solely responsible for how you use this tool and for ensuring that your use does not violate any third-party terms or laws.
bunny.net provides this tool for convenience only and makes no representations regarding its compatibility with Vimeo's terms of service, which may change at any time. bunny.net assumes no liability for any consequences arising from your use or misuse of this tool, including but not limited to account suspension or termination by Vimeo.
If you are unsure whether your use case complies with Vimeo's terms, consult Vimeo's documentation or seek legal advice before proceeding.
Legal Notice
This tool is provided as-is under the MIT License. It is not affiliated with, endorsed by, or sponsored by Vimeo, Inc. "Vimeo" is a registered trademark of Vimeo, Inc. Use of the name is purely descriptive.
License
MIT — see LICENSE
