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

massfetch

v1.0.0

Published

Bulk video and image downloader with a local web interface. Load CSV, JSON or TXT files of links and download YouTube, Facebook and image links in one go.

Readme

massfetch

npm version GitHub stars License: MIT Organization

Bulk video and image downloader with a clean local web interface that runs privately on your computer.

Load CSV, JSON, or plain TXT files containing links. MassFetch automatically downloads every YouTube video, Facebook video/reel, and direct image in parallel, sorts them into organized folders, and produces a complete audit report.

⭐ Give us a Star on GitHub • 📦 Available on npm • 🏢 cc byApolloWorks


MassFetch Web Interface


Highlights

  • Multi-Format Ingestion: Drag and drop .csv, .json, or .txt files. Automatically detects delimiters (comma, tab, semicolon, pipe) and handles multiple file encodings (UTF-8, CP1252, Latin-1).
  • Smart Link Detection: Automatically scans headers (link, url, video, image, etc.) to find target URLs without manual configuration.
  • Universal Media Engines:
    • YouTube: Videos, Shorts, and playlists downloaded via yt-dlp.
    • Facebook: Public posts, videos, and reels with automatic source extraction fallback (no login or cookies needed).
    • Images: High-speed parallel HTTP downloading for JPG, PNG, WebP, GIF, SVG, BMP, and TIFF.
  • Parallel Downloading: Multi-threaded download engine with in-app concurrency control (1 to 16 simultaneous streams).
  • Auto-Sorting & Reports: Automatically categorizes finished files into YouTube/, Facebook/, and Images/ folders, generating a timestamped download_report_<datetime>.csv summary.
  • Visual Folder Navigator: Pick local destination folders directly within the interface using an interactive directory browser.
  • Zero-Config Setup: Automatically detects Python 3.9+ and provisions a private, isolated virtual environment without touching your system Python packages.
  • 1-Click Desktop Launcher: Optional native launcher creation for macOS (MassFetch.app), Windows (Desktop & Start Menu shortcuts), and Linux (.desktop entries).
  • Local & Secure: Binds strictly to 127.0.0.1 with DNS-rebinding protection. Your links and files never leave your computer.

Requirements

  • Node.js 16 or newer
  • Python 3.9 or newer
  • ffmpeg (optional, recommended for best quality video and audio merging)

Installing ffmpeg (optional)

| System | Command | | ------- | ------------------------- | | Mac | brew install ffmpeg | | Windows | winget install ffmpeg | | Linux | sudo apt install ffmpeg |

Without ffmpeg, videos download with audio at standard resolution.

Installation

Install globally via npm:

npm install -g massfetch

Quick Start

  1. Start the application:
    massfetch
  2. Your browser opens http://127.0.0.1:5757. The first run builds the private Python environment in under a minute; subsequent runs start instantly.
  3. Drop your .csv, .json, or .txt files into the Sources panel.
  4. Verify or adjust the detected Link column and choose an Output folder.
  5. Click Start download.
  6. When complete, click Open output folder to view your sorted downloads and report.

To exit, return to your terminal and press Ctrl+C.

Desktop Launcher

Create desktop and application menu shortcuts for one-click access:

massfetch --install-launcher

To remove them:

massfetch --uninstall-launcher

Supported File Formats

1. Plain Text (.txt)

One link per line. Comments (starting with # or //) and blank lines are automatically ignored:

# YouTube links
https://www.youtube.com/watch?v=dQw4w9WgXcQ
https://youtu.be/kJQP7kiw5Fk

# Facebook & Images
https://www.facebook.com/reel/123456789
https://example.com/photo.jpg

2. CSV (.csv)

Comma, tab, or semicolon separated with a header row:

title,link
First video,https://www.youtube.com/watch?v=abc123
Second video,https://www.facebook.com/reel/123456
Photo,https://example.com/photo.jpg

3. JSON (.json)

A top-level list of objects or an object containing a list:

[
  { "title": "First video", "link": "https://youtu.be/abc123" },
  { "title": "Photo", "link": "https://example.com/photo.jpg" }
]

Command Line Options

| Command | Description | | -------------------------------- | ------------------------------------------------- | | massfetch | Start the server and open your browser | | massfetch --port <number> | Run on a custom port (default: 5757) | | massfetch --no-open | Start server without launching the browser | | massfetch --update | Update yt-dlp to latest release, then start | | massfetch --doctor | Diagnostics check for Node, Python, and ffmpeg | | massfetch --reset | Rebuild the isolated Python virtual environment | | massfetch --install-launcher | Create desktop and app menu shortcuts | | massfetch --uninstall-launcher | Remove shortcuts and desktop entries | | massfetch -v, --version | Print version | | massfetch -h, --help | Display help information |

Troubleshooting

  • Downloads fail or video sites changed: Run massfetch --update. Media extractors update frequently.
  • Private posts: Facebook videos must be public; MassFetch does not require or store user credentials.
  • Custom Python executable: Set the MASSFETCH_PYTHON environment variable to your Python binary path if it is not found automatically.
  • Linux venv creation: Ensure python3-venv is installed: sudo apt install python3-venv.
  • System checks: Run massfetch --doctor to verify your environment status.

Project Structure

bin/massfetch.js      Node.js CLI runner (manages Python venv & lifecycle)
lib/python.js         Python discovery and automated virtualenv setup
lib/launcher.js       Native desktop shortcut installer (macOS, Windows, Linux)
python/core.py        Parallel download engine (yt-dlp, requests, classifier)
python/server.py      Lightweight Flask server & JSON API (localhost only)
python/static/        Frontend interface (HTML5, Vanilla CSS, Vanilla JS, SVG)

License

MIT • Copyright (c) 2026 byApolloWorks, Jollibe Dablo. See LICENSE.