npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

vimeo2bunny

v1.0.6

Published

CLI tool to migrate videos from Vimeo to bunny.net Stream

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 migrate

Installation

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 globally

Setup

You need API credentials from both Vimeo and bunny.net.

1. Get your Vimeo access token

  1. Go to the Vimeo Developer Portal and log in
  2. 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
  3. On your new app's page, go to the Authentication section in the left sidebar
  4. Under Generate an access token, select Authenticated (you) and check these scopes:
    • Public (required, pre-selected)
    • Private
    • Video Files
  5. Click Generate — your personal access token will appear under Personal Access Tokens
  6. 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

  1. Log in to bunny.net
  2. Open your Stream library → API section
  3. 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 config

You'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_key

Usage

List your Vimeo content

vimeo2bunny list             # everything
vimeo2bunny list --folders   # folders only
vimeo2bunny list --videos    # videos only

Migrate 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 --resume

Check migration status

vimeo2bunny status

How It Works

  1. Discover — Fetches all videos and folders from your Vimeo account
  2. Map folders — Creates bunny.net collections matching your Vimeo folder structure
  3. 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.
  4. Metadata — Copies title, description, and tags to the bunny.net video
  5. Track — Saves progress to ~/.vimeo2bunny/migration-state.json so 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